Discussion about this post

User's avatar
jns's avatar
6dEdited

The exponential decline of quality is not unique to the software industry. It's felt across all industries, and is simply a consequence of the capital driving the industry focusing on short-term profit and self-enrichment rather than benefiting the customers, company, the common good.

Until we learn to stop rewarding greedy sociopaths and psychopaths with positions of power rather than referring them to mental health, none of this has any hope of ever getting better.

C-level execs have no interest in providing a decent product for customers, or employment for their employees etc,... they just want to boost the imaginary short-term-profit numbers so they can cash out with their golden parachutes before the shit hits the fan.

The problems are rooted in human greed, not of humanity in general but of a minority with a disproportionate amount of power and means, who at this point, especially in the US, have been entrenched in power for so long that they have shaped the systematic fabric of society in their favor, which is why they have become increasingly more bold and brazen about what they are doing.

The only ethical choice at this point is to leave whatever big corporation you're at and go at it yourself. Make software the right way. However, you will be competing with larger companies who employ unethical practices, and be at a severe disadvantage. Due to that disadvantage your pricing will be above market, combined with the fact that most normal people are seeing their buying power evaporate in recent times, odds of success are slim to none. But it's the only option we've got left.

Niko's avatar
Oct 15Edited

Warhammer 40k coming early. We'll all be tech-priests soon 🙏.

Thanks for another insightful article! I wonder how you think senior engineers should prepare for the near- to medium-term future.

I have ~12yr professional experience from data-engineering to web development. I personally haven't experienced much of an increase in productivity from AI coding tools. Outside of small scripts and starting points for things you shouldn't be implementing yourself anyways (e.g. JSON float parsing), most of my experiments with AI coding tools end in frustration. When I'm in a mature code base that I am familiar with, then I already have a couple of solutions in my head. Typing them out is not the problem. On the contrary, the process itself forces me to interact with the code base and shows me which of the existing patterns make this new implementation difficult. I can then choose a different approach or refactor first. As a side effect I become intimately familiar with that code base, and that familiarity is where the real productivity gains come from. This is something that most managers (that I've met) under-appreciate, causing them to under-value retention and team stability. You are at your most useless when you inherit a legacy code base. With AI written code, it always feels that way.

During the early stages of your engineering career, you are mostly trying to get the thing to work at all. In that stage, AI can help, but I'm worried that it also robs you of the opportunity to think through hard problems yourself. However, as a senior you should be choosing from several working solutions and considering the impact to the rest of the system and the team. AI is bad at that. I was hoping that it could speed up prototyping of ideas, but that doesn't seem to work very well in larger code bases where a feature touches many different places. It just creates a huge mess. It never simplifies, always complicates, breaks stuff, and then capitulates. (Or, my personal favorite, claiming to fix a bug by placing a comment that says: "// Here we fix the bug that ...")

My personal take-away is to focus on strengthening my fundamentals, so that future me is in a better position to deal with the inevitable problems that the AI is unable to fix, or that the AI itself caused. To the extent that AI tools – mostly the chat kind – can help with that, I will use them. However, I don't feel that I have much of an edge over less experienced developers "driving" the AI coding agents, so I'm trying to avoid it as much as possible. Unfortunately, that is not a stance that I can comfortably publicize in my organization. It feels a bit like I'm undercover in a cult.

You probably know the Principle Skinner meme: "Am I so out of touch? No, it's the children who are wrong!" Well, nobody want's to be that guy, so I intend to check on the latest tools every few months. Would you say that I'm missing the boat by not committing to AI coding? How would you strike a good balance? Also, should I recommend to juniors to rely less on AI tools even if that means delivering less? That might hurt their performance review in the current climate.

16 more comments...

No posts

Ready for more?