Monday, January 23

Toyota's Values vs. Agile Methodologies

An article in this weeks Economist reminded me of how the Japanese car maker Toyota has a culture with five distinct values. Three of these sit well with agile. I think agile can learn from one, and Toyota should update one of these to reflect learnings from agile.

Kaizen (Continuous Improvement) – Each day Toyota Employees come to work determined to become a little better at whatever it is they do.

This sits well with agile techniques, such as refactoring and pair programming. You are more likely to become better at whatever you do if you constantly learn from others and reflect on things that have gone right or wrong in the past and try and improve them.

Genchi genbustu (Go to the source) – Find the facts and do not rely on hearsay. Gain consensus around well-supported arguments.

This sits well with agile methodologies, where the customer is closely integrated with the team. The closer the customer is to the team, the less likely it is that facts will be distorted between the customer and the developer.

Challenge – Problems are a way to improve performance, not something undesirable.

This too sits well with agile methodologies. If you do something that takes longer than expected or doesn't work out, you can try a different approach more easily than if you have to do something in a particular way to conform to a rigid framework. You can then reflect on what worked and what didn’t to improve performance.

Teamwork – Put the company’s interests before the individual and share knowledge with the team.

This may appear a great goal, but it doesn’t sit well with the concept of "drawing your own map", where each individual thinks what they want from their career. Perhaps this should read "Align the company's interests with the individuals goals." If both sides can make compromises, the company will retain happier people who will ultimately be more profitable.

The other part of teamwork – "Share knowledge with the team" certainly sits well with agile.

Respect – Respect others skills and knowledge. If two people always agree, one of them is superfluous.

Some environments that use agile methodologies seem to try and get everyone thinking in the same way (e.g. Test Driven Development is good, Java is good, Visual Basic is bad), and it's difficult to suggest something else. Agile needs to encourage more diverse thought and to regularly revisit these ideas. It should consider itself a science, not a religion.

Related posts

"Agile followers and Agile Derivers"
http://www.richardjonas.com/blog/2006/01/
agile-followers-and-agile-derivers.html


Economist article – Inculcating culture – The Toyota Way http://www.economist.com/displaystory.cfm?story_id=E1_VPRDQGN
(this may not be available to non-subscribers).

Draw your own map - http://redsquirrel.com/dave/work/
a2j/patterns/DrawYourOwnMap.html

1 comment:

Anonymous said...

Great observations, but I think teamwork and respect also 'sit well' with Agile methodologies.

Teamwork doesn't mean subjugating your personal career development to you company's goals in a completely open-ended sense. It only means keeping the goals of the project in the forefront while you are engaged.

Similary, 'respect' is not a synonym for 'agreement'. Members of an effective team have respect for one another's skills and integrity. I think you're mixing apples and oranges a bit when you list TDD, Java, and VB as points of agreement or disagreement. TDD is simply a fundamental Agile practice; people on the team will 'agree' with it because they have agreed to work on an Agile project. It isn't something to debate. But Java and VB and so forth are not 'Agile practices', they're just technology choices. Disagreement on that level does not imply a lack of respect.