A close up of a cellphone with many colors, image by Sufyan
January 28, 2024
Lessons learned from building the software
Last year, I built Statika, a software to calculate the reaction forces of structures. This medium-sized project was something that I’ve dreamt about back in college, a tool that would help you to alleviate the tedious manual calculation and let you focus on learning the concepts. Throughout the development of Statika, I must admit that I’ve learnt much from the process.
Here are some development points found interesting along the way:
My previous open source project, Pawgenics, was built using JavaScript. As JavaScript allows you to invoke a method without supplying all the arguments, it introduced a subtle bug into the system. After approximately 4 hours of painful debugging, I’ve come to realize that a type safe mechanism was needed to build projects that are more complex than that.
Despite many big open source projects out there choosing to ditch TypeScript, I made the decision to use TypeScript for Statika.
When I started writing Statika, I didn’t write any class diagrams thinking that it would be a small and a quick project that would be done using a few lines of code. But boy, I was wrong. Very, very wrong.
I have always wanted to build an interactive editor for Statika and I underestimated the complexity of building one. I frequently had to conduct major changes on the architecture in order to add the flexibility I desire. After 3 months of refactoring, the initial version of Statika is finally done.
I believe that this development cycle could be shortened by careful planning in respect to what the actual requirements are. Hence, list down the features that you wanted to build and start building your class diagram!
Frequent changes from evolving requirements is unavoidable. To ensure that the features that you want are working correctly, I suggest writing tests that will ensure that.
Statika has been an interesting project for me. You can try Statika yourself here!