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 seventh day of the month.
Let's begin!
AI
AI Doesn’t Reduce Work — It Intensifies It argues that AI causes workload creep where employees will increase their workload until they start to suffer from cognitive fatigue and burnout.
Context Is Now a First-Class Architectural Concern explains that context is no longer just data. It's a critical concern that must be designed and limited so that we can ensure that using AI is economically viable.
Inside OpenAI’s in-house data agent describes how OpenAPI build an in-house data agent that allows their employees to query over 600 petabytes of internal data and reduces the time it takes to get answers to their questions.
Lines of Code Are Back (And It's Worse Than Before) argues that AI-assisted coding has revived the lines of code (LOC) as a primary metric of productivity and explains why LOC is still an awful way to measure productivity.
An AI Agent Published a Hit Piece on Me (Part 1, Part 2, Part 3, and Part 4) provides a detailed account of an incident where an AI agent published a hit piece against an open source developer who closed a pull request opened by the AI agent.
Who opened the door? covers an incident where an AI agent started a smear campaign against a developer and identifies a question that's not asked by anyone else.
AI fatigue is real and nobody talks about it argues that even though AI helps us to finish individual tasks faster, it increases the time (and mental energy) needed to coordinate AI agents and review the finished work.
Minions: Stripe’s one-shot, end-to-end coding agents Part 1 and Part 2 introduces homegrown and unattended AI agents which produce over a thousand merged pull request every week.
What AI coding costs you identifies the negative effects of overrelying on AI tools, and argues that we should find a balance between AI assisted coding and old fashioned manual coding.
A Message To Devs At The Frontier argues that developers should be curious and embrace the new opportunities instead of simply ignoring AI assisted engineering.
Two Flavors of Spec-Driven Development and Why I Clearly Prefer One introduces two interpretations of spec-driven development and explains why the author thinks that one of them is essential for building business-critical systems.
You don’t have to if you don’t want to is a long and an old-fashioned rant about generative AI.
Software Development
Java has evolved. Your code can too highlights 113 code snippets and allows us to compare the old and modern implementation side by side.
Farewell, Rust explains why the author started using Node.js instead of Rust when he is doing web development.
Turn Dependabot Off argues that we shouldn't use Dependabot and explains what we should do instead.
Code Isn’t Slowing Your Project Down, Communication Is explains that delays in large organizations are rarely caused by the complexity of the produced code and argues that these delays are caused by poor communication, unclear processes, and clashing priorities.
Building Modular Monoliths With Kotlin and Spring explains why we should consider building modular monoliths and describes how we can build them with Kotlin and Spring Modulith.
Migrating to Modular Monolith using Spring Modulith and IntelliJ IDEA describes how we can migrate from a traditional monolith to a modular monolith.
Sinks, Not Pipes: Software Architecture in the Age of AI introduces techniques that help us to deal with AI agents that lack the long-term memory humans use to navigate poorly structured code bases.
How I estimate work as a staff software engineer explains why estimating is hard, argues that an estimate is a political tool, and describes how the author estimates work.
Deadlines As An Act Of Love argues that a deadline isn't an attempt to control employees. Instead, deadlines help us to schedule our work and support (or not to support) each other's objectives.