I love programming but I hate the programming industry
On being a faulty cog in a machine when the machine itself is faulty
I never really fit into any software engineering job I’ve had. The technical side of things got boring after I had gained a basic grasp of the inner logic of the codebase and no longer felt challenged, and then I wanted to do more, and more importantly - do it differently. I wondered about design decisions and their broader purpose: why are we doing this and why are we doing it in this specific way? Might there be a better way? What metrics are we using to determine success and why? Although these questions weren’t always posed aloud I got told I ‘think too much’ and ‘care too much’ when I could be using this time to churn out more lines of code. I didn’t belong, and I was too young and insecure to articulate that this wasn’t just a simple mismatch between my talent and my position. It was that I fundamentally disagreed with the way these places operate and wanted to do work to change them rather than perpetuate them.
If there ever was a part of me that thought ‘there has to be better things out there’, looking at job postings for a couple of weeks in 2023 was enough to kill that illusion. 90% of the time when I read descriptions it is excruciatingly obvious to me that whatever code the chosen candidates will end up writing at this job will be completely removed from any important problem not only humanity, but even any individual human has ever had. Startup culture is shamelessly at the forefront of this industry’s ‘produce more code and ask less questions’ policy. All most startups do is move investor’s money around while trying to acquire paid users by convincing them they need a product that is more often than not marginally useful at best. They usually fail at that, leaving behind thousands of lines of unmaintainable spaghetti code engineers were bullied into writing in weeks instead of months using arbitrary trendy technologies. No one will ever look at that shit again except maybe as an example of bad coding practices, engineers’ time has been wasted and venture capital largely ends up in the hands of the people that already possess significant capital - they may use that to fund another startup, and this wretched cycle continues. Job ads that try to paint this as some kind of exciting meaningful endeavour that will enrich people’s lives and stimulate my engineering growth are an insult to my intelligence. I don’t want to be a part of this - not just because it is arguably immoral but because it is fundamentally and infuriatingly boring and pointless.
While established tech companies differ from startups organisationally and financially, they don’t really contrast them culturally. Sure, the code you write at a FAANG might actually make its way to users, but what you as an individual happen to think about any aspect of writing code will be more irrelevant than ever. You are a cog in a machine not only in the sense that the product you are building is likely automating 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 your tech interview score, or your performance review score. It’s not so much this reality itself that’s so atrocious to me, but more the fact that as engineers we’re expected to find this empty and humiliating grind even more aspirational than many other workers are, and are even more discouraged from questioning any aspect of it.
Essentially, the concept of critical thinking has been made anathema to engineering: as a programmer you are to focus solely on the how, rarely on the what, and certainly never on the why. For the rare code monkey that finds themselves able and willing to critique the system they’re producing for the message is clear: leave that shit at the door. A code monkey is prohibited from even identifying the lack of autonomy and creativity inherent to the position - they can only strive to build more, never to build differently, or build different and better things.
So while this do-more-ask-less mentality of the tech world might produce more code it also consistently leads to worse software. Even in the cases where capital and other forces outside of our immediate control theoretically allow for us to build software in a way that is sustainable, or has a positive impact on the world at large, or is at the very least useful practically we still often don’t, because of simple inertia: it’s easier and usually more viable to do what’s on trend and reproduce the status quo once more. Worse yet, this same inertia then seeps into the entire tech stack this societally useless product is built upon. The technologies all the way down to the languages, libraries, frameworks, and even code patterns become infected with the same brand of novelty and gimmicks before actual innovation that plagues the industry as a whole. After all, if you’re not solving unconventional problems, why would you need unconventional engineering?
In truth, the most interesting engineering problems are usually the ones which arise naturally in our society, as opposed to those where technological advancement is an end in and of itself, or even those which attempt to artificially create a market demand where there isn’t one. Societal necessity is the best possible driving force of innovation - remember that historically the most groundbreaking achievements in early computing have happened in the service of the greater good. This is what I really want to do: I want every how - from the programming language and paradigm, architecture, down to every line of code and piece of syntax - to be informed by the why of the system that is being built. And I want that why to be a reflection of a genuine existing need, not some bullshit business metric which pretty much exists for its own sake.
So far I haven’t had the chance to actually meet someone who would share these values in any significant sense and would want to do this kind of engineering work. Despite the isolation I often experience in my interactions with this industry, I am confident in the value of my work and the importance of the things I have to say. So if you are that person please reach out - it would be interesting to know if a place for someone like me already exists somewhere. And if not I think it would benefit us to create it.
(Edit: since people were asking me for clarification about the last part, yes I am open to consulting work that is in my areas of interest and reasonably in line with my values. Initially I didn’t want to add this since I fear it might be a shitty way to end an article that is - at the risk of venturing into cheesy territory - ultimately about something so much bigger than myself or my work.)
I never really fit into any software engineering job I’ve had. The technical side of things got boring after I had gained a basic grasp of the inner logic of the codebase and no longer felt challenged, and then I wanted to do more, and more importantly - do it differently. I wondered about design decisions and their broader purpose: why are we doing this and why are we doing it in this specific way? Might there be a better way? What metrics are we using to determine success and why? Although these questions weren’t always posed aloud I got told I ‘think too much’ and ‘care too much’ when I could be using this time to churn out more lines of code. I didn’t belong, and I was too young and insecure to articulate that this wasn’t just a simple mismatch between my talent and my position. It was that I fundamentally disagreed with the way these places operate and wanted to do work to change them rather than perpetuate them.
If there ever was a part of me that thought ‘there has to be better things out there’, looking at job postings for a couple of weeks in 2023 was enough to kill that illusion. 90% of the time when I read descriptions it is excruciatingly obvious to me that whatever code the chosen candidates will end up writing at this job will be completely removed from any important problem not only humanity, but even any individual human has ever had. Startup culture is shamelessly at the forefront of this industry’s ‘produce more code and ask less questions’ policy. All most startups do is move investor’s money around while trying to acquire paid users by convincing them they need a product that is more often than not marginally useful at best. They usually fail at that, leaving behind thousands of lines of unmaintainable spaghetti code engineers were bullied into writing in weeks instead of months using arbitrary trendy technologies. No one will ever look at that shit again except maybe as an example of bad coding practices, engineers’ time has been wasted and venture capital largely ends up in the hands of the people that already possess significant capital - they may use that to fund another startup, and this wretched cycle continues. Job ads that try to paint this as some kind of exciting meaningful endeavour that will enrich people’s lives and stimulate my engineering growth are an insult to my intelligence. I don’t want to be a part of this - not just because it is arguably immoral but because it is fundamentally and infuriatingly boring and pointless.
While established tech companies differ from startups organisationally and financially, they don’t really contrast them culturally. Sure, the code you write at a FAANG might actually make its way to users, but what you as an individual happen to think about any aspect of writing code will be more irrelevant than ever. You are a cog in a machine not only in the sense that the product you are building is likely automating 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 your tech interview score, or your performance review score. It’s not so much this reality itself that’s so atrocious to me, but more the fact that as engineers we’re expected to find this empty and humiliating grind even more aspirational than many other workers are, and are even more discouraged from questioning any aspect of it.
Essentially, the concept of critical thinking has been made anathema to engineering: as a programmer you are to focus solely on the how, rarely on the what, and certainly never on the why. For the rare code monkey that finds themselves able and willing to critique the system they’re producing for the message is clear: leave that shit at the door. A code monkey is prohibited from even identifying the lack of autonomy and creativity inherent to the position - they can only strive to build more, never to build differently, or build different and better things.
So while this do-more-ask-less mentality of the tech world might produce more code it also consistently leads to worse software. Even in the cases where capital and other forces outside of our immediate control theoretically allow for us to build software in a way that is sustainable, or has a positive impact on the world at large, or is at the very least useful practically we still often don’t, because of simple inertia: it’s easier and usually more viable to do what’s on trend and reproduce the status quo once more. Worse yet, this same inertia then seeps into the entire tech stack this societally useless product is built upon. The technologies all the way down to the languages, libraries, frameworks, and even code patterns become infected with the same brand of novelty and gimmicks before actual innovation that plagues the industry as a whole. After all, if you’re not solving unconventional problems, why would you need unconventional engineering?
In truth, the most interesting engineering problems are usually the ones which arise naturally in our society, as opposed to those where technological advancement is an end in and of itself, or even those which attempt to artificially create a market demand where there isn’t one. Societal necessity is the best possible driving force of innovation - remember that historically the most groundbreaking achievements in early computing have happened in the service of the greater good. This is what I really want to do: I want every how - from the programming language and paradigm, architecture, down to every line of code and piece of syntax - to be informed by the why of the system that is being built. And I want that why to be a reflection of a genuine existing need, not some bullshit business metric which pretty much exists for its own sake.
So far I haven’t had the chance to actually meet someone who would share these values in any significant sense and would want to do this kind of engineering work. Despite the isolation I often experience in my interactions with this industry, I am confident in the value of my work and the importance of the things I have to say. So if you are that person please reach out - it would be interesting to know if a place for someone like me already exists somewhere. And if not I think it would benefit us to create it.
(Edit: since people were asking me for clarification about the last part, yes I am open to consulting work that is in my areas of interest and reasonably in line with my values. Initially I didn’t want to add this since I fear it might be a shitty way to end an article that is - at the risk of venturing into cheesy territory - ultimately about something so much bigger than myself or my work.)