Software Development Monthly 12 / 2025

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!

Table of Contents:

AI

Does AI make engineers more productive? It’s complicated argues that even though AI helps us to write code faster, it may not improve overall productivity.

The Specification Renaissance? Skills and Mindset for Spec-Driven Development argues that as AI-generated code becomes more common, our ability to write clear specifications that define what we want to build becomes the new bottleneck.

My 2026 Coding Stack highlights the author's AI coding stack for 2026. The author's goal is to maintain flexibility and avoid being locked into a single provider.

From Autocomplete to Co-Author: My Year with AI reflects on a year of using AI and explains how AI evolved from a simple autocomplete tool to a co-author which generates code that requires minimal changes.

On insight debt argues that if we concentrate on shipping features without understanding why they work, we take "insight debt" that makes our code hard to change.

Make your PR process resilient to AI slop argues that AI-generated code isn't a problem as long as we have a proper code review process.

AI Coding Tools Are Not the Problem, Lack of Accountability Is argues that the issue with AI-generated code is the lack of accountability when developers ship code without understanding and reviewing it.

2025: The year in LLMs summarizes the AI breakthroughs of 2025, and highlights the shift toward reasoning models and autonomous agents.

Software Development

A Central Conflict in 'Readable' Code argues that if we want to make our code simpler, we must be ready to make it less familiar (temporarily).

gRPC in Spring Boot describes how we can use the Spring gRPC project for implementing gRPC endpoints and explains how we can write a gPRC client that invokes our new endpoints.

API Versioning in Spring identifies five strategies for implementing API versioning in a Spring Boot web application.

Next level Kotlin support in Spring Boot 4 describes how Spring Boot 4 makes our life easier when we are writing Spring Boot applications with Kotlin.

The Ultimate Guide to Successfully Adopting Kotlin in a Java-Dominated Environment introduces a five-part tutorial that helps Java developers to adopt Kotlin. This tutorial addresses both technical and organizational challenges which we might face during this transition.

The best way to use the Spring @Transactional annotation provides a quick introduction to the @Transactional annotation and describes how the author uses it to configure transaction boundaries.

A Philosophy of Software Design vs Clean Code documents the debate between Robert "Uncle Bob" Martin and John Ousterhout on what's the best way to write clean code.

Logging sucks. And here's how to make it better explains why traditional logging sucks, and describes how we can solve this problem and make our logs useful again.

CS Books I'll be reading in 2026 highlights five books the author will read in 2026.

Write code that you can understand when you get paged at 2am argues that if we want to prevent on-call disasters, we must prioritize simple and readable code over "clever" abstractions which are impossible to understand in the middle of the night.

The Case Against Microservices argues that for most organizations, the drawbacks of micro services outweigh their benefits when compared to a well-structured monolith.

0 comments… add one

Leave a Reply