Stream the latest episode
Listen and watch now on YouTube, Spotify, and Apple. See the episode transcript at the top of this page, and timestamps for the episode at the bottom.
Brought to You by
• Statsig — The unified platform for flags, analytics, experiments, and more. Most teams end up in this situation: ship a feature to 10% of users, wait a week, check three different tools, try to correlate the data, and you’re still unsure if it worked. The problem is that each tool has its own user identification and segmentation logic. Statsig solved this problem by building everything within a unified platform. Check out Statsig.
• Linear – The system for modern product development. In the episode, Armin talks about how he uses an army of “AI interns” at his startup. With Linear, you can easily do the same: Linear’s Cursor integration lets you add Cursor as an agent to your workspace. This agent then works alongside you and your team to make code changes or answer questions. You’ve got to try it out: give Linear a spin and see how it integrates with Cursor.
—
In this episode
For an AI startup today, what language would be the best choice: Python, TypeScript, Go or Rust?
Armin Ronacher is the creator of the Flask framework for Python, was one of the first engineers hired at Sentry, and now the co-founder of a new startup. He has spent his career thinking deeply about how tools shape the way we build software.
In this episode of The Pragmatic Engineer Podcast, he joins me to talk about how programming languages compare, why Rust may not be ideal for early-stage startups, and how AI tools are transforming the way engineers work. Armin shares his view on what continues to make certain languages worth learning, and how agentic coding is driving people to work more, sometimes to their own detriment.
We also discuss:
Why the Python 2 to 3 migration was more challenging than expected
How Python, Go, Rust, and TypeScript stack up for different kinds of work
How AI tools are changing the need for unified codebases
What Armin learned about error handling from his time at Sentry
And much more
Jump to interesting parts:
06:53. — How Python, Go, and Rust stack up and when to use each one
30:08 — Why Armin has changed his mind about AI tools
50:32 — How important are language choices from an error-handling perspective?
Interesting quotes from the episode
On how Armin uses AI tools (at 28:05)
“Over the years, many of my projects didn’t go anywhere because the legwork needed to build this bespoke tooling to be able to pull this project off was too much.
One of the big changes I’m noticing for myself is that I have so many better tools around now. For example, I moved from Terraform to Pulumi for one of the services just to see how that goes. I had Claude build me a perfect control system to get my logs and visualize what’s going on in production. I would never have done this before [Claude Code] just because it wouldn’t have worked.”
Why Armin wants to hire more engineers at his startup, despite using an “army of AI interns” until now (at 33:48:)
Now there’s an argument to be made that maybe systems like Claude will help you, and maybe you can even bootstrap a startup around it. But if you fully delegate everything that you’re doing to a machine, then the person who doesn’t do that has an edge on you.
This is one of the reasons I want to hire more people now. It’s just because Claude is not a human. There’s energy to a well-running company and to motivated people that just a computer can’t replace. So a big part that sticks with you as an engineer is understanding how to create your systems, and understanding when the code it produces is more right versus more wrong. I don’t think much of this has changed [since AI].
Why Armin doesn’t believe strongly typed languages like TypeScript meaningfully reduce errors — based on his experience observing this at Sentry (at 52:42:)
There was a large-scale realization in JavaScript ecosystem that type checkers could get rid of a whole class of errors, because at the very least you have to explicitly check if this thing is nullable or not.
I never got the feeling that the adoption of TypeScript dramatically changed anything about JavaScript error rates. None of that adoption had any meaningful impact. If there was an impact, it’s immeasurable.
I remember that the adoption of more and more complex things in the React ecosystem has just dramatically increased the types of errors. For example, hydration errors were not a thing for many years. And then all of sudden, there’s a whole class of new errors coming in because of this [because of the wider adoption of React.]
The Pragmatic Engineer deepdives relevant for this episode
Timestamps
(00:00) Intro
(01:34) Why the Python 2 to 3 migration created so many challenges
(06:53) How Python, Go, and Rust stack up and when to use each one
(08:35) The friction points that make Rust a bad fit for startups
(12:28) How Armin thinks about choosing a language for building a startup
(22:33) How AI is impacting the need for unified code bases
(24:19) The use cases where AI coding tools excel
(30:08) Why Armin has changed his mind about AI tools
(38:04) Why different programming languages still matter but may not in an AI-driven future
(42:13) Why agentic coding is driving people to work more and why that’s not always good
(47:41) Armin’s error-handling takeaways from working at Sentry
(50:32) How important is language choice from an error-handling perspective
(56:02) Why the current SDLC still doesn’t prioritize error handling
(1:04:18) The challenges language designers face
(1:05:40) What Armin learned from working in startups and who thrives in that environment
(1:11:39) Rapid fire round
References
Where to find Armin Ronacher:
• LinkedIn: https://www.linkedin.com/in/arminronacher/
• Website: https://mitsuhiko.at/
• Blog: https://lucumr.poco
Mentions during the episode:
• Flask: https://flask.palletsprojects.com/en/stable/
• Sentry: https://sentry.io/
• Python: The Documentary:
• Rust: https://www.rust-lang.org/
• Go: https://go.dev/
• WebAssembly: https://webassembly.org/
• JavaScript: https://en.wikipedia.org/wiki/JavaScript
• TypeScript: https://www.typescriptlang.org/
• React: https://react.dev/
• Claude Code: https://www.claude.com/product/claude-code
• CodeX: https://openai.com/codex/
• 996: https://lucumr.pocoo.org/2025/9/4/996/
• Peter Steinberger on LinkedIn: https://www.linkedin.com/in/steipete/
• Ron Pressler: https://inside.java/u/RonPressler/
• Debian: https://www.debian.org/
• Red Hat: https://www.redhat.com/
—
Production and marketing by Pen Name.