No battle plan survives first contact with the enemy.Helmuth von Moltke the Elder

I do enjoy being reminded that one can try to plan out everything, but until the rubber meets the road, you won’t know where the plan breaks down and where the edge cases are. I begun programming in earnest about 10 days ago, and came across all the little things that I didn’t think would be an issue… which actually were. Some of these include:

  • The Qt framework’s supplied text editor stores text and formatting in a significantly different way than I assumed.
  • Actually diagramming out the classes and tables to store what is essentially a graph inside the SQLite database made me have to completely rethink the model design.

However, the stepping back for the model design has been really helpful to make sure that I actually think about all of the current known use cases, and how they would actually fit into the architecture. It’s help me to separate what is more of a UI/UX concern, and what functionality will need to be actually be in place in the foundation (core) to make it possible.

The other benefit is that there are several libraries and tools that I had written off in the months of research prior because they were GPL (when I was originally planning on having this be a closed source application), that I can again consider. So far it hasn’t changed any of the ultimate decisions, but in doing the research, it’s led me to other possibilities that I hadn’t considered before.

That is to say… planning is good, but implementation can’t wait.

Tags:

Updated: