27,650 karma · joined September 4, 2008
Now: HotelTonight / Airbnb
Web generalist with a product focus and wearer of many hats.
https://mubi.com/users/2
https://github.com/gtd
http://websaviour.com/
https://twitter.com/dasil003
[ my public key: https://keybase.io/gtd; my proof: https://keybase.io/gtd/sigs/LLH-bIciQfUgvlVI7-Xe0LaEIEZxOSA0zHYbjhCYiXU ]
> A US ZIP code is 5 characters. From those 5 characters you can determine the city, the state, and the country. That's 3 fields. Autofilled. From one input.
I guess this is par for the course in Trump's America, but I still feel embarrassed for the creator.
In terms of lowering quality, I don't think this is anything new. Volume of code and depth of stacks has been growing pretty much in parallel with Moore's law, and this has degraded code quality. AI is accelerating this, and creating a new kind of slop since LLMs are sloppy in a different way than humans, but directionally I see it as part of the same trend.
However despite lowering quality, and increasing messiness, capabilities and user expectations have steadily increased. After a quarter century in this industry, I am blown away by the capabilities of modern computing, and the polish level of the best apps. The median bar for successful software is higher than its ever been. And to achieve this we've had to navigate steadily increasing complexity (much of it incidental), and that is where senior software folks shine.
So yeah, I think your observations are prescient and I agree with a lot of your, but I wouldn't characterize it as "nothing good ahead". I see it as a mixed bag, like all "progress", it just needs time to bake and get our arms around the impact. Currently the rate of change and hype is far out-pacing our ability to reason about it, perhaps that's the single biggest difference in the smart-phone, internet-enabled era of humanity.
We were already writing code that was automating not only manual work but also simpler programs. LLMs essentially just move us one more (large) hop up the abstraction ladder. And yes I get that it’s a different type of hop (non-deterministic, extremely leaky, etc), but it’s still a hop.
So if the only thing you want to do is manually write code in the traditional way (perhaps with vim instead of IntelliJ) then yeah I think you’re cooked. On the other hand, if you are willing to work with LLM-assisted tooling and learn how to compensate for its shortcomings then I think you’ll have a bright future.
There's a lot of what-ifs, and worst case scenarios in your reply that I simply don't find likely. I am not drinking the koolaid from the AI maximalists or the doomers. I could be wrong of course, no one can predict the future, but to me the very real, novel and broad utility of LLMs that we are just learning to harness combined with the investment outlook are leading to a mania that has people overestimating where things will land when the dust settles. If I'm wrong then I guess I'll join the disenfranchised masses picking up pitchforks, but I'm not going to waste time worrying about that until I see more evidence that it's actually going that badly.
So far what I see is that software engineers are the ones getting the most actual utility of AI tooling. The reason is that it still requires a precision of thought and specificity to get anything sustainable out AI coding tools. Note this doesn't mean that engineers can design better apps than proper designers, rather my point is that designers and other disciplines still can not go much further than prototypes, they still need engineers to write the prompts, test the output, maintain the system, and debug things when they go wrong. I have worked long enough with large cross-functional teams to know that the vast majority of folks in non-engineering functions simply can not get enough specificity and clarity in their requests to allow an LLM to turn it into a working system that will work over time. The will hit a wall very quickly where new features add bugs faster than they improve things, and the whole thing collapses under its own weight like a mansion of popsicle sticks. And by the way, I don't consider AI-assisted coding to require less qualification than regular coding. Sure you don't need to know as much syntax or algorithms, but you absolutely need to know data modeling, performance, reliability, debugging, consistency, and migration knowledge in order to use AI to contribute to any software that powers a real business, and yeah you might need to develop your product and business sensibilities, but to me that's what been happening throughout the history of computing. Wiring up ENIAC, certainly required qualifications that were not needed for assembly programing, which in turn required certain things that C programmers did not need and so forth, but harnessing the increasing compute power and complexity required new qualifications. I don't think AI will ultimately be that different, it will change the way we work, it doesn't replace what senior engineers do.
The other thing is it's showing first derivative, not absolute numbers, which is a very questionable way to derive "worst employment situation" in a field that has been on world-changing boom over the last 50 years.
> Employees who are more likely to fall for corporate bullshit may help elevate the types of dysfunctional leaders who are more likely to use it
The rank and file don't elevate leaders, it's decided by higher-ups, and the higher you go the more they care about actual non-bullshit results. Where bullshit thrives is because higher level business strategy is actually hard and ambiguous, so there's a continuum of bullshit where you are expected to at least say credible things, but it's couched in bullshit terminology to broaden the range of success they can claim, and leave room and plausable deniability for failures. Strong leaders are keenly aware of this nuance, and therefore leaders are judged on reputation and outcomes over time, because any given thing they say may be wrong, but the track record is undeniable. This is why you never hear a bad word about leaders while they are there, they are just fired (or more likely "resign") one day seemingly out of the blue.
What this article misses is that to survive in a corporate environment everyone needs to put up and nod along to bullshit. Most of the time whether it's right or wrong and the level of bullshit doesn't really matter to most of the employees, they're just incentivized to play along and not express negativity. Within the rank and file, obviously some are more susceptible to bullshit than others, but I don't think this study necessarily gets at that, as a lot of people will act agreeable just to survive in corporate life, and their disposition will be largely independent of their true understanding and feelings about whatever bullshit they are presented with day to day.
Software has eaten the world, and thus the value of maintaining software has never been hire. Engineers are the people who understand how software works. Therefore unless we move away from software, the value of software engineering remains high.
AI does not reduce software, it increases the amount of software, makes messier software and generally increases the surface area of what needs to be maintained. I could be wrong, but as impressive as LLM's language and code processing capabilities are, I believe there is a huge chasm that will likely never be crossed between the human intent of systems and their implementation that only human engineers can actually bridge. And even if I'm wrong, there's another headwind which is that, as Simon Willison has point out, you can't hold an LLM accountable, and therefore corporate leaders are very unlikely to put AI in any position of power, because all the experience and levers they have for control are based on millenia of evolution and a shared understanding of human experience; in short they want a throat to choke.
The other factor is that while AI can clearly replace rote coding today, I think the demos oversell the utility of that software. Sure it's fine to get started, but you quickly paint yourself in a corner if you attempt to run a business on that code overtime where UX cohesion, operational stability and data integrity over time are paramount and not something that can be solved for without a lot of knowledge and guardrails.
So net of all this, where I think we land is a lot of jobs that are based purely on knowledge of one slow-changing system and specific code syntax will go away, but there will be engineers who maintain all the same code, they'll just cover more scope with LLM assisted tools. You put your finger on something, that I do believe this moves engineering closer to product design, but I still think there's a huge amount on the engineering side that LLMs won't be able to do any time soon (both for technical and the social reasons stated above), and ultimately I don't see the boundary the same way you do, as software engineers we have always had to justify our systems by their real world interaction.
Also a lot of corporate jargon does have specific connotations for skilled communicators to send a message that is seemingly polite but is actually saying something controversial that is picked up only by those in the room savvy enough to understand. In skilled hands it’s very useful, in unskilled hands it’s complete gibberish. In many ways that’s a feature as the clueless cargo-culters quickly out themselves, and then the smart leaders can use that knowledge to route around them or deploy them in non-harmful ways. All without any overt confrontation ever taking place.
The idea that low-paid LLM wranglers are going to push out the experienced engineers just doesn't wash. What I think is much more likely to happen is the number of software engineers greatly reduces, but the remaining ones actually get paid more, because writing code is no longer the long pole, and having fewer minds designing the system at a high level will allow for more cohesive higher-level design, and less focus on local artesenal code quality.
To be honest AI is just the catalyst and excuse for overhiring that happened due to the gold rush over the last 20 years related to the internet and smart phone revolutions, zero-interest rate, and pandemic effect.
So yeah, I understand your point, and if I ran a cross-functional team like that I would hopefully hire well enough that I felt the same. So maybe to restate my thinking in a way that may be slightly less controversial: AI is eating a lot of the low-level mechanistic work that used to define being a software engineer, however I never believed that was where the value was for engineers anyway. While some PMs are incredible and would no doubt be able to get good at vibe coding, the majority in my 25 years experience do not have the patience to get to a precision of requirements which is absolutely still a requirement to get anything out of AI.
PM vibe coding a prototype for demonstration purposes? Might be a better use of a designer or engineers time, but okay I could see it being valuable. PM vibe coding something to ship to production? Your title is now engineer and you are responsible for your change, otherwise this is a direct path to destroying the quality of your product and the integrity of its data.
In my experience distribution of engineer quality is even across companies, countries, ages and any other dimension we can come up. Certain big scale skills can really only be practiced at honed at large tech companies, but it’s always a small minority that actually make those things happen. Resume alone can be an extremely misleading signal.
For this particular example, the first question I have is why are we upgrading the ORM? As a codebase grows and matures, the cost of ORM change increases, and so too must the justification for upgrading it increase. Any engineer worth their salt needs to know this justification and have it mind at all times so they can apply appropriate judgment as the discovered scope increases. Let's assume now the change is justified.
The next question critical question is how do you know if you've broken anything? Right in the intro the author talks about an "untested and poorly documented codebase", but then in the example uses basic compilation as a proxy for success. I'm sorry to be harsh, but this completely hand-waves away the hard part of the problem. To have any confidence in a change like this you need to have a sense of what could go wrong and guard against those things, some of which could be subtle data corruption that could be extremely costly and hard to unwind later. This may involve logging, side-by-side testing, canary deployments, additional monitoring, static analysis and/or any other number of techniques applied based on an understanding of what the upgrade actually means under-the-hood for the ORM in question combined with an analysis of what risks that entails to the system and business/process in question. Drawing a mindmap of your refactoring plan is barely more than IntelliJ (let alone Claude Code) can already do at the click of a button.
Anyone pursuing safety will be outcompeted by someone who isnt. Given the amount of investments there is no patience for any calls to slow down. I tend to believe this won’t actually end in disaster as I don’t think it’s actually economical to put AI everywhere with enough real control that we can’t manage the risks as they evolve, but it’s a low confidence prediction.
Don’t get me wrong, I think SWE headcounts will reduce over time, but the mechanism will be teams that know how to leverage AI effectively will dominate ones who don’t. This takes more market cycles though, and it’s even hard to nail down the specifics of these skills with the speed agentic coding tools are currently evolving. My advice is make yourself part of the second group, and worry less about bad management decisions that are inevitable.
I'm not against AI in general, and some assistant-like functionality that functions on demand to search my digital footprint and handle necessary but annoying administrative tasks seems useful. But it feels like at some point it becomes a solution looking for a problem, and to squeeze out the last ounce of context-aware automation and efficiency you would have to outsource parts of your core mental model and situational awareness of your life. Imagine being over-scheduled like an executive who's assistant manages their calendar, but it's not a human it's a computer, and instead of it being for the purpose of maximizing the leverage of your attention as a captain of industry, it's just to maintain velocity on a personal rat race of your own making with no especially wide impact, even on your own psyche.
On one hand it is very empowering to individuals, and many of those individuals will be able to achieve grander visions with less compromise and design-by-committee. On the other hand, it also enables an unprecedented level of slop that will certainly dilute the quality of software overall. What will be the dominant effect?