The Importance of Maintaining Structure in Projects

The Importance of Maintaining Structure in Projects

“Make it work first, then make it right”

There’s one thing I hear a little too often: “Make it work first, then make it right”. While it’s not wrong, I believe it’s been misinterpreted heavily. The idea is to get it working as fast as possible, but that doesn’t mean you should drop everything you know! Good things take time. Building a new feature without considering usage with other systems is unwise, and will lead to overall more time spent down the line.

“Make it work first…”

I was building a new system for Spite: Blood and Gold, and was asked why I was taking so long to get it working, why I was planning so much, why I was rewriting the system before I even started. To me, maintainability comes first (with exceptions, of course). I will gladly spend 30 minutes planning in the beginning, if it means I won’t have to spend several hours fixing it later. It’s hard to modify a system which has already been used by others, and the further in you get in a project, the tighter time gets. Spending it on avoidable refactors is not a good sign.

“…Then make it right”

In one of our projects, I had to connect state from the ability system to our user interface. It was obvious that the abilities were hastily written. There were even two different ways to handle cooldowns! One counted up from zero, while the other counted down to zero. One used a convenient Cooldown class, while the other used float values to track cooldowns.

The end result was that I had to rewrite parts of the ability system to be consistent in order to make it maintainable enough to connect to our UI state. This took a lot more time than if the system was planned out in the first place.

This isn’t a rant about this system or the people who had worked on it, but this moment exactly proves my point of how “just getting it to work first” usually leads to more work in the long run.


Conclusion

Don’t be afraid to take your time to plan things out! Be it a new system or a new feature, it’s always worth taking a couple of minutes to just think about how it should be structured. If done well, it will save everybody time in the long run, and comes with the added benefit of feeling like being in a very clean room whenever work has to be done.

Denis
Codreanu