Conceptual Points

Today I encountered the finer points of concepts for software development projects once more.

I got an email from the project manager asking me wether 4 days was a good estimate for the project. The number was derived from a previous (very similar) project, the concept of which I had agreed to have recycled for this one. I was a bit shocked at the email because my rough estimate for the project was more. When we first talked about it, I had said 10 days. This differs by even more than the standard developer’s-factor[1].

Now for one it’s cool that we have concepts, project managers and something one might call a “development process”. Part of this process asks for the developer to break up the project into small blocks that will take about 2 hours to complete. Now really that is hard for me. What it does is keep the estimates low. Because you cannot make a block smaller than programming one class, can you? Two hours should be more than enough to write a class that’s just an implementation of a template method pattern[2]. How do you put all the risks and the debugging and the things that just happen into such an estimate? Yes: use the developer’s factor[1]. My question is: how do you explain the factor to your project manager?

I told them the true estimate – which I got up to seven days instead of four by rewriting the concept to include extensive testing[3] – and then I explained that this estimate would only hold, if really nothing went wrong and everything went as expected and that from my experience[4] there will be un-anticipated problems (as always). Now I am curious wether that is a mistake I’ll have to learn from the next time.

fn1. the developer’s factor is the factor a developer should multiply every estimate with to arrive at a time that will barely suffice to complete the task. Usually 2 is a the standard factor.

fn2. oh yes I really took care to use a design pattern there for once!

fn3. I now use unit tests and functional tests officially!

fn4. there’s that word again, which makes and breaks developers in my opinion, not to suggest that I have a lot, but hey …. everyone has to start somewhere.When do I get to level 2? 😉