Tuesday, March 26, 2013

Estimation Dilemma!

Estimation itself is a profession. There are many fields which employs expert estimators to accurately predict cost and deliveries. But unfortunately in software industry this is not the case. Reasons are obvious, there are no standards in software industry as in other industry, thus estimation techniques won't match from one company to another or even from one  project to another inside the same company. Since software development techniques, tools and methodologies distributed across vast area, standardization is not anyway going to work. Even worse part of software industry is the fact that at the start we (both customer and developer) have no clear cut idea of what exactly need to be done. That is the reason why majority of the companies work on iterative software process like agile. But for these kinds of project estimation can only be done for iteration and not for the whole project. Even though as developers we may agree and accept that, no business man will want to hear that. Business people always want to know how much it cost even though they are not sure what exactly they want. This is one of the burning question I seek answer in my day to day life as IT professional. So this is how I solved my problem.

First case was to understand where actually the estimation went wrong. For us it was many factors. Following are few of them

  • Bad scoping - Requirements are not properly understood
  • Poor understanding of product or requirement
  • Over confidence
  • Not considering the overhead of design/documentation/review/implementation/support
  • No resource categorization
  • No statistical analysis
  • Poor estimation techniques 
Bad scoping obviously need to be addressed by business analyst or anyone who gather requirement. Who ever plays this role should have a fair understanding of the project/product and should be good communicator. All the requirements should be properly documented and validated through few faces until no clarifications are pending before  sending it to the estimation team. 

Estimation software is tricky and as I see it there are no right or wrong way. If you are an estimator my suggestion is stick to the estimation technique that produce correct results for longer period. To do that obviously you need to have good understanding on available estimation techniques and statistical analysis of estimation data with actual project data. For estimation I would suggest this book. It's wonderful read if you are really suffering from the estimation problems. 

Lastly estimation should be an estimation. It's not exact figure! You cannot give an estimate without a probability. And getting your estimations to continuously hit 80-120% of actual targets are the best estimations. But still there may be odd project that shoots off the tracks. Thus controlling the project through correct project management techniques in mandatory even if you have the best developers in the word. 

Even though we follow a waterfall approach on estimation to be given out to the customer, we do not use it for the internal work planing as it self. After the estimation is done there might be more in depth analysis or changes to scope. So we will re estimate iteration wise with the detailed work breakdown and project planning will happen to match or control the project within the acceptable level of deliverables/etc. This has helped us to get feedback on the original estimation errors and take corrective actions. Also it has enabled us to follow an iterative process even though the original process is waterfall. 

So that is how it works! 

But I have a complaint to lodge with current university curriculum which grossly ignore critical engineering practices like estimations which should be covered at least in brief as it's a core role of any software engineer. Anyway hopefully in future this will be corrected for the betterment of the industry!

Monday, March 25, 2013

And........I am Back! :)


Well.. it's been about 4 years since I last blogged. I have been honestly rather lazy to do it rather than busy or something (Terrible .. i know). Even though blogging has stopped, all the wonderful things in life always kept us alive and interested.

So in coming weeks I though of sharing those wondeful stories one by one.. I also have a great collection of pics that I have gathered but not published. So coming weeks keep an eye on this.. it might be a embarrassing photos of u! ;)