Estimation skills are very important for any person. What I mean by estimation skills is the basic numbercrunching ability. In the recent months, I have realized (thanks to my work I am involved), that few people take care to understand, develop and use the estimation skills. To make it more concrete, if one were to estimate the time and effort for an IT Project, how does one do it ? There are various standard models available and one of them is cocomo.

#Mode 1  : The basic COCOMO model  computes software development effort (and cost) as a function of program size expressed in estimated lines of code (LOC).
# Model 2 : The Intermediate COCOMO model computes software developement effort as a function of program size and set of “cost divers” that include subjective assessements of product, hardware, personnel, and project attributees.
# Model 3 : The Advanced COCOMO model incorporates all characteristics of the intermediate version with an assessment of the cost driver’s impact on each step (analysis, design, etc.) of the software engineering process.

For example , in the case of Rails , the following are the stats:

Total Physical Source Lines of Code (SLOC)                        = 32,578
Development Effort Estimate, Person-Years (Person-Months)= 7.76 (93.06)
(Basic COCOMO model, Person-Months                             = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                                    = 1.17 (14.00)
(Basic COCOMO model, Months                                       = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 6.65
Total Estimated Cost to Develop                                       = $ 1,047,640
(average salary = $56,286/year, overhead = 2.40).

One needs to know how these numbers work and appreciate them, for they give a good guidance for a person to plan , measure and manage the project at hand. I was always under the impression that a startup has too much of time pressure and these estimation models are the luxuries of cash rich firms..I guess I have begun to realize that it need not be the case always .Rails proves that !