Monolith First (2015)
Going directly to a microservices architecture is risky, so consider building a monolithic system first. Split to microservices when, and if, you need it.
A website on building software effectively
Visit martinfowler.com → On Hacker News Jun 2009 – Oct 2026
Software Engineering 66Career & Management 20Tech Industry & Business 15AI & Machine Learning 13Society, Policy & Culture 10Systems & Performance 8
Going directly to a microservices architecture is risky, so consider building a monolithic system first. Split to microservices when, and if, you need it.
Software Architecture is the important aspects of a software system's internal design, usually its major components and aspects that are hard to change.
The uncanny valley of LLMs' prose
Technical Debt is a metaphor for the consequences of cruft. You either have to accept a drag on further features (paying interest) or fix the software (paying the principal)
Generated knowledge and chain of thought prompting of an LLM can generate useful code.
a short post
Serverless architectures replace a managed server with a collection of third party services and FaaS
A series of conversations between Kent Beck, David Heinemeier Hansson, and Martin Fowler. We discuss Test-Driven Development (TDD) and its impact upon software design.
To be successful at digital transformation you need to optimize the key feedback loops in your software engineering organization
a short post
a bliki entry for Mythical Man Month
three layers of system health, AI as cognitive system 3, what's expensive if agents make coding free, and the future of source code
Notes from my colleagues on AI-assisted software delivery
We usually perceive that it costs more to get higher quality, but software internal quality actually reduces costs.
Thoughtworks is acquired by Apax Funds. The current management team will continue to run the company as before.
A catalog of patterns to better understand, communicate, and teach the design of distributed systems
How to split up your large, complex, frontend codebases into simple, composable, independently deliverable apps.
Notes from my colleagues on AI-assisted software delivery
Some notes on the different patterns that may be present when people talk about event-driven architectures.
The usual build-versus-buy rules for applications don't apply to integration
Yagni ("You Aren't Gonna Need It") is the principle that we should not build presumptive features. It should not be used as a justification for neglecting internal quality.
Projects are a popular way of organizing software efforts, but long-running product teams are often superior
a short post
Use two consensus building phases to reach safe consensus even when nodes disconnect
Friction Between Product and Engineering; Lack of trust and collaboration slowing down product growth
I'm finishing a new edition of my Refactoring book. Here's details and periodic memos about my work.
A memory image replaces database interactions with in-memory data using event sourcing to record persistent changes
Security is both very important and often under-emphasized. While many targeted techniques help, there are some basic clean code habits which every developer can and should be doing
I'm finishing a new edition of my Refactoring book. Here's details and periodic memos about my work.
Agile Software Development may be mainstream, but much of what's done is faux-agile, and we need to push back.