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.
a short post
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 bliki entry for Mythical Man Month
Thoughtworks is acquired by Apax Funds. The current management team will continue to run the company as before.
Projects are a popular way of organizing software efforts, but long-running product teams are often superior
Friction Between Product and Engineering; Lack of trust and collaboration slowing down product growth
Agile Software Development may be mainstream, but much of what's done is faux-agile, and we need to push back.
Inspired by the strangler figs in Australia, a strangler fig application gradually draws behavior out of its host legacy application
a short post
Ship/Show/Ask is a branching strategy that helps teams wait less and ship more, without losing out on feedback.
A guide to effective pair-programming
Systems are constrained to follow the communication patterns of their designers.
the future of senior developers, junior developers, more on cognitive debt, DevEx versus AgentEx, the role of IDEs, consequences of task switching in supervisory programming
It is impossible to measure the effectiveness of tools and techniques in software development because we have no way of measuring our output, and thus our productivity.
Sometimes it's a good thing to be writing code that you expect to throw away in a couple of years time.
Explaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing.
"If it hurts - do it more often". Good advice if the amount of pain raises exponentially with the time between actions, such as for integrating software.