The decision you should not hand to an AI
Say your AI coding tool is about to write the piece of code that decides what happens when a job has failed every retry and has nowhere left to go: log it...
The Systems Thinking Lab Newsletter
Systems thinking insights for junior engineers.
Written by a UC Berkeley lecturer. Free, forever.
Short welcome emails, then one Saturday letter. No spam. Unsubscribe anytime.
You can't read your way to good judgment. But every Saturday, this letter gives you a real engineering decision to reason through, so the way you think about systems gets sharper one rep at a time.
See how systems like Instagram and Stripe actually fit together, in plain terms.
Learn the tradeoffs and mental models that hold up long after the syntax changes.
One focused idea each Saturday. Short enough to finish, concrete enough to use.
Say your AI coding tool is about to write the piece of code that decides what happens when a job has failed every retry and has nowhere left to go: log it...
Course 0 is open. It teaches anyone building software with AI to command an agent like a senior engineer: ask what it thinks first, then make it prove it.
Tiering code review by risk is sound, but skipping a review skips the rep that builds judgment. Why reading code you did not write is how juniors grow.
A discount code field looks like twenty minutes of work. Three ways it can quietly undercharge a customer, and the ledger where they surface.
A controlled trial found that AI did not decide who kept the skill. How they used it did. The fix is a repeatable loop you can run today, not more willpower.
Why an AI coding agent starts every session from zero, and the two files, a kickoff skill and a wiki, that give it the memory a new hire gets.
How one seat gets sold twice when two buyers click in the same instant, and why the fix belongs in the database, not in your app code.
Spotify picks your next song hours before the current one ends. A background worker does the work early and stores the answer, so the app only reads it.
I recorded the last video of the series. What comes next: Course 0, on handing tasks to AI agents, and how readers who own courses get in.
A payment service with one queue and one database kept working through Black Friday while the rest of the stack buckled. Why the boring design wins.
Ask AI to write code and it puts everything in one service. Ask it to design and you get five. Why, and the question that checks both answers.
Most AI Engineer listings ask for Python, APIs, and deployment, not model training. Why the job is composing a system around a model.
AI is shrinking spec-to-code work, not the junior engineer. What is breaking is the apprenticeship, so judgment has to be built on purpose.
I had AI agents rewrite eight social bios, and one app said the save worked when it had not. Why you verify the result, not the report.
For two years the work arrives pre-decided. Once you own a service, you decide what it is built on, and you put the work on the roadmap yourself.
AI is eating spec-to-code work, not the junior engineer. Judgment now gets built on purpose: the junior in the loop with the agent, before the first job.
Five honest answers for junior engineers on AI: whether it makes you obsolete, how to use it well, how to keep building skills, and what to learn.
AI removed most of the reps that used to build judgment. Let it write boilerplate, but keep the design decisions and ask where each piece falls over.
When AI writes the code, the skill that is left is judgment: deciding whether a system needs a queue at all. Why I rebuilt my site around that idea.
AI does not eliminate the junior engineer first. It automates the middle rung, executing a clear spec, so the value moves to judgment.
Ask AI to build video upload and it forgets the queue. Why a queue keeps a demo from becoming an outage, and when not to use one.
Everyone predicts AI replaces junior engineers first. The evidence points at a different rung: the mid-level role built on turning specs into code.
A junior engineer ships a payment system in one afternoon, and it pages someone at 2 AM. When building is free, the skill is restraint.
Knowing the seven blocks is not enough to design a system. Three outside forces, the user, external services, and time, decide which blocks you need.
An opinionated guide for engineers learning to use AI for coding: 6 levels from manual coder to parallel AI development, with self-assessment.
Two perks announced for full bundle members: a weekly Q&A video answering community questions, and a printable cheatsheet of the 7 building blocks.
Why Course 2 opens with a blog: one author and thousands of readers is the imbalance behind caching, media handling, and simple auth in content systems.
I explained why I was building this course series, shared the Instagram, Netflix, and Uber design challenge I had just launched, and previewed Course 2.
How junior engineers can confidently approach complex system architecture with an intuitive, technology-agnostic framework
System design is not reserved for senior engineers. Learn practical ways junior developers can start building architectural thinking skills right now.
Why understanding and aligning with existing company infrastructure is essential for the success, scalability, and longevity of your engineering projects.
Why becoming an investigator of the problem space is essential before jumping into solutions, and how this mindset shapes better system design decisions.
How understanding and navigating technical and business constraints can propel junior engineers into a more active role in the system design process.
Why asking the right questions can set junior engineers apart in system design discussions and accelerate their path to architectural thinking.
Why end-to-end understanding is becoming extremely valuable at all software engineering levels, especially in the age of AI
The path to becoming a 10x engineer lies not in solitary coding but in amplifying the abilities of those around you through mentorship and collaboration.