Monday, August 5, 2024

Random Rant - In Defense of Developing Software

Working in software for me is about building complex systems that fulfill a certain need. This weekend I met someone who mentioned they were disappointed in software engineers and didn't understand the high salary requirements. They said most of the work is about copying code from one place and basically trial and error the rest. At first, this seemed fair; most of the code had already been written, so we copy-paste and look up many things.

But!

Knowing what exactly to look up is a skill in itself. Using the right keywords, looking for the right programming language, and scanning through conversations to ensure we understand the problem they are trying to solve, and how much it applies to our problem is something experienced developers do better. You cannot try to fit all the code into your codebase until you find something that covers the known use cases. That would take a lot of time. Plus, there will be corner cases you might not think about at first.

Putting your code out there for others to use also takes time and effort. You often have to clean it from sensitive information. You have to explain it in an easy-to-understand way, and you have to clarify any upcoming questions. Your code, ideally, also goes through extensive reviews. It has to fit the style of the rest of the application, but be clear enough for newcomers to read.

There are also so many concepts out there you learn throughout your journey as a developer. There are implementation patterns to recognize. There are algorithms to compare to find the perfect one for you at the moment. There are data structures better suited for one problem than another. And that is really just a small part of the pure coding.

As a software developer, you are designing sophisticated systems, depending on systems built by other developers. New things are popping up every day, it is an Earth-wide community. It is impossible to keep up with everything that appears. It is already hard enough to keep up with the most popular projects in parallel with releasing our own stuff because there are so many people pushing out new features every second.

You also have to understand requirements that the person requiring them does not understand. You have to predict user behavior. You have to understand what can and cannot happen when your code is being used, and make sure that it does exactly what you think it does. Now and in the future. You build solutions to problems people don't even know they have.

The job is fun, though. We get to build interesting things daily. We interact with others who like to create similar and not-so-similar things. There is also a lot of creativity required in solving unusual problems. I especially love talking to down-to-earth developers with many years of experience. You can always tell there is a lot of care they are putting into their work. They also love to share if you are genuinely willing to listen.

I am really not sure why some people hate developers. This was also not the first time some man tried to tell me why he did not respect my profession. I just wish people would be less ignorant and more open-minded to things that they do not fully understand.

Building Resilience

In the beginning of the year we had a conversation with my manager about my yearly goals. Due to the nature of my current project and the ne...