Designing small software projects
All of the OS software that I’ve built to date has had one developer working on it, me. I’m writing the software so that I can use it, therefore, I know what I need to develop. I usually rough out a design in XMind, which is a open source “mind mapping” tool. XMind’s default mapping style is like a bullet list after a few years in major league baseball (read on steroids).
As I rough out a design, I usually discover things along the way, like I forgot a DB table, the way I was planning to implement something isn’t practical, what APIs I might be using, which language would be the best suited to the task, etc. If I notice task that might be really technically difficult, I might write a proof of concept, to prove that it’s reasonable (meaning that it won’t take a lot longer than planned) to complete the task.
Here’s the basic design for pygcp: