How often have you though that you could quickly add a new feature to your system? If you ask me, the answer is many times.
How often did it turn out to be quick? For me, none so far.
Adding a new feature quickly implies the following assumptions:
- You know exactly what you want the actual requirement is
- You know exactly what needs to be done
- You know exactly how this will impact the rest of the system
Most of the time at least one of these assumptions are wrong, more than often two or even three. This means a job that you thought would take a day turns into a week or even two.
Another seriously delaying factor is the dreaded scope creep. Often business wants more once they see what you have done. This can be managed, but what is far harder to control is the internal force that drives the top developers. We always want to over deliver, which means we keep adding more and more as we code, causing our own scope creep.
My rules to manage this is simple:
- Rule 1. Write down exactly what you want to accomplish
- Rule 2. Write down exactly how you are going to accomplish it
- Rule 3. Stick to the two rules above, no matter what
If you decide halfway along that it would be a good idea to add X, Y or Z features, don’t. Resist all temptation. Refer to the rules above if confused. Only once your new feature is done can you consider doing more, but now you can step back and consider the bigger picture before you dive back into the code.