Agile methods recognize the humanity at the core of software development. Agile methods are built around people, not machines. Working effectively requires an understanding deeper than the surface mechanics of how people interact or who makes decisions.
One aspect of humanity is that we’re fallible. We make mistakes, forget important practices, and obstinately refuse to do things that are good for us—especially when we’re tired or under stress.
We have strengths, too. We are creative, playful, and—under the right circumstances—passionate and driven to succeed. No machine can match these characteristics.
As you modify your agile method, work with these essential strengths and weaknesses. Don’t require perfection; instead, build your process to identify and fix mistakes quickly. Do take advantage of your team’s creativity. If a task is boring and repetitive, automate it.
Have fun, too. Software development may be big business, but the best developers I know love their jobs. They’re passionate about their projects, and they also joke and play. The great teams I know socialize outside of work. There’s no way for your agile method to enforce this, but you can create the conditions for it to happen by identifying and eliminating the barriers to natural social interaction.
XP’s demand for self-discipline seems to violate this principle of understanding human weakness. People aren’t good at being self-disciplined all the time, so how can XP succeed? ...