I used to love technology, now I hate it

in rant •  3 months ago 

When I was a kid, I was exposed to technology and fell in love in technology for a simple reason: computer games.

Just like everyone who like technology, I studied computing as my major in university.
Some years has passed since I graduated and I have been working as an software engineer since. I changed job every year like people of my generation did but the roles is still the same.

I used to love technology until my experiences at work. This is going to be a rant on software programming from my experience as a software engineer.

Overall, programming at a job feels like fighting against technology, solving bugs after bugs while creating new ones. Its feels like swimming against a strong current and you will even get pushed back no matter how hard you try. There is a user expectation that software should work like magic and it is this disconnect that frustrates me.

Next, out of all my experiences as a software engineer, even now, I am working on a software that is not documented. Its like working on something that you do not know and users expect it to work. Under time constraint, I had no choice but to go into the code and modify without letting the current house of cards collapse. Call it skill issue, but I feel like I can only handle code with low entropy. The code feels like it is encrypted in a programming language and I need to decrypt it using my knowledge of the programming language. I have no idea how to work on such codes and how it works.

At my current job, the worst part is that I am the only one who is working on the code in a project, the rest are users of the software. All the programmers have left and I am the unfortunate one who joins the project after everyone left. Working on it is a nightmare. There is no documentation let alone a updated one, I need to reach out to ex-employees to explain certain code to me if they are willing enough, the pressure of fulfilling user expectation without explaining the code to them (they do not want to hear it when I tried). I have to make compromise on the code quality to fight against these odds.

The size of the code is another problem. It is unrealistic to handle them without, once again documentation. How do I expect myself to join a large project and have no means of documentation to serve as communication of ideas to me. I do not mind reading them, I just need to know how it works so I know how the gears work in a machine. I do not even know the mechanics of the software, so I had no choice to rush into the code and make sure the software does not collapse under its own weight.

Another problem is the practice that we have as software engineers. We prioritizes coding the software before making documentation and those who are in the project long enough wonder why the newcomers like me do not catch up to speed. Of course we will be burnt out trying to reverse everything you have coded, of course we take a long while to catch up. There is nothing to reference. In electronics, at least we go from schematics, to printed circuit layout and finally print the printed circuit board. In mechanic, which I am not familiar with, we have mechanical drawings blueprints and so on. What about software engineering? The code is the documentation, read the code and the rest will follow. Its like getting a printed circuit board and amend traces and components without schematics. We can get some work done but is this really engineering at this point? Are we even engineering software? Rushing in to amend code is about the only option newcomers have and it is a race to the bottom to deliver software. Isn't this what agile promotes? Code before documentation.

We have code reviews, code standard, but these are just distractions for newcomers like me. They do not help me in any way to let me work on a software like a mechanic. With such practice, I feel like my skill as a programmer has deteriorated. Eventually, I will just add code like a zombie and then end up facing every problem as a skill issue.

Not to mention the sunk cost fallacy. Nobody wants to design from the ground up. Its too much work, even we are paid to do them. Its better to work on the currently established code and modify it to become better or worse. I have not seen an project other than software that does this. We do not make better electronics by adding components to old circuit boards. We do not build better bridges by adding something already built bridges. We do not make another car out of existing car. I don't even think I am making sense here, but it makes sense for software. When a new version comes, we just slap a new number to the software and add some code to it. In the end, the software becomes one monster that cannot be tamed. No one dares to reinvent the wheel, so the technical debt widens.

I am so burnt out from preventing the software from collapsing on me. I hate software programming. Maybe it is more accurate to say that I hate programming for others. I want to do this on my own terms, to remind myself why I like technology in the first place. I want to take a break from programming. I probably will try again in the future, but I am burnt out as of now.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!