Saturday, March 20, 2010

Learning Jidoka from a production line

When you adopt an agile methodology, you first try to apply its recommendations and often you will prefer to make your own dish with these good practices.
After a few weeks of practice, you won't get the expected result that the agile guru has predicated you should. Most of the time, you will be told to apply the methodology you choose without changing a thing.

The Shu Ha Ri way coming from Aikido is often the concept which is proposed for learning an agile method:
  • Shu: first phase, concentrate on all the recommendations and practices,
  • Ha: second step, now you practice the methodology correctly and start to understand the underlying principles,
  • Ri: you have sufficient experience to make your own decision and adapt the methodology to your specific context.
You will also learn, the agile world has not suddenly erupted from the clever minds which produced its manifesto. Instead, these efficient practices have evolved over a century. Toyoda, Taiichi Ōno, Edwards Deming will be the names you will find on your trip back to further discover the root to agile.
Many of these good practices have been promoted in the Toyota company and finally studied and summarised by American researchers in a set of principles named the Toyota Production System (TPS) and the more generic Lean manufacturing.

Among these principles the Jidoka focus on developing the quality in the machine (working station), making the problem visible and separates workers from machines through mechanisms that detect production abnormalities. Two of these principles are Andon and In station quality.
  • Andon: notify management, maintenance system where the centrepiece is a signboard incorporating signal lights to indicate which workstation has the problem.
  • In Station quality: the production system must evaluate the quality of its own result.
Now watch the following video and record the measurement, quality system, colored lights and more.



Like me, you have probably been astonished to see where the USB sticks are produced. Now, step back and understand the quality tools and principles which are used here on a production line.

A production system differs from a product one, regarding the number of times, the same result is produced. Software development as a product development, produces only one time the same package and the same functionality. Consequently, Jidoka will be implemented differently with defect detection of code compilation, of functionnal tests, of feature integration, etc. Because each new product feature make the overall result different, at least the non-regression detection is the primary focus, together with a maintable build system. Also, because each part of the production must have its built in quality, a systematic unit test creation with or prior to coding the new function, is a good pratice too.

If you have seen something else in the video, that is around Toyota culture, please tell me and draw the analogy with your agile world.

Sources :
Agilemanifesto : Principles behind the Agile Manifesto
Wikipedia : Shuhari
Wikipedia : Autonomation
Wikipedia: Toyota Production System
Wikipedia : Toyoda family tree
Wikipedia : Taiichi Ohno
Wikipedia : W. Edwards Deming
Wikipedia : Toyota Production System
Wikipedia : Andon (manufacturing)
Engadget : See USB flash drives manufactured in this shocking behind-the-scenes video
Infoq : InfoQ: Second Generation Lean Product Development: From Cargo Cult to Science
Informit: The History of Lean Software Development

Friday, March 5, 2010

7


As a product guy, working on mobile devices, I'm pretty impressed by this demo.
Simple, with what you need in your day to day life. Microsoft is back on track.



Thanks to Chris Pirillo for the video.

Wednesday, March 3, 2010

Visual design patterns

Most of the time, when guys were explaining the role of the software architect to me, I was not able to believe it would be possible to organise software development on such a division of responsibilities. I always feel the architecture is a discipline each member of a team should embrace.
The "Design Patterns Quick Reference" from Mc Donaland is really useful because it allows the team to speak about the most appropriate choice in front of this great summary.
But a common pitfall with these pattern design concepts is the fact people will over design and move to a solution too complex.
One solution resides in the Test driven development principles where after coding the test and writing the code for them to pass, there is the refactoring step.
This is the good moment to consider inserting a design pattern.
Make things work, then focus on building maintainable code.

Sources :
Mcdonaldland: mcdonaldland » Design Patterns Quick Reference
Davidhayden: Design Patterns and Agile Software Development