I remember he first posted 2+ years ago, back when people first realized ChatGPT might be useful for coding, that "90% of my skills are now worthless and the remaining 10% are worth 1000x"
I’m is the opinion that the test first XP style of development pays more dividends now than ever, simply because you can use it to validate the code that AI generates and importantly it makes it easier to generate code from these AI tools.
ilaksh · 3h ago
I think that XP was the only true agile methodology. Agile just got more and more corrupted over the years through stupidity.
Clearly AI programming allows you to quickly close feedback loops. I don't think everything needs a comprehensive set of unit tests though.
But if people can go back and understand the core concept of XP (which again is about feedback loops to me) and take advantage of LLM-based agent systems to create those tight closed feedback loops, then that will be an advance for software engineering.
jadbox · 2h ago
I think the ideal scenario is usually two paired programmer using a shared set of AI agents on the same working branch together. It's an ideal feedback loop of paired planning, reviewing, building, and testing.
viraptor · 2h ago
> I don't think everything needs a comprehensive set of unit tests though.
There's a difference in the tests of that era though. Around the xp times, unit tests were for unit of functionality, not per-method.
anonymars · 1h ago
I also wonder if this is written from a statically-typed perspective. In dynamic-typing land there are so many more stupid little things that can break that the compiler would otherwise catch for you
Either that or tracing/logging/debugging, but other than specific niches like parsing (of specific bug repros) I think integration tests are generally a lot more bang for the buck.
Anyway, if you want to go down a related-but-unrelated rabbit hole, J.R. Thompson's lecture on the Space Shuttle Main Engines is a good one. You can probably watch it at higher speed to smooth out the many, many "uh"s (believe me, it's bad):
“Unit tests are small tests, each one exercising a little piece of functionality. The units tested are usually individual methods, but sometimes clusters of methods or even whole objects.”
Extreme Programming Explained: Embrace Change, 2nd Edition (2004) Kent Beck
Izkata · 1h ago
That quote is saying the same thing as GP.
ffk · 2h ago
I think a more accurate version of this is: unit tests were not only per-method but also per functionality. This was often called BDD (Behavior Driven Development), e.g. Ruby's cucumber. Your intuition here is correct though.
cmrdporcupine · 1h ago
Starting with XP and in shops doing XP quite intensely has ruined me because I simply can't stomach working in "SCRUM" shops where a whole pile of stuff is taken as "agile" dogma which is mostly just ritualized meaningless bastardizations of things that XP pioneered, turned inside out.
AnimalMuppet · 2h ago
Depends on how accurately AI can close the loops.
mempko · 1h ago
Really? Because there is nothing agile about not shipping half your code to users (unit tests).
mattmanser · 3h ago
I'd totally forgotten about XP.
Funny how some of it is now day-to-day, and other parts of it would be considered extremely weird.
imjacobclark · 3h ago
Yeah, much of XP has just been integrated into modern workflows (for the better!), really getting this out there as a call to arms for folks to _think_ before they churn out 1000s of lines of code with an LLM and ship without thought!
From your perspective, which bits of XP would you consider weird?
CuriouslyC · 2h ago
Waterfall is the thing that's coming back with AI.
Jtsummers · 52m ago
Which is tragic. Waterfall is almost always the wrong way to do things.
apwell23 · 2h ago
It never went anywhere in the first place
the_af · 2h ago
What do you mean? I suppose it depends on the company. Maybe big, conservative companies? Startups don't operate on waterfall. Most jobs I've had didn't do the ol' all requirements upfront -> design -> implement dance.
loginx · 1h ago
I would also point out that a lot of organizations think scrum ceremonies and sprint satisfy the requirement for ticking the agile checkbox, but in reality, practice waterfall.
the_af · 47m ago
Hm, agreed that the ceremonies are there just to tick some checkbox, but why does it mean this is waterfall "in practice"?
To me, most orgs don't practice any kind of sensible methodology at all. Waterfall implies a rigor they don't have.
NikolaNovak · 1h ago
I would guess "big conservative companies" with waterfall are by far the overwhelming number of programmers, even if agile startups may (may) win be market valuation.
Then there's the definition - like, is SAFE really agile plus so many other hybrid approaches that have veneer of agile as long as we get all requirements up front and have detailed plan.
zdragnar · 1h ago
The ol all requirements up front -> design -> implement that people classically associate with waterfall came from an infographic on how not to do waterfall.
Actual waterfall looks very much like actual agile, in that it is designed around iteration loops. The primary difference is that waterfall prescribed steps in the iteration process, and agile is just a set of principles in a manifesto.
TLDR: the original impetus for waterfall is basically what we call agile today.
Someone copy-pasted a random chart from a paper (one the paper specifically said was too problematic) into a DOD process spec, that turned into a standard because the DOD loves to standardize everything, and big companies all adopted the fundamentally flawed approach and called it waterfall.
Jtsummers · 45m ago
> Actual waterfall looks very much like actual agile, in that it is designed around iteration loops.
No, Waterfall was not agile, it was the diagram from Royce but not what he recommended from his paper (which tore down that diagram). What Royce added to that diagram (fundamentally, just common sense with feedback loops) was closer to agile, though. Royce himself never called anything Waterfall, but what was termed Waterfall was the bad process he tore apart.
the_af · 40m ago
> Actual waterfall looks very much like actual agile, in that it is designed around iteration loops. The primary difference is that waterfall prescribed steps in the iteration process, and agile is just a set of principles in a manifesto.
In that case, I don't believe companies follow either. I've never seen anything as principled (in any form) practiced anywhere.
Companies claiming to do Agile were usually doing some rituals and cosplaying as agile. I don't believe I've ever seen a company doing "waterfall" or anything resembling what your link describes either.
They mostly do chaos-driven development.
rramadass · 1h ago
Most people know nothing about "Waterfall Model" which if you think about it, is just commonsense meta framework using which you can implement any SDLC methodology. Pair it with "Spiral Model" (https://en.wikipedia.org/wiki/Spiral_model) and you are golden.
This excellent writeup by David Olson gives both the history and the correct understanding; The Myth of the 'Waterfall' SDLC - http://www.bawiki.com/wiki/Waterfall.html
cmrdporcupine · 1h ago
Most companies I've seen recently, including a lot of startups, are operating in a waterfall that they then window-dress every 2 weeks in the form of SCRUM-ish rituals and ceremonies as if it's agile because it has iterations and story points or whatever.
Behind the scenes the PMs are making Gantt charts and deciding what's in and what's out and who is going to do it, without the team having any input or really getting to cost it out.
XP and agile generally was supposed to about shortening the communication and iteration gap between customer and maker. I almost never really see that.
the_af · 43m ago
Oh, I wasn't arguing that any companies actually do Agile (lower or upper case).
I meant in my experience, the methodology most companies I've worked in seems to follow is capital-C Chaotic. Requirements change at the whim of customers or leadership week to week, pivots are frequent and unpredictable, leadership gets fired/quits and the whole plan changes, lots of effort is wasted on stuff that then gets ignored, and customers are sold one thing but delivered another.
I don't believe organizations or companies follow either Agile (any brand of it) or Waterfall. I don't think what they do can be called a methodology at all.
cmrdporcupine · 30m ago
Ah yeah, that's fair. And my experience too.
MangoToupe · 2h ago
Apple famously uses waterfall.
bgwalter · 3h ago
Certainly someone is willing to sell Extreme Vibing (XV) courses.
parpfish · 3h ago
that’s what onlyfans is predicated on
AnimalMuppet · 3h ago
Just in case: This is not a call for everyone to "pair program" with an AI.
If you pair program with someone else on your team, you both learn what the other is thinking. You both become more familiar with what the code is doing, and why it's doing it.
If you "pair program" with an AI, anything it learned, it forgets as soon as the prompt is closed.
So don't think that's what he's talking about here. He's talking about XP, with humans, just like in the 1990s. There may be some AI in there too, but that's not where the XP part comes from.
viraptor · 2h ago
That's only if you don't preserve the results explicitly. If you're trying to delve into some new code without enough docs, I could imagine learning lots about the system along the LLM and then leaving that as documentation and/or agent files in the repo.
Terretta · 2h ago
> Just in case: This is not a call for everyone to "pair program" with an AI.
If that's not what you're doing, you're likely doing it wrong.
> If you pair program with someone else on your team, you both learn what the other is thinking. You both become more familiar with what the code is doing, and why it's doing it.
Yes.
> If you "pair program" with an AI, anything it learned, it forgets as soon as the prompt is closed.
Same with humans, including your future self. So pair on docs.
TL;DR: You should absolutely be XP pair programming with your LLM.
the_af · 2h ago
I think you're stretching the definition.
Maybe we need a new term, maybe we don't, but it's not pair programming if you're doing it with an LLM.
Fulgen · 2h ago
> You should absolutely be XP pair programming with your LLM.
If you want AI slop everywhere, that is.
imjacobclark · 3h ago
100%
jongjong · 3h ago
Extreme Programming attempts to weave together several independently useful concepts into a single paradigm... For that to make sense, the amalgamation of ideas has to be greater than the sum of its parts individually, but it's not clear that this is the case.
TDD is useful in some situations, yep totally. Pair programming is useful in some situations, yes. Continuous integration; yes, much of the time. Frequent feedback; yes, sometimes, for some types of work which doesn't require deep focus...
It just doesn't work as a blanket 'XP' paradigm because you rarely need all these parts all the time, at the same time. IMO, this is why Extreme Programming lacks gumption as a concept. It feels like a bunch of good ideas thrown together. If there was some kind of synergy between those ideas and practices, the concept of XP would be more important.
As it stands today, everyone is implementing maybe 1 or 2 aspects of XP, but almost nobody is implementing ALL of XP... So nobody can claim that they're adhering to XP.
This is not the same as as 'Agile' because with Agile; the vast majority of big companies are implementing maybe 90% of agile practices, with 70% fidelity... This consistency is enough for companies to identify themselves as 'Agile'. I've worked for many companies which implemented ALL of the Agile practices but not one of them actually implemented them exactly as taught in the Agile Manifesto. I think the closest one I worked for was maybe 90% of the way there; they even followed the story point system exactly and used a packet of cards with numbers on them to allow people to vote during Sprint Planning meetings... but anyway, pretty much all the companies/projects I worked for identified themselves 'Agile' because all the practices fit into a single paradigm and there was value in adopting all of them. After a while, it became easier for project managers to just say "Let's switch to Agile" instead of saying "Let's time-box our development work into short increments, with a planning meeting, refinement meeting and retrospective meeting for each 2-week increment."
thisoneisreal · 43m ago
That's why the XP book arranges itself into values, principles, and practices. The best line in the book is about how practices without underlying values are dead, while values without practices are wishy-washy abstractions. What he's really advocating for at the highest level is skilled teams, who are given ownership, that are actively defining their own processes, and executing them with discipline to produce well-designed and reliable software. The book is a "grab bag" (very legitimate point) because those are the sorts of techniques that those kinds of teams use.
imjacobclark · 3h ago
Agreed, we’ve come a long way since the dogmatic agile of the 90s, and maybe I could be more explicit that this is about introspecting how you’re delivering software (now AI-enabled workflows are everywhere) to decrease the probability of only increasing output (rather than increasing the probability of outcomes) for your users… XP is a good place to start (but not necessarily end).
pydry · 1h ago
>TDD is useful in some situations, yep totally. Pair programming is useful in some situations, yes. Continuous integration; yes, much of the time. Frequent feedback; yes, sometimes
For production code I do pretty much all of these, always - at least insofar as it is possible (e.g. willing pairing partner).
Im curious to know under which scenarios you think im doing something wrong. Coz I dont think i am.
loloquwowndueo · 3h ago
No. (Betteridge’s Law dictates so)
layer8 · 2h ago
I'm gonna write a blog post titled "Does Betteridge’s Law always apply?".
binary132 · 3m ago
Does the exception disprove the rule?
andyjohnson0 · 3h ago
> No. (Betteridge’s Law dictates so)
Maybe. But its not a law. Its a vague heuristic. Thought is still required.
https://tidyfirst.substack.com/p/augmented-coding-beyond-the...
I remember he first posted 2+ years ago, back when people first realized ChatGPT might be useful for coding, that "90% of my skills are now worthless and the remaining 10% are worth 1000x"
https://tidyfirst.substack.com/p/90-of-my-skills-are-now-wor...
Clearly AI programming allows you to quickly close feedback loops. I don't think everything needs a comprehensive set of unit tests though.
But if people can go back and understand the core concept of XP (which again is about feedback loops to me) and take advantage of LLM-based agent systems to create those tight closed feedback loops, then that will be an advance for software engineering.
There's a difference in the tests of that era though. Around the xp times, unit tests were for unit of functionality, not per-method.
Either that or tracing/logging/debugging, but other than specific niches like parsing (of specific bug repros) I think integration tests are generally a lot more bang for the buck.
Anyway, if you want to go down a related-but-unrelated rabbit hole, J.R. Thompson's lecture on the Space Shuttle Main Engines is a good one. You can probably watch it at higher speed to smooth out the many, many "uh"s (believe me, it's bad):
Integrated testing: https://youtu.be/uow6v1EuybE?t=1292
Test to failure: https://youtu.be/uow6v1EuybE?t=3135
https://ocw.mit.edu/courses/16-885j-aircraft-systems-enginee...
--
There's this more-modern link but in true modern fashion you can't really link to specific things presumably because it's all javascript muck: https://openlearninglibrary.mit.edu/courses/course-v1:MITx+1...
“Unit tests are small tests, each one exercising a little piece of functionality. The units tested are usually individual methods, but sometimes clusters of methods or even whole objects.”
Extreme Programming Explained: Embrace Change, 2nd Edition (2004) Kent Beck
Funny how some of it is now day-to-day, and other parts of it would be considered extremely weird.
From your perspective, which bits of XP would you consider weird?
To me, most orgs don't practice any kind of sensible methodology at all. Waterfall implies a rigor they don't have.
Then there's the definition - like, is SAFE really agile plus so many other hybrid approaches that have veneer of agile as long as we get all requirements up front and have detailed plan.
Actual waterfall looks very much like actual agile, in that it is designed around iteration loops. The primary difference is that waterfall prescribed steps in the iteration process, and agile is just a set of principles in a manifesto.
Edit: reference: https://beza1e1.tuxen.de/waterfall.html
TLDR: the original impetus for waterfall is basically what we call agile today.
Someone copy-pasted a random chart from a paper (one the paper specifically said was too problematic) into a DOD process spec, that turned into a standard because the DOD loves to standardize everything, and big companies all adopted the fundamentally flawed approach and called it waterfall.
No, Waterfall was not agile, it was the diagram from Royce but not what he recommended from his paper (which tore down that diagram). What Royce added to that diagram (fundamentally, just common sense with feedback loops) was closer to agile, though. Royce himself never called anything Waterfall, but what was termed Waterfall was the bad process he tore apart.
In that case, I don't believe companies follow either. I've never seen anything as principled (in any form) practiced anywhere.
Companies claiming to do Agile were usually doing some rituals and cosplaying as agile. I don't believe I've ever seen a company doing "waterfall" or anything resembling what your link describes either.
They mostly do chaos-driven development.
This excellent writeup by David Olson gives both the history and the correct understanding; The Myth of the 'Waterfall' SDLC - http://www.bawiki.com/wiki/Waterfall.html
Behind the scenes the PMs are making Gantt charts and deciding what's in and what's out and who is going to do it, without the team having any input or really getting to cost it out.
XP and agile generally was supposed to about shortening the communication and iteration gap between customer and maker. I almost never really see that.
I meant in my experience, the methodology most companies I've worked in seems to follow is capital-C Chaotic. Requirements change at the whim of customers or leadership week to week, pivots are frequent and unpredictable, leadership gets fired/quits and the whole plan changes, lots of effort is wasted on stuff that then gets ignored, and customers are sold one thing but delivered another.
I don't believe organizations or companies follow either Agile (any brand of it) or Waterfall. I don't think what they do can be called a methodology at all.
If you pair program with someone else on your team, you both learn what the other is thinking. You both become more familiar with what the code is doing, and why it's doing it.
If you "pair program" with an AI, anything it learned, it forgets as soon as the prompt is closed.
So don't think that's what he's talking about here. He's talking about XP, with humans, just like in the 1990s. There may be some AI in there too, but that's not where the XP part comes from.
If that's not what you're doing, you're likely doing it wrong.
> If you pair program with someone else on your team, you both learn what the other is thinking. You both become more familiar with what the code is doing, and why it's doing it.
Yes.
> If you "pair program" with an AI, anything it learned, it forgets as soon as the prompt is closed.
Same with humans, including your future self. So pair on docs.
TL;DR: You should absolutely be XP pair programming with your LLM.
Maybe we need a new term, maybe we don't, but it's not pair programming if you're doing it with an LLM.
If you want AI slop everywhere, that is.
TDD is useful in some situations, yep totally. Pair programming is useful in some situations, yes. Continuous integration; yes, much of the time. Frequent feedback; yes, sometimes, for some types of work which doesn't require deep focus...
It just doesn't work as a blanket 'XP' paradigm because you rarely need all these parts all the time, at the same time. IMO, this is why Extreme Programming lacks gumption as a concept. It feels like a bunch of good ideas thrown together. If there was some kind of synergy between those ideas and practices, the concept of XP would be more important.
As it stands today, everyone is implementing maybe 1 or 2 aspects of XP, but almost nobody is implementing ALL of XP... So nobody can claim that they're adhering to XP.
This is not the same as as 'Agile' because with Agile; the vast majority of big companies are implementing maybe 90% of agile practices, with 70% fidelity... This consistency is enough for companies to identify themselves as 'Agile'. I've worked for many companies which implemented ALL of the Agile practices but not one of them actually implemented them exactly as taught in the Agile Manifesto. I think the closest one I worked for was maybe 90% of the way there; they even followed the story point system exactly and used a packet of cards with numbers on them to allow people to vote during Sprint Planning meetings... but anyway, pretty much all the companies/projects I worked for identified themselves 'Agile' because all the practices fit into a single paradigm and there was value in adopting all of them. After a while, it became easier for project managers to just say "Let's switch to Agile" instead of saying "Let's time-box our development work into short increments, with a planning meeting, refinement meeting and retrospective meeting for each 2-week increment."
For production code I do pretty much all of these, always - at least insofar as it is possible (e.g. willing pairing partner).
Im curious to know under which scenarios you think im doing something wrong. Coz I dont think i am.
Maybe. But its not a law. Its a vague heuristic. Thought is still required.