I have a large and challenging C++ project that I plan to undertake, one that will take maybe 6-18 months to get to the first release. It makes sense if I’m to invest that much of my time into this, that I plan it out in detail first.
But it’s also just me working on it, so the usual morass of waterfall design tools are more likely to be time wasters than time savers. Working in a solo project like I am, what software, if any more advanced than the paper and pencil, would be most helpful to me?
I know this question is somewhat subjective, but I’m counting on the community mechanic of SO to bring the best answers to the top, to get a sort of democratic answer to a question that has no concrete answer that everyone would agree on.
When doing development on my own I try to keep it as simple as possible, while still having some kind of structure to it.
I think that the tools-part of the Joel test catches the most important things:
Then I’d like to add a few of my own:
Even if it’s just you, you definitely want source control. Being able to track down when things changed and how they changed is invaluable in some bug fixing. Investing time in the build environment is usually worth it. You will be building this a lot. I can’t keep track of bugs in my head, an excel sheet will do.
Without that basic structure in place, you can’t do the refactoring when needed. Regardless of how you work with the design, refactoring those parts that didn’t become good the first time is the key to sustaining a good design. If you get used to refactoring, then you won’t have to think too many steps ahead, instead you can do something that works right now and then refactor it when you need to add more functionality.