What Software Development Can Learn from Double-Entry Bookkeeping

Double-entry bookkeeping revolutionised business by introducing a self-checking system of financial integrity. In the world of software, Behaviour-Driven Development (BDD) does something strikingly similar — pairing each feature with a clear, testable description of how it should behave. Double-entry bookkeeping and automated software testing might seem worlds apart – one emerged in Renaissance-era accounting and the other in modern software development. Yet conceptually, they serve a similar purpose: both introduce systems of checks and balances to ensure integrity and accuracy in their respective domains. In accounting, double-entry bookkeeping requires every transaction to be recorded in two accounts (debits and credits) that must balance, creating an internal self-checking mechanism. In software, automated tests act as a parallel record of expected behaviour, continuously verifying that the code produces the intended outcomes. This post explores how a 500-year-old accounting innovation revolutionised financial record-keeping and how its spirit lives on in the way we write and test software today.

Continue reading

Make BlackOps development the Corporate Standard – Embrace Microservices

Contrary to how they are perceived in the media as lumbering dinosaurs, most large organisations have loads of clever people and good ideas.The trouble is these organisations can’t deliver against the ideas. The answer is not “Blue Sky” R&D departments or “BlackOps” teams. The answer is to make the BlackOps approach standard; create an innovation platform built from microservices with new services deployed swiftly into production.
Continue reading

Test driven architecture – use your tests to inform architecture

As test-loving development teams, we are all painfully aware of the complexity of getting an application into the zen state of development – quick, test-driven red/green feedback for developers, software designs that are functionally on-the-money from a test-led, “outside-in” approach (from BDD), and a nigh on seamless continuous delivery process as a result. Very few teams achieve this, and those that do are frequently gifted a green-field project in which to engender them.

As test-savvy teams, when tests start to hamper the release process, we often assume our approach to testing needs an overhaul, but that might not be the case. Here we look at the role of architecture in test-driven applications, and examine whether we should listen to our tests to examine our macro design.
Continue reading

Who is Specification by Example for? Everybody!

I was talking to Pedro Santos on the train the other day. Pedro is my technical lead, an expert in his field and a keen advocate of automated testing and software craftsmanship in general. We were talking about Gherkin and Pedro was saying he doesn’t see Gherkin tests adding value because it doesn’t help him as a developer. Of course I disagree. The way I look at it is the Gherkin tests are not for the developers. The Gherkin tests are for the organisation – they are for everybody.
Continue reading