A lot of examples of creating clones of existing products don't resonate with new products we build
For example, most development work involves discovering correctness, not writing to a fullproof spec (like cloning slack)
Usually work goes like:
* Team decides some vague requirement
* Developer must implement requirement into executable decisions
Now I use Claude Code to do step 2 now, and its great. But I'm looking over whether the implementation's little decisions actually do what the business would want. Or more accurately, I'm making decisions to the level of specificity that matters to the problem at hand.
I have to try, backtrack, and rebuild all the time when my assumptions get broken.
In some cases decisions have low specificity: I could one-shot a complex feature (or entire app if trying to test PMF or something). In other cases, the tradeoffs in 10 lines of code become crucially important.
Well some of us have a distracting “home mode” that we enjoy mandatory focus / phones off / quiet of a theater.
Barking dog, kids asking me to do something for them, loud YouTube in the next room, someone wants to engage in conversation, slack message from coworker with my work laptop nearby
Post WW2 was a time of labor scarcity the US benefited from - but eventually that went away with global competition. The tech boom years were another labor scarcity time, and that’s also going away.
Both these times were plausible ways of entering the middle class.
What does economic theory say should happen to labor when scarcity ends but capital is strong? Does the economy expand until there’s more labor demand? Or will structural and monopolistic problems cause capital to benefit while suppressing wages - making us all serfs?
Any system based on exponential growth will have almost all people become serfs as even if their capital grows it falls behind the growth of older capital
"War begins to be presented as the heroic alternative, the last hope, the “way out” from the unending nightmare of economic crisis, misery and unemployment. Fascism, the most complete expression of modern capitalism, glorifies war. The filthy sophism “War means Work” begins to be circulated by the poison agencies of imperialism, and filters down to the masses.
...
War is only the continuation and working out of the crisis of capitalism and of the present policies of capitalism. It is inseparable from these, and cannot be treated in isolation. All the policies of capitalist reorganisation, all the policies of Fascism, can only hasten the advance to war. This is equally true of the line of a Roosevelt, a MacDonald or a Hitler. War is no sudden eruption of a new factor from outside, a vaguely future menace to be exorcised by special machinery, but is already in essence implicit in the existing factors, in the existing driving forces and policies of capitalism."
Even with a perfect coding agent, we code to discover what correct even is.
Team decides on vague requirements, then you actually have to implement something. Well that 'implementing' means iterating until you discover the correct thing. Usually in lots of finicky decisions.
Sometimes you might not care about those decisions, so you one shot one big change. But in my experience, the day-to-day on a production app you can 100% write all the code with Claude, but you're still trying to translate high level requirements into "low"-level decisions.
But in the end its nice not to care about the code monkey work going all over a codebase, adding a lot of trivial changes by hand, etc.
With consulting you make some $X * N consultants on staff
With products you hope to make $X * N units sold. Staffing to build product + make those N sales takes something like log(N) sold units.
At least that's the dream. Consulting requires little upfront capital investment. Products often require a constant, but large, upfront capital investment
It doesn’t help that now other potential growth markets for AWS, like the EU, now are getting pushed to have more and more data sovereignty due to the administrations antipathy towards allies. Musk can whine all he wants about the EU, but that’s like complaining about customers that don’t want to buy your products instead of building a good product they trust and want to buy.
Every tech company assumed they would be the benefactors, not victims, of AI. And investors now see that without the alleged AI growth, these companies at best look like stable utilities, not high growth stocks. At worse companies look like they make highly replaceable software as software stops being a moat.
Moreover they look like large, inefficient organizations with a lot of human veto points that prevent innovation (requiring more human coordination is an anti moat now)
Was software ever a moat? Software typically only gave companies a small window of opportunity to turn a fleeting software advantage into a more resilient moat (network effects, switching costs etc.)
Yes, I would argue good (stable, fast, easy to use) software was somewhat of a moat and much harder before coding agents.
Stripe, Square, Shopify, Google, all thrived in some part because their services take a hard problem and make it easier to use. Now more people can take a hard problem and make it easier to use.
All you have to do is look around (esp 5+ years ago) and see the many many BAD, unstable, hard to use, slow, etc versions of these companies
Windows' moat was not the operating system code, but that they were able to get distribution via IBM, and then grow an ecosystem of applications that were targeted at Windows, which created a snowball effect for further applications.
Yes I think any codegen with a lot of tests and verification is more about “fitting” to the tests. Like fitting an ML model. It’s model training, not coding.
But a lot of programming we discover correctness as we go, one reason humans don’t completely exit the loop. We need to see and build tests as we go, giving them particular care and attention to ensure they test what matters.
For example, most development work involves discovering correctness, not writing to a fullproof spec (like cloning slack)
Usually work goes like:
* Team decides some vague requirement
* Developer must implement requirement into executable decisions
Now I use Claude Code to do step 2 now, and its great. But I'm looking over whether the implementation's little decisions actually do what the business would want. Or more accurately, I'm making decisions to the level of specificity that matters to the problem at hand.
I have to try, backtrack, and rebuild all the time when my assumptions get broken.
In some cases decisions have low specificity: I could one-shot a complex feature (or entire app if trying to test PMF or something). In other cases, the tradeoffs in 10 lines of code become crucially important.
reply