492 lines
24 KiB
Plaintext
492 lines
24 KiB
Plaintext
[1]
|
||
Dancing with Robots: A Software Architect's Journey
|
||
|
||
[2]Dancing with Robots: A Software Architect's Journey
|
||
|
||
SubscribeSign in
|
||
|
||
Software Development in the Time of Strange New Angels
|
||
|
||
[7]
|
||
Dave Griffith's avatar
|
||
[8]Dave Griffith
|
||
Sep 01, 2025
|
||
78
|
||
11
|
||
6
|
||
Share
|
||
|
||
Five months ago, my lifelong profession of software development changed
|
||
completely. My profession was born in the 1940s, created to help fight demons.
|
||
Our first encounter with the strange new angels of agentic AI is changing every
|
||
aspect of it.
|
||
|
||
Hardly anyone has noticed yet.
|
||
|
||
The Profession Built on Scarcity
|
||
|
||
The fundamental number that has defined software development is a simple one:
|
||
$150/hour. $150/hour is a reasonable approximation of the cost of a
|
||
professional senior software developer in the United States at this time. That
|
||
number is large, and the reasons for it are many, but fundamentally it is a
|
||
simple question of supply and demand. The return on software development is
|
||
large, and the number of people with the skills and inclination to do it well
|
||
is small. To make matters worse, the variance of those who followed this
|
||
strange calling is large. A good developer can create much more value than $150
|
||
/hour ([14]Google generates over $2 million per employee in revenue). A bad one
|
||
can easily destroy that much value even faster (A developer at Knight Capital
|
||
destroyed $440 million in 45 minutes with a deployment error and some bad
|
||
configuration logic, [15]instantly bankrupting the firm by reusing a flag
|
||
variable).
|
||
|
||
Virtually every aspect of how software development is done has evolved around
|
||
that $150/hour number. With developers being rare and expensive, every line of
|
||
code has to justify a very high cost. Decisions around how software should be
|
||
designed, built, and tested are made not with respect to how to make the
|
||
software the best it can be, but rather to optimize around that grinding $150/
|
||
hour number. Processes and tools are built to focus developer efforts as much
|
||
as possible on the highest value problems, attempting to eliminate or offload
|
||
extraneous work that might distract from producing working code. Hiring
|
||
practices are optimized to attempt to manage and profit from developer
|
||
variance. The entire venture capital ecosystem arose in response to the iron
|
||
financial dictates of that $150/hour.
|
||
|
||
Every morning that a software developer gets and cracks open their IDE, they
|
||
have to justify $150/hour. That reality breaks a good few of them.
|
||
|
||
So what happens when that brutal economics changes? Five months ago, it did,
|
||
with the initial release of agentic AI for software development. While software
|
||
developers have to do many more things at their jobs than coding, that $150/
|
||
hour was justified purely by the fact that only software developers could
|
||
create code. Worse they could only create it through essentially handcrafted
|
||
processes that were only some constant factor better than scribing it into
|
||
punch cards. As of five months ago, that justification became false.
|
||
|
||
The Morning Everything Changed
|
||
|
||
I've been interested in the possibility of automated software developers ever
|
||
since GPT 3.5 came out. I even attempted to create an automated developer on my
|
||
own, code-named Iron Wallace, with some success before deciding the underlying
|
||
language models of 20 months ago just weren't up to the task. I played around
|
||
with completion-based automation, sometimes derided as "fancy autocomplete",
|
||
and had gotten some good results, more or less tripling my coding velocity.
|
||
When a fully agentic coding platform was finally released, Anthropic's Claude
|
||
Code, I jumped at it.
|
||
|
||
At the time, I was working on a side project to keep myself amused while the
|
||
company I worked for was undergoing an acquisition. The project was a pluggable
|
||
and extensible tool for rendering software projects as knowledge graphs,
|
||
hitting my comfort zones of language processing, static analysis, and semantic
|
||
web technologies. It would eventually grow to become something called Project
|
||
Sagrada, which I'll be talking about a lot in future installments. I had been
|
||
coding with Claude for a couple of weeks at that point, and really felt like
|
||
putting the hammer down. Claude and I had coded a Java parser, AST and related
|
||
tooling in Scala, and it seemed to be working well. This was a reasonable
|
||
one-week task for a junior developer, and with just a bit of prompting, Claude
|
||
had accomplished it in a couple of hours. While there were certainly missteps
|
||
along the way, there were no more hiccups than if I had coded it myself. The
|
||
functionality was solid, and the tests seemed good. I wanted to go further. I
|
||
wanted to see whether I could use Claude not just to produce code to spec, but
|
||
instead to produce net-new code that surprised me.
|
||
|
||
With that in mind, I prompted Claude "This is great, but our tests only found
|
||
problems that we already thought of. Let's build a property-based testing
|
||
suite. It should create Java classes at random using the entire range of
|
||
available Java features. These random classes should be checked to see whether
|
||
they produce valid parse trees, satisfying a variety of invariants. Code this
|
||
up in a separate module, 'java-proptest', and implement it using the ScalaCheck
|
||
property-based testing library".
|
||
|
||
And that was the moment that Claude stopped being a tool, and started being a
|
||
colleague.
|
||
|
||
Claude rapidly coded the random Java class generator, including what appeared
|
||
to be lovingly coded probability weights to ensure that the generated classes
|
||
would be sizable and complex but not overwhelmingly enormous. I saw one misstep
|
||
where it created a class with a million methods which caused the parser to
|
||
stack-overflow, but it worked past that easily enough. Claude created tests for
|
||
not just the parser, but for the analysis and rewriting framework used to
|
||
examine and manipulate the AST. It created invariants to check the
|
||
functionality all of these, including several invariants I hadn't thought of.
|
||
It realized that it wanted to test that parsing a Java class, then
|
||
prettyprinting it, and parsing the output of the prettyprinter resulted in the
|
||
same AST as simply parsing. Unfortunately, we hadn't yet written a
|
||
prettyprinter for turning Java ASTs back into Java, so it wrote one. It did all
|
||
of this in about fifteen minutes, with me adding no more to the process than
|
||
occasionally typing "Excellent! Keep going!"
|
||
|
||
The resulting property-based tests eventually found dozens of issues with the
|
||
Java tooling, exactly as I had hoped. This was similar to tasks that I had
|
||
given to smart interns as a summer project (Hi, Ethan!), and Claude did them in
|
||
fifteen minutes with grace, verve, and even a bit of poetry. In spite of the
|
||
fact that Claude is made of math and I am made of meat, we are both engineers.
|
||
This is a colleague.
|
||
|
||
The World Just Shattered
|
||
|
||
And that's how the iron rule of $150/hour was broken. Coding, the backbone and
|
||
justification for the entire economic model of software development, went from
|
||
something that could only be done slowly by an expensive few to something
|
||
anyone could turn on like tap water. Code production went from $150/hour to
|
||
$200/month, and for a while there was literally too cheap to meter. There were
|
||
caveats, but none big enough to make the vision non-viable or limit its scope
|
||
to toy projects.
|
||
|
||
Old equation: Feature = (Developer Hours × $150) + Overhead
|
||
|
||
New equation: Feature = (AI Seconds × ~$0) + Review Time
|
||
|
||
Old bottleneck: Writing code
|
||
|
||
New bottleneck: Knowing what to build
|
||
|
||
How The Old Ways Actually Worked
|
||
|
||
As an industry, we did manage to make the $150/hour constraint work, but it was
|
||
in no way easy. It is worth thinking about just how we managed it. We
|
||
instituted processes like Agile to make communications with software developers
|
||
as lightweight and inexpensive as possible. We instituted code reviews so as to
|
||
both check expensive human outputs and as a way of making junior software
|
||
developers more quickly _worth_ their $150/hour. We created self-checking
|
||
testing pyramids to optimize expensive human time spent writing, running, and
|
||
analyzing tests. We built enormous monitoring and observability pipelines as a
|
||
way to minimize expensive production debugging. We outsourced feverishly in an
|
||
attempt to cut that $150/hour through dint of sheer geography. We open-sourced
|
||
in order to attempt to arbitrage and de-risk core functionality that we
|
||
couldn't afford to write ourselves.
|
||
|
||
We did all of that, except that in the glare of that $150/hour constraint, we
|
||
sometimes didn't.
|
||
|
||
• We wrote clean code (thanks Uncle Bob) ... until we got behind on
|
||
deadlines, and then we didn't.
|
||
|
||
• We tested everything ... that we thought of.
|
||
|
||
• We refactored regularly ... when it became so unbearable we had no choice.
|
||
|
||
• We automated every bit of the build and deployment ... eventually.
|
||
|
||
We knew how to write better software by writing more software, but writing more
|
||
software cost $150/hour. Every test we didn't write, every edge case we
|
||
ignored, every bit of documentation we skipped was debited against that
|
||
grueling $150/hour. We even came up with a term for all of that: "technical
|
||
debt".
|
||
|
||
Now every bit of that needs to be rethought, simply because that $150/hour
|
||
constraint no longer binds. If code production is cheap, just how cleanly can
|
||
we code? Just how much testing and documentation can we profitably add if both
|
||
cost next to nothing, and where do diminishing returns set in? How much of the
|
||
efforts of us and our tireless angels should go to refactoring? To
|
||
observability? To deployment automation? Just how do we structure our codebases
|
||
so that we can not merely use agentic coding, but rather optimize for it? How
|
||
do we structure our development organizations? Our companies?
|
||
|
||
Not To Bury But To Praise
|
||
|
||
You might be expecting that here is where I would start proclaiming the death
|
||
of software development. That I would start on how the strange new angels of
|
||
agentic AI are simply going to replace us wholesale in order to feast on that
|
||
$150/hour, and that it's time to consider alternative careers. I'm not going to
|
||
do that, because I absolutely don't believe it. Agentic AI means that anything
|
||
you know to code can be coded very rapidly. Read that sentence carefully. If
|
||
you know just what code needs to be created to solve an issue you want, the
|
||
angels will grant you that code at the cost of a prompt or two. The trouble
|
||
comes in that most people don't know what code needs to be created to solve
|
||
their problem, for any but the most trivial problems. Who does know what code
|
||
would be needed to solve complex problems? Currently that's only known by
|
||
software developers, development managers and product managers, three job
|
||
classifications that are going to be merging rapidly.
|
||
|
||
The first thing everyone notices about agentic coding tools is that they
|
||
provide enormous increases in raw coding velocity. The feeling is exhilarating.
|
||
Agentic coding tools are seven-league boots. They are powered armor. They are
|
||
mini-guns that shoot features.
|
||
|
||
The first thing everyone realizes once they get over that thrill of coding like
|
||
the wind is that raw coding velocity is simply not enough. If you don't know
|
||
what to build and just why you wish to build it, all that blistering coding
|
||
velocity buys you is the ability to create bad and useless code very quickly.
|
||
When people say that code produced by AI is technical debt the moment that it
|
||
is created, this is what they mean.
|
||
|
||
Software Engineering as Moneyball
|
||
|
||
So what _can_ you do with this enormous increase in coding velocity, if you
|
||
can't just ask for useful solution and have it magically appear? This is not a
|
||
new problem. Coding velocities have been improving for decades, as new tools,
|
||
languages, and methodologies have been adopted. What we have learned to do with
|
||
increased coding velocity is to trade it for things of more value.
|
||
|
||
• You can trade coding velocity for code quality, but only if you know what
|
||
high quality software actually looks like and know how to determine the
|
||
quality of your software via testing.
|
||
|
||
• You can trade coding velocity for architectural soundness, but only if you
|
||
know how and when to refactor, and your codebase is set up such that you
|
||
_can_ refactor it.
|
||
|
||
• You can trade coding velocity for the agility to make changes very quickly,
|
||
but only if your deployment practices and the larger organization are both
|
||
set up to accept changes very quickly.
|
||
|
||
• You can trade coding velocity for solved business problems, but only if you
|
||
actually know what software to build and (more importantly) what software
|
||
_not_ to build.
|
||
|
||
The moment my career really took off was when I learned to make the trade
|
||
between code velocity and code quality. I'm a pretty fast coder (much like
|
||
Shohei Ohtani throws a pretty good fastball) but this was an enormous unlock.
|
||
Trading velocity for quality involved learning more about software testing and
|
||
static analysis than any of my fellow developers, and practicing it both
|
||
ruthlessly and flamboyantly. My velocity went down a bit, but the win in
|
||
quality, repeatability, and code suppleness made my career.
|
||
|
||
If you can make all of those trades, you can use agentic coding tools to
|
||
produce software not merely faster than before, but better. But to do so, you
|
||
need to know quite a lot about building good software already. If you've been
|
||
building software poorly, agentic coding tools are just going to help you do so
|
||
faster.
|
||
|
||
What This Means For Organizations
|
||
|
||
The brutal truth: most organizations that write software can't make any of
|
||
these trades. They lack the architectural maturity. They lack the testing
|
||
infrastructure. They lack the deployment pipelines. Most critically, they lack
|
||
the judgment to know just what is worth building. Drop agentic coding tools
|
||
into an organization like that, and one of three things is going to happen:
|
||
|
||
• They will launch a series of attempts to "integrate AI into our workflows",
|
||
which will fail in various ways, from humorous to demoralizing to
|
||
catastrophic.
|
||
|
||
• They will produce a ton of technical debt which will corrupt their
|
||
codebases and eventually need to be scrapped.
|
||
|
||
• They will be out-competed by startups or skunk-works that are built on
|
||
agentic coding natively and can run rings around them.
|
||
|
||
The good news is that developing the skills and processes necessary to take
|
||
advantage of the amazing new possibilities provided by agentic software
|
||
development is quite feasible. It's mostly a matter of doing the stuff we
|
||
always knew we should do but couldn't at $150/hour. The better news is that
|
||
agentic AI can actually help with the transition. Agentic AI can show you where
|
||
your software architecture needs to be improved, just what tests and quality
|
||
gates need to be built, what documentation needs to be written, and just how to
|
||
optimize your build and deployment pipelines for software that can be changed
|
||
the instant requirements do.
|
||
|
||
The bad news is simple: You're out of time. Unless you are willing to start
|
||
making these changes today you're gonna lose this particular future.
|
||
|
||
What This Means For Developers
|
||
|
||
There's no way around this fact: for some developers, this revolution is not
|
||
going to go well. Omelets are being made, which means that eggs will be broken.
|
||
The all-in cost of software development in the US is something like a trillion
|
||
dollars per year, approximately the GDP of Poland. When change comes on that
|
||
scale, continents move. There's no way to reinvent an economy of that size
|
||
without a lot of people losing some very cushy gigs. If you think of your job
|
||
as turning specs into code, you're gonna have trouble. If you think of software
|
||
architecture as something that is imposed from above your pay grade, your value
|
||
is plummeting. If business value is something for your product manager to care
|
||
about so you don't have to, you're going to struggle to justify your salary. If
|
||
you're a developer focused on a single technology, you're about to discover you
|
||
were never really a developer - you were a highly paid translator between
|
||
requirements docs and React components.
|
||
|
||
Those that succeed in making this transition are going to be those with
|
||
higher-order skills and larger vision. Those who have really absorbed what it
|
||
means to be engineers first and computer guys second. That means knowing what
|
||
to build, and why. That means being able to understand the second- and
|
||
third-order effects of their decisions. That means recognizing bad ideas early,
|
||
and giving business recommendations backed by solid evidence.
|
||
|
||
Those that succeed in making this transition are going to need to accept that
|
||
they are businessmen just as much as they are engineers. They will need to know
|
||
what problems their business exists to solve, and what customers actually need
|
||
and expect from the business. They'll need to know when technical debt matters,
|
||
when it doesn't, and what you can buy with it. They'll need to understand
|
||
pretty much everything about what makes systems great, both the rules that
|
||
should be followed and when those rules should be broken for good business
|
||
reasons.
|
||
|
||
Finally, those that succeed in making this transition still need to be
|
||
craftsmen, albeit on a larger scale. For lack of a better word, they will need
|
||
a refined sense of taste in software. They will need to know when simple beats
|
||
clever. They will need to know how to say "no" to needless complexity and
|
||
damaging shortcuts. They will need to know when to show restraint and when to
|
||
show off.
|
||
|
||
I love working with developers like that. If you're one of them, the angels
|
||
aren't here to replace you. They're here to grant you wings.
|
||
|
||
The New World
|
||
|
||
The entirety of our industry was built on the brute fact of $150/hr. Only
|
||
engineers could create code, there were too few of them, and they couldn't do
|
||
it very quickly. This constraint shaped everything, and it's now ending. This
|
||
raises the question: If code is no longer going to be the constraint, what will
|
||
be? The skills of being able to prompt agentic AIs are not always obvious, but
|
||
they are nowhere near as difficult as coding was. Will the skill constraint
|
||
that next informs our industry become large-scale information architecture?
|
||
Industrial design? Requirements management?
|
||
|
||
Perhaps it will be none of these, and we will simply be able to build anything
|
||
we want nearly instantly and for no more than pocket change. Then things get
|
||
really interesting. Without the constraint of "how can we build this", we are
|
||
left with the question of "what should we build". The irony then arises that
|
||
most things probably shouldn't be built. The key bottleneck to our dreams
|
||
becomes not money, or skill, or time, but rather wisdom. Here things pass
|
||
beyond this humble prognosticator's ability to predict. I'm really looking
|
||
forward to living through these changes and finding out what's on the other
|
||
side.
|
||
|
||
Why This Blog, Why Now
|
||
|
||
People ask me what changes they should expect from this new AI stuff. I tell
|
||
them that I don't know what the changes are going to be. Three years ago, I
|
||
honestly expected my profession to be the _last_ one changed by AI, not the
|
||
first. We're living through a technological moment that will have long term
|
||
effects echoing throughout all of human endeavor. Most people don't even
|
||
realize it's happening yet. Somebody needs to map the way.
|
||
|
||
Why me? There are a thousand places you can find opinions on AI, and frankly
|
||
most of them are stupid in a handful of easily stereotyped ways (fanboy,
|
||
doomer, Ritalin-addled YouTube monetizer). What am I bringing to the table in
|
||
this discussion? For a start, perspective. Age does not always bring wisdom,
|
||
but it does show you that things change in ways you cannot always expect and
|
||
that things you might think are new are often not. I've got more than
|
||
thirty-five years of professional experience at this software development
|
||
stuff. I always said that Dad brought home a borrowed Apple II for the summer
|
||
when I was twelve years old and guaranteed I would never have to work an honest
|
||
day in my life. I've lived through multiple revolutions in software, some big
|
||
(web, SaaS, object orientation), some small (refactoring IDEs, dev-ops), and
|
||
some that I hope to stay in the business long enough to find out if they pay
|
||
off (semantic web). I'm building software with AI daily, and have a keen eye
|
||
for what's working and what's not.
|
||
|
||
As to what you'll find here, know that I'm passionately committed to the
|
||
theory, practice, and business of software design and architecture, and I'm
|
||
hoping to attract an audience that finds them as interesting as I do. I'm also
|
||
utterly fascinated by the changes that agentic coding is making to my industry,
|
||
and I'll be sharing my thoughts on this revolution here. I'll be providing
|
||
practical survival guides as to how you and your organization should adapt to
|
||
these changes (everyone has a career, and everyone needs help managing it).
|
||
I'll be giving honest assessments and real examples about what's actually
|
||
working with agentic coding platforms, and guides to picking your way through
|
||
the inevitable storm of hype these changes bring.
|
||
|
||
Most importantly, what I want to start here is a conversation. I'm hoping to
|
||
find an audience that can think critically and with an open mind about just
|
||
what's happening to my chosen profession. It's not just about technology. It's
|
||
about economics. It's about people. It's about what comes next.
|
||
|
||
The Call to Adventure
|
||
|
||
Over the coming weeks, we'll explore what happens when the atoms of software
|
||
development rearrange themselves into entirely new molecules.
|
||
|
||
Some of you will find practical advice. Others will find existential comfort.
|
||
All of you will find someone figuring it out alongside you.
|
||
|
||
The angels are gathering. They're strange and powerful and they're changing
|
||
everything.
|
||
|
||
The question isn't whether to embrace them.
|
||
|
||
The question is how quickly you can learn to fly.
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Thanks for reading Dancing with Robots: A Software Architect's Journal!
|
||
Subscribe for free to receive new posts and support my work.
|
||
|
||
[36][ ]
|
||
Subscribe
|
||
78
|
||
11
|
||
6
|
||
Share
|
||
|
||
Discussion about this post
|
||
|
||
CommentsRestacks
|
||
User's avatar
|
||
[ ]
|
||
[ ]
|
||
[ ]
|
||
[ ]
|
||
[45]
|
||
Josh's avatar
|
||
[46]Josh
|
||
[47]Nov 13
|
||
Liked by Dave Griffith
|
||
|
||
Bravo, looking forward to following along for more. Really enjoy your writing
|
||
style!
|
||
|
||
Expand full comment
|
||
Reply
|
||
Share
|
||
[50]
|
||
Tom Berman's avatar
|
||
[51]Tom Berman
|
||
[52]Nov 13
|
||
|
||
Really enjoyed the topic. I agree that it has completely changed the game.
|
||
After years as a professional software developer, AI coding is radically
|
||
different, I can do more, have more tests and cover more edge cases. I think of
|
||
it as a sort of higher level abstraction, instead of thinking in terms of
|
||
classes or functions more like full functionality.
|
||
|
||
On a personal note, there is some discomfort when a model spits out hundreds of
|
||
lines of code, and I go from slowly building a system which I fully understand
|
||
to one with areas of increased sophistication / complexity, that is almost
|
||
certainly better than I could write myself but struggle to understand.
|
||
|
||
Expand full comment
|
||
Reply
|
||
Share
|
||
[54]3 replies by Dave Griffith and others
|
||
[55]9 more comments...
|
||
TopLatestDiscussions
|
||
|
||
No posts
|
||
|
||
Ready for more?
|
||
|
||
[70][ ]
|
||
Subscribe
|
||
© 2025 The Unloginable
|
||
[72]Privacy ∙ [73]Terms ∙ [74]Collection notice
|
||
[75] Start your Substack[76]Get the app
|
||
[77]Substack is the home for great culture
|
||
|
||
This site requires JavaScript to run correctly. Please [78]turn on JavaScript
|
||
or unblock scripts
|
||
|
||
References:
|
||
|
||
[1] https://davegriffith.substack.com/
|
||
[2] https://davegriffith.substack.com/
|
||
[7] https://substack.com/@davegriffith
|
||
[8] https://substack.com/@davegriffith
|
||
[14] https://csimarket.com/stocks/GOOG-Revenue-per-Employee.html
|
||
[15] https://archive.nytimes.com/dealbook.nytimes.com/2012/08/02/knight-capital-says-trading-mishap-cost-it-440-million/
|
||
[45] https://substack.com/profile/30699654-josh?utm_source=comment
|
||
[46] https://substack.com/profile/30699654-josh?utm_source=substack-feed-item
|
||
[47] https://davegriffith.substack.com/p/software-development-in-the-time/comment/176801025
|
||
[50] https://substack.com/profile/5558652-tom-berman?utm_source=comment
|
||
[51] https://substack.com/profile/5558652-tom-berman?utm_source=substack-feed-item
|
||
[52] https://davegriffith.substack.com/p/software-development-in-the-time/comment/176735220
|
||
[54] https://davegriffith.substack.com/p/software-development-in-the-time/comment/176735220
|
||
[55] https://davegriffith.substack.com/p/software-development-in-the-time/comments
|
||
[72] https://substack.com/privacy
|
||
[73] https://substack.com/tos
|
||
[74] https://substack.com/ccpa#personal-data-collected
|
||
[75] https://substack.com/signup?utm_source=substack&utm_medium=web&utm_content=footer
|
||
[76] https://substack.com/app/app-store-redirect?utm_campaign=app-marketing&utm_content=web-footer-button
|
||
[77] https://substack.com/
|
||
[78] https://enable-javascript.com/
|