27,688 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 ]
> They didn’t trade speed for learning. They traded learning for nothing. There was no trade-off. There was just loss.
I believe this conclusion is due to a methodological problem, a form of begging the question if you will. One thing I am certain of is that humans who set their mind to something learn something, and good programmers are among the most tenacious in setting their mind to something. With agentic coding, they definitely learn different things, and so I would expect syntax knowledge to be weaker, but debugging and review skill will increase overall. Why? Because there will be more code, and more breakage, and I still haven't seen any tooling that allows a non-technical person to be effective at this.
Programming knowledge has always had a half-life. The way I see it, this is a big sea change that will fundamentally change the job of software engineers, and some non-trivial percentage will either change careers or find a sheltered slow-moving place to finish out their working years. But for those who were not attached to hand-crafted code, AI provides power tools that empower technically minded people more than anyone else. I have full faith that younger generation still has the same distribution of technical potential, and they will still find ways to develop their craft just as previous generations of hackers have always done.
Personally the leverage I have as a bit of a cranky graybeard myself is that I understand how software works and I can distinguish between good and bad uses of AI and think critically about how to influence things towards better software. Just declaring AI as unequivocally bad and evil will do nothing more than make me irrelevant. At some point being right is useless without some measure of also being effective.
Because entrepreneurship and markets overall are at the center of so many disparate human contexts, I just don’t think the scientific method is particularly applicable. I also think the minute you try to generalize between startups the fidelity of understanding the factors of success fall off exponentially. The most common failure mode—almost by definition—is failing to recognize that some seemingly good idea or pattern that worked in many other businesses just does not work in this particular context for whatever reason. This is why entrepreneurs that are too focused on theory and not enough on the details of their particular space tend to fail.
To me, The Lean Startup is useful food for thought, and can be useful in surprising ways (even in bigger companies), but the generalized ideas and statements are of very little value without a keen sense of applicability in context. Any “science” of entrepreneurship would basically be combining the systemic chaos of macroeconomics less the precision of standard financial metrics plus all the human factors of psychology. Fascinating to think about, but I doubt the best pundits and theorists would themselves make good entrepreneurs.
Number 5 is timeless and relevant at all scales, especially as code iterations have gotten faster and faster, data is all the more relevant. Numbers 4 and 3 have shifted a bit since data sizes and performance have ballooned, algorithm overhead isn't quite as big a concern, but the simplicity argument is relevant as ever. Numbers 2 and 1 while still true (Amdahl's law is a mathematical truth after all), are also clearly a product of their time and the hard constraints programmers had to deal with at the time as well as the shallowness of the stack. Still good wisdom, though I think on the whole the majority of programmers are less concerned about performance than they should be, especially compared to 50 years ago.
I will say it's a little weird to frame it as "every fad" though. Do you really not see any net new or lasting utility for software engineering in AI tools? If not then more power to you, but software engineering being a fast-moving field where there are (fair or unfair) expectations to keep up is nothing new.
You will need more structure than you had before. For instance at 15 the idea of managers is silly, everyone still needs to be contributing individually, the only thing is that you do need to minimally subdivide work so that everyone isn't doing everything. Be wary of process for processes sake, you will start to need some but you really want to stay focused on concrete progress; is everyone doing the most important thing possible at every given moment? How fast are you shipping changes, closing sales, etc? Also make sure you have the right people, don't get starstruck by big tech vets. They have many skills that will be useful—if you are phenomenally successful—but if they don't have startup experience they likely will overengineer things by default, and a significant percentage of them can not wipe their own ass without the best-in-class tooling and infra support teams that allowed them to focus purely on one domain at BigCo. Basically you need pragmatic hustlers, veterans are good so long as they aren't cathedral or empire builders. Also watch out for weird team dynamics and nip any toxic interactions in the bud, one bad apple really can spoil the barrel; that's probably the most important thing to watch out for in the 15-100 range.
With hand-written code, things generally move slow enough, and there's enough common sense sprinkled across the org chart that things can get uncovered organically. With agent teams, speed increased by several orders of magnitude and common sense is out the window, so I suspect the ceiling on productive use of agents will be far more limited in number than traditional engineering teams, and it will heavily depend on who and how humans are plugged into the right places.
One thing I suspect professional researchers underestimate is how much positive output can be produced by a human team with vague or hand-wavy direction, and surprisingly little deep thinking, let alone a robust specification or structure to keep them on track. The reality is any large team regresses to the mean, and it's usually a few savvy people that actually drive outcomes. These people don't necessarily have official authority, just a nose for the right thing. This won't spontaneously emerge from agents (at least until they become a lot more human like in terms of big picture common sense, and dial down the sycophancy to a more "skeptical engineer" level).
What actually happens is that company headcount grows based on how much money they make (or how much they raise), this justifies hiring more people. Then, structure is added, both to systems (eg. microservices), and to operations (eg. jira, workday, salesforce, etc) so that communication overhead doesn't grind everything to a halt. Then, once the business stops growing, headcount must shrink. This may take a long time, and it will be couched in all kinds of corporate bullshit to try to preserve morale and investor sentiment, but that is all window-dressing.
> 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.