Agile Software Development

This blog began as a software development blog, on the topic of Agile software development. These are the original posts, from before I changed focus to “the neglected essentials of software development”.

Big Lessons from a Little Process

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… Read more

Making Better Programmers

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… Read more

Scientific Experiments

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

Read more

Negotiating your Development Process

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… Read more

Definition of Agile Development

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… Read more

Crystal Clear Methodology

Crystal Clear is a methodology that summarises 10 years of research into successful software teams.  Which things really matter?  Which things most influence the project outcome?

Comparison to Traditional Development

In my on-going quest to answer the question “What is agile development?”, here is a point-by-point comparison with traditional development.

The Trust Barrier

David Anderson presents three facets of agility:

  1. The “toolbox” of iterative development techniques
  2. The belief that people are more significant than process
  3. Trust

David points out that trust underlies the greater efficiency of agile approaches. Lean Software Development also emphasises trust.

It is easy to… Read more

One-Page Guide to Agility

Agile development can look a bit crazy, at first.

I’m writing this guide to explain the foundations of agility, outline its benefits, and show why it’s not so crazy after all.

Building on People’s Strengths

Alistair Cockburn points out that traditional processes are based on an assumption that people will successfully accomplish things that they normally struggle with. 

In particular, it is assumed that people will change their habits to follow detailed new instructions.  Unfortunately, humans aren’t very good at that!  Old… Read more