I wanted to spend a little bit of time today talking about the concept behind Wasteland Coder in general.
Barren Wasteland
Quite often, it feels like we are stuck in this life-sucking barren wasteland when we are coding. Especially when working on so-called legacy projects. There is a constant feeling that whoever was here before had no consideration for the future whatsoever. They were only concerned about their immediate short-term survival. Corners were cut, buildings are deteriorating, and in some spots it is even indistinguishable from a nuclear detonation.
On top of that, there is always the promise of some oasis on the horizon. Sometimes that promise is a green-field project. Something totally new and “totally” under your control, so you have the freedom to this time pick the right tool and do things the right way. Other times, the promise is simply that after we get through with this round of appeasing the paying customers, you will have the time you’ve been asking for to focus on the ever-growing list of tech-debt tickets.
We all know those promises of an oasis are mere fallacies. A green-field project will only remain green for about a month, and then you’ll be right back into dealing with old code, or code that somebody else wrote. We never get the time we would like, or need, to really go in and fix the parts of the system that need the most care.
Viewpoint
So is the software we work in always just a barren wasteland? Do we just have to do the best we can with the crappy land we are handed? Or is this more of a point of view, and if we just shift our paradigm we can gain some other benefits? We all know that complaining and whining never fixes anything (although I have to constantly remind my kids of this). Actual work will always trump complaining and talking.
Old code will always be old. We know that. Just like any project, in software there will always be more work to do. There will always be more features that could be added, more bugs that could be fixed. More places that could be made just a bit better. However, in software we often have the luxury of actually continuing to work on our projects. We have moved away from the time when we actually had to slap a “complete” label on the thing and open the doors.
That gives us tremendous freedom to spread out our work. Of course we will never get years, or months, or even weeks of time to go in and fix our own pet peeves. But you do get hours. We just hardly ever see them. We are too focused on the task at hand, the bug that needs fixed or the new feature that needs implemented. But while we are doing these things, we do have the freedom to touch surrounding bits of code. This can bring in risk too, we all know how tangled and messy code-bases can be. So maybe that means you have to take a very circular route to getting to where you want. Wastelands rarely provide clear passages directly to the point you want to travel to.
It is Used
We quite often get bogged down in despair at just how crappy our software is. But we forget why it is in such a state. We only got to this point because the software is a success. It is easy to maintain a pristine system, if nobody ever actually uses that system. Updates, upgrades, and other changes are very quick if you have no actual users. Having paying customers is definitely nothing to get upset about!