Recently I rediscovered an old project on my hard drive that had some potential to change the world (maybe). It was a year old project that was about 80% done, as is usually the case. and it was abandoned because more than likely it became boring at some point in time. So I decided to try to bring it back and shine some new life into it. At least, I attempted to. Now I'll say this, I have been a programmer for the better part of a decade now. So the coding part itself isn't normally a struggle for me. In fact, it's quite a joyful experience. The issues began as soon as I double-clicked on that launch icon, and what followed inevitably left me putting that project back into its hiding place until it is discovered again in another year.
As I mentioned, this project was roughly a year old. In human years, that's kind of a drop in the bucket. In software years however, you might as well go back to college and then start over. Technology changes fast and while we call that fast change innovation, we can also call it required updates and bug fixes if you are the one that's maintaining said project. Running a newer version of the IDE on my machine, simply attempting to open the old project resulted in several new modal windows of which I've never seen before. Things needed to be ignored, while other things needed to run through compatibility checkers.
After some random clicks on "Sure, why not" buttons, the project was up and running. Or so I thought. Building this new version of the project lead to new and unknown errors of which I'm fairly sure where just born and I had the privilege of being the first to see them. At this point, I was almost ready to delete the folder and move on to something more entertaining in life. But I couldn't. Not without knowing whether it was possible to bring this beast back to life. And so I continued the trek.
The errors weren't difficult to overcome. Libraries were outdated, and certain files no longer existed. So deletion was the answer. References were removed where needed and if libraries were available, then they were imported back in. An hour or so later, the project was able to be built to screams and cheers from villagers. Getting a large project to build is always a rewarding experience. The bright side here being that I was able to find a better solution in how this project was configured. So now if I ever decide to run this project on another machine at some point in time, these issues should no longer be relevant.
Connecting to the database was a whole other issue. Sure the project didn't result in error codes anymore, but that didn't mean that it ran flawlessly. The very first run resulted in an immediate run-time error. Something about the database and connecting to it. I'll say this, I still don't know why this failed. I tripled checked the connection string, and everything looked identical. I ended up changing the name of the computer to something simpler, just as a last ditch effort. A few setting pages later and a restart, and everything worked. Great. Except now I had a computer with a different name, and had no idea whether this would effect anything else. Only time will tell in this regard.
At this stage, I had forgotten why I wanted to bring back this project in the first place. And a cloud of unease lingered over my workstation as I played around with the code. Sure, it's kind of working right now. But how much longer until that next random modal/error window pops up telling me to leave the house and go play outside like regular kids/adults do. And this I did not enjoy. There were far too many random fixes and mysterious messages for me to confidently have control of this project.
So rightfully so, I went outside and left everything behind for a bit. Then I came back and deleted the project from my machine. I probably wasn't going to work on it really, and I had just spent 2-3 hours randomly clicking on dialogs and Googling strange and mysterious error messages. In that time, many other fun things could have been done. One being, not doing that.
But this is a part of programming, one that doesn't get discussed too often, but that exists and will exist until we give up on this silly technology thing. Each and every project, whether web or app or desktop is relatively unique in its own way, just like people. Some are lean and kind of dull, others are larger and full of life and random surprises.
From a professional standpoint, there has never been a project that I have worked on for a company that just ran flawlessly the first time. And never due to the code. The code is fine. Loops will loop and conditionals will either take me to 'a' or to 'b'. But that invalid token that's lingering in the config file that's causing that one API to fail, yeah, that's going to cause you some time. And this is the hardest aspect about being a programmer. Learning how to manage and work with everything else but the code. And there's no way around it. You have to get your hands dirty sometimes. But feel confident in knowing that you are probably not the first person to have encountered this issue, and that some nice people online have documented that entire process for you.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.