I never found my place in any of the software engineering roles I held. The technical side of things got boring when I got a basic understanding of the internal logic of the codebase and no longer felt challenged and then wanted to do more, and more importantly, do it differently.
I wondered about design decisions and their overall purpose: why do we do it and why do we do it in this specific way? Is there a better way to do it? What metrics do we use to determine success and why? Although these questions were not always asked out loud, I was told that I was thinking too much and worrying too much, when I could have used this time to produce more lines of code.
I didn’t belong, I was too young and insecure to understand that it wasn’t a simple mismatch between my talent and my position. It was because I strongly disagreed with the way these places functioned and wanted to work to change them rather than perpetuate them.
If a part of me never told myself there had to be better things elsewhere, seeing job offers for a few weeks in 2023 was enough to end that illusion. 90% of the time, when I read the descriptions, it’s excruciatingly obvious to me that the code that the chosen candidates end up writing as part of this job will be completely removed from any important problem that not only humanity, but even every single human being, has ever had.
Startup culture is unapologetically at the forefront of industry policy of producing more code and asking fewer questions. Most startups are just circling investors’ money while trying to win over paying customers by convincing them they need a product that is, more often than not, only marginally useful at best.
They usually fail, leaving behind thousands of lines of unsustainable spaghetti code that engineers were forced to write in weeks instead of months using arbitrary modern technologies. No one will ever see this thorn in their side again, except perhaps as an example of bad coding practice, engineers’ time is wasted, and venture capital mostly ends up in the hands of those who already own significant capital – they can use it to fund a new startup, and this vicious cycle continues. continues.
Job ads that try to portray this as some kind of exciting and rewarding endeavor that will enrich people’s lives and encourage my development as an engineer are an insult to my intelligence. I want no part of this – not just because it’s unquestionably immoral, but because it’s fundamentally and exasperatingly boring and pointless.
Although established technology companies are organizationally and financially different from startups, they are not really different culturally.
Sure, the code you write on FAANG can reach users, but what you, as an individual, think about any aspect of writing code will be more irrelevant than ever. You’re a cog in the machine, not just in the sense that the product you’re building has the potential to automate the worst aspects of capitalism in increasingly sinister ways, but also in a practical sense, you’re a number: the size of your backend stack, or the score of a technical interview, or the score of a performance review.
It is not so much this reality itself that is horrible, but the fact that we as engineers should consider this empty and humiliating task even more ambitious than many other workers, and that we are even more discouraged from questioning any aspect of this task.
In essence, the concept of critical thinking has been turned into an anathema to engineering: as a developer, you must focus only on the how, rarely the what, and certainly never the why. For the rare code monkey who finds himself able and willing to criticize the system he builds for, the message is clear: Leave this crap at the door. The Code Monkey cannot even identify the lack of autonomy and creativity inherent in his position – he can only strive to build more, never build differently, or build different and better things.
So while this technology mentality of doing more and asking for less can produce more code, it also systematically leads to lower software quality.
Even in cases where capital and other forces beyond our immediate control theoretically allow us to build software in a sustainable way, or that has a positive impact on the world at large, or that is at least practically useful, we still don’t, because of simple inertia: it is easier and generally more sustainable to do what is fashionable and reproduce the status quo.
What’s worse, this same inertia permeates the entire technological array on which this socially useless product is built. Technologies, down to languages, libraries, frameworks, and even code samples, are infected with the same brand of novelty and gadgetry before true innovation that affects the industry as a whole. After all, if you’re not going to solve unconventional problems, why would you need unconventional engineering?
True, the most interesting engineering problems tend to be those that arise naturally in our society, as opposed to those for which technological progress is an end in itself, or even those that attempt to artificially create market demand where there is none.
Social necessity is the best possible driver of innovation – remember that historically the most revolutionary achievements in the early days of computing happened in the service of the common good. This is what I really want to do: I want every way – from the programming language and paradigm, to the architecture, to every line of code and piece of syntax – to be informed by why the system in question was built. And I want this why to reflect a real need that exists, not some silly commercial measure that exists for its own sake.
Until now, I have not had the opportunity to meet anyone who shares these values in a meaningful way and who wants to do this kind of engineering work. Despite the isolation I often feel in my interactions with this industry, I am convinced of the value of my work and the importance of the things I say. If you are that person, please don’t hesitate to contact me – it would be interesting to know if there is already a place for someone like me. And if not, I think it would be useful for us to create one.
source: “I love programming, but I hate the software industry” (by deathbyabstraction)
and you
What is your opinion on the subject?
See also:
Why You Can’t Change Programmers: Programming as Theory Building by Peter Naur