Ultimately, high quality software comes from high quality people. There is only so much you can do with environment, process, tools, and coaching. For example, take soccer … Try replacing all the players from my favourite English Premier League (EPL) team, Manchester United, at the start of a season, with…
Eight Tips for writing a good definition of ‘done’
After scouring the internet, looking at what my teams have come up with, and discussing with colleagues, I ended up with the following eight tips for writing a definition of ‘done’ (DoD): 1. Write it as a team. Consider the points of view of all the disciplines, competencies and skill…
Aristotle on Code Ownership
For those that enjoy a little Ancient Greek philosophy, Paul Meany introduces Aristotle’s views on the ownership of private property in Aristotles defence of private property This reminds me of the discussions on code ownership in the early days of agile; discussions that are regularly resurrected by each new generation of…
Software Design Reviews – what are you reviewing?
Software design review time. The selected reviewers have been handed a document that they have diligently read. They then meet to go over any comments … but what are they actually reviewing? Are they reviewing the design described in the document or are they reviewing the document itself? With the availability…
Covering tackles and end-to-end testing
The scrum process is named after a method of restarting play in the game of rugby. As anyone that has participated in a rugby scrum will tell you, the analogy is not a particularly good one. For example, very few daily stand-ups I have attended involved wedging your head between another two team mates’ backsides.…
Defect Management in Scrum
Eventually, everyone who has done some basic Scrum training asks the question, “How do you handle the fixing of bugs? Where does this fit in the process?” As usual the answer is, “It depends.” Sometimes, it depends on the teams precise circumstances but more often it depends on the number…
Prefer data-driven automated tests
When designing an automated test at any level, it is worth considering if you can make that test more data-driven. Rather than hard-coding the input values and expected results into the test logic, separate them out. The Spock framework has some elegant support built in for data-driven tests, … … but you…
In automated tests, mock out non-intrinsic dependencies whenever possible
Unless you are writing a full, end-to-end integration test, mock out any significant calls to other services or classes where the implementation is assumed to be correct for the purposes of your test. Ideally, use dependency injection (e.g. Spring framework) to make it easy to switch from mocks to the real…
Write automated tests at the lowest level possible
Identify the boundaries of actual code that you are trying to test. Is it all in one method, one class, a small set of classes, behind one Java service class or facade class, behind one web service, or is it scattered throughout the product? If you can write the test…
Play the Quality Game
Looking for something different to do with your team in a sprint retrospective or as an ice-breaker or warm-up exercise at the beginning of a planning, story writing or other whole-team activity? Running through this simple quality game can kick start good discussions and trigger useful process improvement ideas. How…