Monday, January 14, 2008
The Ferrary 599 and software
I was watching in the Discovery Channel a show about the Ferrari 599 and how they deliver the highest quality in that awesome machine. They seem so proud of their product! Every interviewed person was sure that his participation in the production process was important for the end product's quality.
I just wanna blog about two more things I realized:
- Each step in the Ferrari production process assessed it's quality. They knew which acceptance tests would allow the part in production (motor, leather parts, etc...) to go on in the process and be a part of a $240.000 car. Everything was done so they'd meet the expected quality... "Buyers are paying for perfection" they say. So, they minimized surprises, since they knew the expectations from the beginning.
- Any defect in the manufacturing process meant that piece would be rejected. If the chasis didn't meet the expectations, it was returned to the melting machine and they started clean with a new chasis. So, each process was sure that it was receiving quality parts.
Maybe we can learn something for our software development process!
1. Everything in the 599 manufacturing was done with the final product in mind. There was no waste. The process was well designed and executed with excellence. Do we do something during the process that doesn't add value to the final product? I'm not talking about not making any documentation. I'm sure everything in the 599 is well documented. I'm talking about being sure that every artifact, model and code adds value to "our Ferrari".
2. Validation: How do we define quality in our product? Is the user involved in that definition? Which are the acceptance tests that certify that your code does what the user expected? This practice is the one that is catching my attention lately. If we use some testing framework in collaboration with our customer to define the user's expectations, we'll be closer to define what quiality is for her. And, we are done when we find out that all of our acceptance tests are green.
Well, these are my thoughts; I think many people is doing great things with TDD and other agile practices... why don't we try them out and get the best of them?