Feature Thinning is the agile practice of simplifying the scope and implementation of specific features, on a case-by-case basis.  Often, given their growing knowledge of the technology and business domain, an agile team can suggest simpler alternatives to what the users originally asked for.  Often, these simpler alternatives still give all the key benefits, at… Read More


I’m seeking feedback on the following comparison of agile vs waterfall(*)   The comparison is to be used as background information for a panel discussion on agile contracts, so it emphasizes those aspects which I felt were most relevant to that topic.  I’ve tried to keep it agnostic as to the exact flavour of agile to… Read More


I conducted an experiment today. I chose a problem which Ron Jeffries solved with TDD. I took the opposite approach.  I sat for about 5 minutes and thought about the solution.  Then I wrote down the code, added a unit test, ran the test to find the errors (there were 3), added one more test, re-ran both… Read More


It’s a common misconception that agile processes can’t be used with fixed scope.  A number of the founders of the agile movement invented their forms of agile on fixed-scope projects. As I write this, I’m working myself on an 18-month project with about 20 people and a fixed(ish) scope (see below).  So it can be done. … Read More


My first exposure to Agile was in the early 2000’s, when a friend leant me the Schwaber and Beedle Scrum book.  It kept talking about mysterious  “emergent properties”, which were apparently good things that would inevitably happen when you followed the process.  But it never really explained why those properties would emerge and, to my… Read More


Agile has always embraced change.  But businesses are still be tempted to minimise those changes, by trying to get things “right” first time.  On my current project, we’re realised that minimising change is not necessarily a good thing. Why? After the system goes live, we must be able to change it.  (In our opinion, an… Read More


I previously blogged about the nature of expertise, and resulting questions about the efficiency of expert-expert pairings.  Here I’d like to tidy up some loose ends with regard to the relationship between expertise and pair programming. How does expertise develop? Kahneman’s book points out that expertise develops, virtually inevitably, when a practitioner has long experience… Read More


Let’s start this post with a thought experiment.  Not in software development, but in playing chess. Imagine two novice chess players, working as a team. (We’ll assume their opponent is a computer, so it can’t overhear them talk.)  Our two novices will benefit greatly from their collaboration.  They’ll discuss all their thinking – everything from… Read More


In keeping with the theme of this blog, which is “the neglected essentials of software development”, I’d like to share something I’ve learned recently. It’s about how Professional people in other fields think – people like architects, town planners and doctors.… Read More


Recently Alistair Cockburn invited 32 agile practitioners to join him at the Snowbird ski resort, for a retrospective on the agile movement as a whole.  I followed the event via Twitter, sitting under a sun umbrella here in the southern hemisphere, reading the tweets from the snow. The event was both a celebration of the… Read More