Files
davideisinger.com/static/archive/davegriffith-substack-com-o74bc9.txt
David Eisinger 988f214638 Add links
2025-12-01 12:38:31 -05:00

492 lines
24 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[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/