I presented a session at today’s Wellington Agile BarCamp.  The session was called “Crystal Clear: Big Lessons from a Little Process“.  Instead of describing all the details of the process, I outlined four of the most important lessons I have learned from it. Here are some brief notes on the presentation.… Read More


I’m debating an issue with Steve McConnell, over on his blog, and I’d like to hear what others think of the issue. I have a theory that, when multiple suppliers are competing for the same contracts, market forces encourage selection of those suppliers who have under estimated (either knowingly or unknowingly).  It’s some kind of… Read More


Regular feedback is a key element of agile development.  Rapid feedback improves our software.  I suggest it also improves us, the people who write the software. I’ve just read a fascinating article on where talent comes from, over on Freakonomics.com.  It outlines research into the key factors that develop talent.  The key factors are: “setting… Read More


Steve Yegge points out that it’s very hard to do a valid scientific experiment in software development: “You can’t have the same team do the same project twice; a bunch of stuff changes the second time around. You can’t have 2 teams do the same project; it’s too hard to control all the variables, and… Read More


Many agile proponents advocate the “Cancel-After-Any-Phase” approach. Work is prioritised by business value and the customer can halt the project after any phase.  You can fix price or scope, but not both.  Most commonly, the price is fixed and scope is cut if necessary. This approach is a natural fit for most agile processes.  However,… Read More


While scope creep is doing more work than you expected, due to added scope; effort creep is doing more work without added scope.  You’re just taking longer to do the same stuff. Like scope creep, effort creep is inevitable and manageable.  To manage effort creep we need to understand what causes it.  Three major causes… Read More


Principled Negotiation also applies to defining your software development process.  You can’t choose Agile just because you like it.  You have to understand what your customers’ interests are, and you have to seek a process which meets their interests and yours. For instance: if the customer says they want a detailed Gantt chart, that’s a… Read More


Time and Budget Charts show project status clearly.  But what happens when the scope changes?  Does the chart still work?  If so, how do you update it to reflect the new scope? The charts can accommodate change in three ways, as follows:… Read More


Agile development is hard to define, because most people define it by giving examples. For instance they give a specific description of Extreme Programming (XP), instead of defining of agile development in general. We’ve ended up with a widespread misconception that agility is about XP techniques like Pair Programming and Test-Driven Development (TDD).… Read More


Negotiation, meaning “discussion intended to produce agreement”, is fundamental to every software project.  (And other projects too – my examples just happen to come from the software industry.)  Developers and customers must reach agreement on what the system is supposed to do.   A wise agreement will define achievable goals and meet the users’ real needs.… Read More