Planning and analyzing is important part for big software projects. However, I’m not particularly fond of doing lot of planning before getting started with actual coding. I rather model something, test how it works and then revise before moving to next thing, than sit down and do lot of planning beforehand (since I’m bound to miss some crucial detail anyway).
This all is probably related to fact that when I’m working on a hobby project, the person who knows domain and goal best is me and I don’t know those things that well. If I knew things I’m coding very well, planning a lot beforehand would make sense. But since it’s usually a hobby project where I don’t have that clear aim, things are a bit different. It’s like I’m the fickle customer who doesn’t know what they want, but knows exactly when they want it.
What does this all have to do with yaks and detours? I often end up working with something that seems very insignificant detail or completely unrelated thing that I originally planned, because I have missed some detail. Recently I wanted to have spaceships in my game and did some preliminary sketching and writing down ideas. Then I started writing part that is used to design those ships and realized that I also need technology tree and way to perform research (which I then implemented). Then I realized that I need way to figure our how many crew members a ship needs and in what positions (and while writing that, I realized that some sort of chain of command is needed too). When I got that in place, I thought that I don’t want to manually create 28 memebers of the crew (completed with stats, names and maybe family trees) that the ship needs, so now I’m working on game master’s interface where they can query the system and add new people there.
For a hobby project such an approach is fine. But for serious, professional endeavour, this method is probably a fasttrack to failure. So good thing that I’m only tinkering with this for fun and maybe some educational value.