
Here’s an interesting question spawned after a discussion with a fellow developer, while discussing the need to use development tools like version control, test suites and methods like TDD/ATDD:
How long do you plan/hope your project to live?
Is it hours, weeks, years, millions of years, maybe more?
a) If the answer is hours, then just go ahead and hack away, since you won’t care about the code in a couple of hours, it does not matter what process/methods and techniques you use when you develop it. If you get the job done, then it’s OK even to write it on a napkin and ask your dog to compile it (if you have a dog, otherwise let your cat run it as interpreted code). A good example in this category is TopCoder algorithm contest problems. When I participate to one of those I don’t really care for writing and tracking detailed requirements (you get them anyhow in the problem statement), writing test suites myself, running a static check, do a peer review of the code or track the changes with a VCS. That would be a total overshoot and probably any of the tasks would actually not fit nicely within the time allocated for the contest.
b) If the answer to the above question is more than hours, then you’re probably building something that requires maintenance, fixing bugs, new features and will require something else than a human’s brain to hold most of the knowledge. And here comes the issue/bug tracking system, requirements and design documents (or specs), documentation, test suites, version control, traceability matrixes, and so on. All these are tools we use in order that we are able to track what’s going on in the project across days/weeks/years (and teammates or parties involved).
One interesting remark here is that many projects start as a) and then becomes a b). Someone hacks an idea in the garage and then people decide to overtake the prototype as production version 1.0 (protoduction).
That’s OK (sort of).
But you have to realize that you’re not a), you’re b) now, a full-blown application that has a desired scope of years or more and will probably have several releases, that you want to be able to handle gracefully, so fire your desired search engine and get some development tools.









