My General Reflections On Software Development And The Development Of AI

It would be dishonest for me to say that, as a software developer, I do not enjoy economic privilege and benefits that surpass most workers. On the contrary, I had a conversation with a friend recently who remarked that "software developers get paid too much."

I understand where he comes from. His job is relatively lowly paid, at least it is after the inflation of the pandemic, and affording to live in a place of his own, even if just renting, is out of the question. I am paid extraordinary well compared to him, and I can afford to live in a two bedroom apartment alone. What I find here is not that I am paid too much, but he is both not paid enough and cost of living is divorced from reality.

I suppose one reason that he is not paid too much is that his job would be considered unskilled labor, which is to say that given a relatively short amount of training most high school graduates could perform his role and meet expectations.

As the gods of our economy, supply and demand, would dictate, availability of labor maps to the supply. In the face of low supply, employers typically pay more to those workers to secure a valuable asset (see the title: human resources) to overcome scarcity. I suppose from an undergraduate understanding of economics this would lead to many employers in the same niche to compete for the same small pool of laborers, inflating salaries as a result. This is seen in Silicon Valley.

Admissions to computer science and related majors, like software engineering in specific universities, have skyrocketed, and it only increases each year. This makes sense: there was a huge push to teach programming to school students, and more importantly computer science remains one of the few majors that enable financial independence early. Traditional engineering disciplines, like mechanical and electrical engineering, have a salary ceiling somewhere around $80,000 to $90,000, even after the inflation of the early 2020s. Software development, and subsequently computer science, is arguably more accessible and easier to learn but the ceiling on income, even in the most boring and standard roles, is in the hundreds of thousands.

For workers of all categories, software development is a miracle. The salaries are higher than average and the benefits lean towards generous, with some workers enjoying a fully work from home job. It is probably the best career for securing early financial independence within some reasonable work-life balance.

Although, in the name of intellectual honesty, we can't ignore the other side of this miracle: many computer science graduates are currently not finding jobs. Here we find, likely influenced by the mass waves of layoffs that started in 2022 and hasn't stopped yet, the supply of workers on the market far exceed the demand of employers. My team had a job opening for a junior software engineer role, and it was filled by a candidate laid off from Netflix (considered a prestigious tech company) who had seven years of experience.

This is the cyclical nature of software development, at least to this point.

I say to this point because we find ourselves in an extraordinary period as laborers skilled in software development: the advent of AI and AI coding tools, like Cursor or Windsurf.

Although not all software developers would agree, I found myself to liken software development before this point as exercising expertise in a craft. All programs and systems I built felt like the careful execution of pragmatic and thoughtful choices learned through study and failures. Through this lens, I was not simply a worker, but I was an artisan practicing my craft. This gave my work a feeling of existential meaning: I was progressing and moving forward, even at my day job, in a way that invoked pride in my work and my growth. This is what enabled me to find meaning even at my day job working on existentially useless applications.

I wish I could say this was still the case, but my experience in corporate software development in this period of AI eviscerated any feeling of meaning in my work. It is precisely through this mechanization of the craft through code generation tools that has reduced my labor from craft into rote performance.

Tools like Cursor output code that is mostly competent for the majority of practicing developers. When we consider that most developers are gluing together systems and developing simple CRUD applications, tools like Cursor shift the majority of work from creation into review. It is usually the case that the laborer spends the majority of his or her time on review and minor tweaks against generated code. The majority of effort goes into the tedium of testing, resolving nuanced issues, and preparing the code for review.

This is to simply say that the joy of programming is dead, slaughtered by the mechanization of AI tools.

Although there are domains where AI coding tools, in their current state, are mostly useless outside of test and documentation generation. In my current role, I created the first version of our data quality framework which abstracted Great Expectations into the execution of declarative YAML files. What I created was essentially a DSL which interpreted YAML files as s-expressions found in some Lisp languages (the car being the test itself and the cdr being the list of arguments), checked against a centralized registry if the test was valid, and if so followed through with type-safe execution. Cursor was trash at helping me.

This is the only moment in a recent time where I felt proud of my work, where it felt like my toil had greater meaning beyond the job. Some would argue that to find meaning in my job itself is a privilege, a luxury, but I would hope with the advent of technology and its miracles in 2025 that this would not be considered as such.

Perhaps the most tragic aspect of this mechanization of our labor is the inflation of our employer's expectations. What once took many days to complete can now be finished in a single day. Employers see the increase in story points as a sign that more is being done, even when most of the work completed in a sprint is built on shaky foundations. And, to be fair, they simply don't care. In an industry where the ideology of "move fast and break things" cast its shadows in every role, more is a virtue compared to less.

This desire for more output, for the reconciliation of their investments into expensive AI tools, manifests in performance reviews. The moment the majority of your team uses code generation tools to increase their productivity, which is to say the moment they perform competence through more visibly completed tickets, the artisan is punished. Even in teams without stack ranking, you are implicitly compared to your peers, and their output eclipses yours. The currency of management is visibility, and the artisan's value is undermined.

This period of software development worries me. I worry for the students who manage to find junior level roles. If employers value productivity and quality, how will they meet expectations while building their craft? I worry that we find ourselves in a system where those trained before the advent of AI tools, those who are strong mid-level or senior developers, benefit disproportionately because they are already equipped with the tools to perform the tedium well.

Above all, I worry for the workers' ability to find satisfaction with their life. They are given a short time in this life, and most of them will spend a significant portion of their time at work. I believe the greatest struggle of our times is the ability to find meaning, dignity, and freedom in work, but it seems like one of the last paths that was both financially liberating and personally fulfilling is dying.