Technical Debt


This week, I realized the cost of having multiple minds working on a project. Different people have different approaches, and not everybody on a team may have the same goal for keeping code from spiraling out of control.

That isn’t to say I’m not contributing to the problem as well. It very well could be that each of us thinks we are coding in a clean way, but to each other things are looking messy. To start off, we have a quickly growing list of files. And things are not organized how I would like them to be. For example, we have some files located in the root folder for some reason instead of organized into an appropriate directory. And we have a whole Wizard folder for the boss that is filled with various sprite sheets, scripts, sounds, etc. but which isn’t inside the Enemy directory. There is a Fireball directory that bats are supposed to shoot (but currently are not shooting) so that is just bloat. And even if it was being used, why is it in a directory located in the root folder? Surely it should be a subfolder in /Enemies/Bat, or /Effects, or something else?

On top of that, the code itself has been messy. For example, there must be some different standards we are using for different components of the code. In my opinion, we should be preloading all our assets needed at the start of the script in one easy-to-find section. Yet the approach some of my teammates have is to load the script when the asset is needed. I’m not sure which of us is right, but it would be best if we were consistent as a team.

Overall it is leading to a bit of dread when it comes to thinking about implementing additional features. It feels like trying to add an extension to a house that is being held up by sticks and gum. I worry something will break or I’ll spend a lot of time fighting with existing setups as opposed to building the new thing. I definitely can understand now how technical debt/spaghetti code leads to issues for companies.

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *