Logo
Join the CTO Newsletter for free!
 
Amazing CTO Logo

Amazing CTO | More happiness and success
🚀 116.4

by Stephan Schmidt

Happy 🌞 Sunday,

Welcome to my opinionated newsletter. This week’s insights

  • 🤔 The End of Programming
  • 🎭 Thoughtworks CTO: AI Means We Need Developers More Than Ever
  • 🎯 Hyper-Typing

Good reading, have a nice Sunday ❤️ and a great week,

Stephan
CTO-Coach and CTO-veteran

Need support as an engineering manager? Thought about coaching? Let's talk—I helped many CTOs and engineering leaders with growth and making the right decisions under pressure, I can help you too.
🎁

If you only read one thing

The End of Programming (9 minute read)

“I came of age in the 1980s, programming personal computers such as the Commodore VIC-20 and Apple ][e at home.” Ha, like me! Studied CS, like me! Uncanny, “Programming will be obsolete. I believe the conventional idea of “writing a program” is headed for extinction, and indeed, for all but very specialized applications, most software, as we know it, will be replaced by AI systems that are trained rather than programmed.” I could have written that. Who is this guy? Oh, he wrote that in 2023. I only came to that conclusion in 2024. So not me :-( Good thoughts so, “The new atomic unit of computation becomes not a processor, memory, and I/O system implementing a von Neumann machine, but rather a massive, pre-trained, highly adaptive AI model.” This is the future, prepare for it. I recently had a discussion with a client about my three-step model of AI-replacing-software (remember, AI is not software!). 1. AI with an agent adding and changing code. 2. AI as a compiler (see article about requirements). 3. AI as a “massive, pre-trained, highly adaptive AI model”. You’re at 1, prepare for 2 and think about 3.

https://cacm.acm.org/opinion/the-end-of-programming/


Stories I’ve enjoyed this week

Thoughtworks CTO: AI Means We Need Developers More Than Ever (30 minute read)

Read it. And of course I disagree. I tried to find something in the article to agree with (don’t be so negative!) mostly because in my mind Thoughtworks I want them to be the titans they were in my formative engineering manager years. But it’s hard. AI not helping with legacy code? Much better with legacy code. AI creating more legacy code? Only if you need to read it. AI apps being hacked by hackers, so the AI does not know about security? I’m sure the hackers used an AI. But then Thoughtworks has been renting out developers for decades and working mostly with large companies. I don’t want to shoot the company - it’s more about: How much does your company drive your view on the world? Like Volkswagen screwing up software development again and again. Ha, found something to agree with: “Right now, it’s about getting teams to adopt these new AI tools to test boundaries” PLUS the article gets better in the end. Read it.

https://thenewstack.io/thoughtworks-cto-ai-means-we-need-developers-more-than-ever/


Hyper-Typing (6 minute read)

Recently I wrote about how AI might repulse the last five years’ drive for more types. As a strong typist myself (since ~1995 when Java arrived), pushing for more static typing, today I think we’re at a turning point. DHH of Rails fame stopped supporting TypeScript. The pendulum seems to swing, and AI does not care as much about types for correctness and readability as developers do. fun a(c:Customer) helps me understand the code, fun a(c) works the same for an AI with a context window as large as the codebase. Customer is not adding anything for the AI. From the article: “I describe a phenomenon I call ‘hyper-typing’, where libraries - in pursuit of perfect type safety - end up with overly complex types that are hard-to-understand” My inflection point came while coding for the startup of my wife in Scala. Very complex types ensured nice correctness properties (like a function needs to have a WriteIO environment or it can’t write), but resulted in type error stack traces I had trouble understanding. Some say AI helps here (e.g., AI makes Rust easier), but with AI, why have types at all?

https://pscanf.com/s/341/


Your MVP didn’t fail; you didn’t set it up to teach you anything (9 minute read)

“The number one mistake? Treating the MVP like a mini version of the final product: smaller, scrappier, but still held to the same success metrics as a full launch.” Yes. BUT to me the number one mistake is different. People want too much from the MVP. In my 7P framework (not selling!) it’s Prototype -> MVP -> PMF -> Traction. Prototype: Show something around and play with an idea to decide if you think it’s worth building. MVP: Build something minimal that you can show customers and they can use to get a job done. PMF: Change that product so it fits the market. Traction: Find a channel (sales/marketing) to scale the customer base. Often companies fuse these 4 things into one stage, which confuses them and they are stuck and never get PMF.

https://elsevanderberg.substack.com/p/your-mvp-didnt-fail-you-didnt-set


Study Finds ChatGPT Drives Down Freelance Work, Pay (3 minute read)

“The release of ChatGPT led to a 2% drop in the number of writing jobs on one major freelance employment platform and a 5.2% plunge in monthly earnings, a new study found.” Looks like a small effect for now, though the more important number is the 5.2% plunge in monthly earnings, which looks like AI is driving down writers’ wages (even more). 2% might be inside the error margin, but the more studies and less opinions, the better (this being an opinion).

https://www.yahoo.com/entertainment/study-finds-chatgpt-drives-down-173825149.html


Technological unemployment in the age of Waymo (39 minute read)

What I like about this article is it’s not blanket “AI will destroy driver jobs” but does crunch some numbers looking into costs. My takeaway: with the current cars, AI doesn’t replace all drivers. We would need smaller, two-seater, cheaper cars than (well, Waymo is using Jags :-) we currently use. Again, love someone putting in numbers.

https://www.2120insights.com/p/how-autonomous-vehicles-will-change


Experts have it easy (15 minute read)

The difference between an expert and a novice? “Often this trap is far trickier than anything an expert would let themselves get into. Novices, on the other hand, can easily make a sequence of bad decisions that result in an ever-increasing cost of solving the problem at hand.” Experts know where not to go. Watching quite some chess, it seems to me top chess players know in which direction the game to take, and what areas to avoid.

https://boydkane.com/essays/experts


Coding Without a Laptop - Two Weeks with AR Glasses and Linux on Android (12 minute read)

The future? My glasses are on their way (My first-gen Oculus are not good enough)

https://holdtherobot.com/blog/2025/05/11/linux-on-android-with-ar-glasses/


Leeks and leaks (4 minute read)

Tor suggests changes to the handling of .onion urls, curl implements the changes, Tor releases a new tool that breaks because of the curl changes, that were made on the suggestion of Tor in an RFC. a.) Software development is difficult because of dependencies, b.) Unforeseen Consequences #HL2

https://daniel.haxx.se/blog/2025/05/16/leeks-and-leaks/


You’re misunderstanding DDD in Angular (and Frontend) (26 minute read)

Nice. BUT. The biggest problem with DDD (as with everything coming out of development that wants to change the whole company and is not CEO understood and backed), other departments DO NOT CARE. They do not see any benefit for them and they don’t have the time to work with you on an ubiquitous language and on domain boundaries. Why should they restrict themselves for your benefit?

https://www.angularspace.com/youre-misunderstanding-ddd-in-angular-and-frontend/


A leap year check in three instructions (15 minute read)

One myth developers believe is the computer executes their code. It doesn’t. It executes something completely different. From the article - a developer might write:

bool is_leap_year(uint32_t y) {
    if ((y % 4) != 0) return false;
    if ((y % 100) != 0) return true;
    if ((y % 400) == 0) return true;
    return false;
}

But the compiler might change it to:

bool is_leap_year2(uint32_t y) {
    if ((y & 3) != 0) return false;
    if (y * 3264175145u > 171798691u) return true;
    if ((y & 15) == 0) return true;
    return false;
}

Not only might it change optimize the code but essentially change the algorithm (multiplication/and vs. mod). While developers today resist the notion of an AI creating code they do not understand or read, or isn’t exactly what they wrote, they have been living with this for a decades.

https://hueffner.de/falk/blog/a-leap-year-check-in-three-instructions.html


My books

  • AI for Engineering Managers
  • Amazing CTO - #1 bestseller
  • Engineering Role Descriptions
  • Startup Phases For CTOs
  • Developer Accountability
  • Hiring Developers
Join the CTO newsletter!
Impressum