Category Archives: Software Design

What is Modern Software Engineering?

I have a new book out. It’s called “Modern Software Engineering” and I have been working on it for the past few years.  The ideas in it grew out of a growing realisation that the way that I approach software … Continue reading

Posted in Continuous Delivery, Continuous Integration, Culture, Effective Practices, Engineering Discipline, Personal News, Software Design, Software Engineering, TDD | Tagged , , , , | 12 Comments

Three Distinct Mind-sets in TDD

I have blogged about TDD before. I think that it is one of the most important tools in improving the design of our software, as well as increasing the quality of the systems that we create. TDD provides valuable, fine-grained … Continue reading

Posted in Continuous Integration, Effective Practices, Software Design, TDD | 10 Comments

Test *Driven* Development

Before Test Driven Development (TDD) the only thing that applied a pressure for high-quality in software development was the knowledge, experience and commitment of an individual software developer. After TDD there was something else. High quality in software is widely … Continue reading

Posted in Agile Development, Continuous Delivery, Effective Practices, Software Design, TDD | 4 Comments

The Next Big Thing?

A few years ago I was asked to take part in a panel session at a conference. One of the questions asked by the audience was what we thought the “next big thing might be”. Most of the panel talked … Continue reading

Posted in High Performance Computing, Software Architecture, Software Design | Leave a comment

Incremental Design – Part II

In my earlier blog post on incremental design I suggested that we need to allow for failure. So how do we limit the impact of failure, how do we tell when our design choices don’t work and how do we … Continue reading

Posted in Agile Development, Continuous Delivery, Software Architecture, Software Design | Leave a comment

Incremental Design – Part I

Continuous Delivery is all about making small changes. Work flows more easily, planning is simpler, error detection is helped and the time from idea to value is reduced when we make changes in small increments, but how do you solve … Continue reading

Posted in Agile Development, Continuous Delivery, Software Architecture, Software Design | Leave a comment

The Reactive Manifesto

Over the past couple of months I have been helping out some friends to update the Reactive Manifesto. There are several reasons why I agreed to help. First I was asked to, by my old friend Martin Thompson. The most important reason … Continue reading

Posted in High Performance Computing, LMAX, Microservices, Reactive Systems, Software Architecture, Software Design | Leave a comment

Testing Times

I came across a test breakage recently. I had committed some code and a test had failed. The test was unrelated to my changes, but I took a look anyway because maybe I was wrong. As it turned out the … Continue reading

Posted in Effective Practices, Software Design, TDD | Leave a comment