I am not very good at estimating how long a piece of work will take to complete. I am guilty of putting my finger in the air and guessing. Usually things are later than expected, however sometimes they are earlier than expected. For example, a recent individual task was delivered in four months instead of five months. However, I am usually late.
I want to get better at this. If I say something will take four months then I want it to take four months or less and not four and a half months or five months etc.
The next task I am approaching was moved to the top of the project plan within the last week because of external pressures (external to the department). The business area want to know exactly how long it will take to complete. I find it difficult to estimate because of the following reasons:
- The system I develop is very complex. I inherited it a few years ago and the previous developer did not follow good practice e.g. SOLID, separating layers (business layer etc) etc.
- The business requirements are not particularly well understood by the business area because the system is very complex and we have to take into account legislation, which is only guidance and completely open to interpretation.
- We lack the appropriate tools e.g. testing framework, continuous integration etc.
- I am a sole developer so I have no-one to really turn to for guidance or help e.g. with testing etc.
Anyway I have read questions like this: How to respond when you are asked for an estimate? and this: http://msdn.microsoft.com/en-GB/library/hh765979.aspx.
My manager has suggested that I spend one month doing the analysis for the next piece of work (it is complex). I think I could do it in a week (I usually only spend a few days). What should the Agile output of an analysis be? How long do you typically spend of analysis?