Call me crazy, but I’m of the opinion that all software projects need clearly defined requirements. This includes one-person projects. An aspiring, enterprising developer has just as much need for requirements as a large company implementing a global release.
Now I know what you’re saying. Requirements are a way to communicate the business needs to the development team so that the business gets exactly what they want. What trouble would a single person have communicating business aspects to herself?
In every coding project that I have produced (sans “Hello, world!”), the victory of code compilation and correct output was tainted by inefficiencies in my methods. I could have saved time and avoided ambiguity in every instance if I had just spent a little time modeling my ideas before writing a single line of code.
The problem is magnified when you have a really good idea. If your software takes off and grows beyond your own means, then it’s time for outside help. If you have no documentation, it’s going to be a painful experience for your new team if they have to read through code just to understand the structures and features of your project. Give them visual models and watch as their enthusiasm for the project grows to match your own.
Building software is a lot like building a plane. You wouldn’t wing it while building a plane, and you certainly shouldn’t wing it while building software.