The Software Development Monthly is a monthly blog post that shares interesting or useful content which I consumed during the previous month. This blog post is always published on the eighth day of the month.
Let’s begin!
Table of Contents:
AI
Why Agent-Written Code Needs Product Verification argues that code verification isn’t enough and claims that we must subject AI-generated code to product verification which ensures that it built the right thing.
Nobody is Thinking Anymore rants that if everyone is using AI for everything, no one is actually thinking anymore, and that will hurt us in the long run.
How to be more ambitious: A tutorial for humans with models argues that we don’t use the full potential of AI and provides tips that help us to take our AI game to the next level.
How the Claude Code team does code review explains how the Claude Code team ensures that the massive number of AI-generated pull requests won’t get stuck in the review queue.
Grieving the loss of details reflects on how the rise of LLMs has eliminated both the demand for and the joy of detail-oriented programming.
I’m sorry, but you still have to think analyzes DHH’s AI-generated rewrites of Campfire and demonstrates that vibe coding (without reading and understanding the code) can cause serious problems.
AI Is a Tool. Using It Well Takes Skill argues that the usefulness of AI depends directly on the skill, judgment, and oversight of the person who uses it.
Ask HN: How to deal with shipping AI-written code you don’t understand? is an interesting HN discussion where people discuss how to handle the discomfort of shipping code they don’t understand.
AI Promised Less Work. I Have Never Worked More explains how multitasking and constant context switching have led to mental exhaustion.
AI Isn’t Replacing SREs. It’s Deskilling Them explains why site reliability engineers get worse at handling the incidents that matter when most incidents are handled by AI.
Why are good developers so wary of agentic development? argues that experienced developers are hesitant to let AI agents generate all the code because they understand that writing code and running it in production are two different things.
Not All Agent Sandboxes Are Created Equally explains why we need agent sandboxes, introduces a framework for evaluating them, and lists the projects that will be covered in the next parts of this tutorial.
Software Development
Sprint Zero is about building momentum argues that we shouldn’t concentrate on planning the perfect architecture or selecting the perfect tools. Instead, we should deliver value by building working features right from the start.
Why don’t more developers “use the platform”? explains that developers who don’t use native platform features often don’t fully understand them, but sometimes the joy of programming wins.
Git 3.0’s upcoming SHA-256 default will be a costly mistake describes why Git 3.0 is changing its hash algorithm and explains why this is a mistake.
The reverts will continue until morale improves identifies seven possible reasons why an unusually high number of features were reverted from the PostgreSQL 19 beta.
What requirements don’t you have? argues that elegant systems are built by deliberately dropping requirements and explains why this is critical when using AI coding agents.
Redesigning source control at Anthropic explains why Anthropic outgrew Git and describes how they built an in-house version control system that’s optimized for AI agents.
The Test Suite Is the New Code Review argues that test suites have become the bottleneck in agent-driven development and explains why splitting a monorepo into smaller repositories can solve this problem.
Don’t Be a Proxy Between Me and Your AI describes why it’s frustrating to have technical discussions with people who are acting as copy-paste proxies for an AI.
The eMudhra CA Compromise: Why Your JVM Is Vulnerable (and How to Fix It Properly) explains why JVMs were left exposed to the eMudhra CA compromise and describes how we can test our JVMs and fix this issue properly.
Understanding React internals is an in-depth guide which explains that even though many people think that React is a user interface framework, it’s in fact a scheduler.
Be Aware of What’s in Your Logs warns that bug report logs might contain sensitive information and argues that developers should treat logging ethically and not blindly include everything in debug logs.
Passkeys are a trap. Do not use them and Passkeys Are Not a Trap present two opposing views on passkeys. Are they a security risk or our best defense against phishing? Read these two articles and find out.
Why I am a programmer is a nostalgic look at how one person fell in love with programming in the pre-internet era.
Websites Should Be Printable explains why the author prefers reading printed documents and shares the CSS tweaks they used to make their website print cleanly.
Hibernate lost my update is an interesting post-mortem of a bug where shutting down a Spring Boot application caused Hibernate to silently commit a partial transaction.