
It’s the classic question, should you find time to do something or make time to do something.
It’s so easy to work on the things that need doing right now, and not have time to do the things that don’t need to be done now, but if you don’t do them, they’ll never get done. One such task is cleaning up documentation for a project. It’s so easy to say you will do it after you complete the feature, but feature complete is followed by QA finding bugs for you, and before you know where you are at, PMs are asking for planning for the next phase, and you are onto requirements capture and design for the next release. The project you are wrapping up is “done” so why should you tidy up the requirements and design now, isn’t your code self documenting?
I find code really good at capturing what is implemented since it is the implementation. However it is not always the best way of seeing how your code plays into the bigger picture. Now maybe your code is a low level get or set, and so is easy to self document, but what if it’s a major subsystem? Having some nice solid flow diagrams, state diagrams or even paragraphs of text, help those who follow understand what you did. It will even help you in 6 months time when you have to reopen a gnarly can of worms that you thought you had put to bed.
Finding time for that sort of work is never easy. You feel it’s slowing down your progress now, or that it’s superfluous if you do it too late. One lesson I’ve learnt, though it’s hard to follow through and execute is that this can not be left for “found time”, you have to plan this into your schedule and make time for it.