Some years ago I went to university and did the computers engineering degree. I remember we had one of those subjects related with business management that you wouldn't expect to have in such a degree. We learnt the basics of manufacturing processes. Among other things we went through things like mass production, Fordism, Taylorism and Lean manufacturing. Even if it was kind of interesting I thought all of that was pointless for a guy like me who wanted to learn just things about computers. How wrong I was!!
Let me explain you why..
Lean manufacturing or just-in-time production is a manufacturing process developed by Toyota in the 80s. Focused on eliminating waste and adding value, lean brings an improvement to the models based on mass production created at the beginning of the century.
These processes created by Ford and Taylor had as main goal to produce as much as possible - the more products we create the more money we make. So these processes were centred on splitting in little tasks the whole process of manufacturing a product and then trying to improve each single task as much as possible. Little improvements can make a big difference. If we can improve the whole production chain we can create products faster and cheaper than our competitors.
What Toyota realised is that producing as much as possible is not always the most efficient thing to do. Mass production creates big inventories for products with the purpose of creating a good availability of products for the customer. The problem with this is that the storage of products has a cost, a cost of money and resources. This is know as waste. Also this products will have no value until they get to the customer.
So Toyota thought "What if we just create only the minimum quantity of products required for the customer needs?" "What if we could predict the customer needs and deliver products just-in-time? We won't need all that inventory!". So Lean was born. Lean identifies different type of wastes in a manufacturing system and tries to eliminate them while adding more value to the processes - preserves value with less work.
This just-in-time production approach brings great flexibility and responsiveness to change. Which is basically what all these new software methodologies - a.k.a agile - try to tackle nowadays.
Based in iterative and incremental development agile methodologies aim to deliver software quick and often with a close customer collaboration and putting people first. The consequence of this are a shorter feedback and a bigger adaptiveness. These methodologies are a significant shift from the previous waterfall models where everything is design up front with little or none response to change. Agile has been seen as the way to go in nowadays world where everything is constantly changing and almost every company tries to adapt it.
Lean has many similarities with agile. Mary Poppendieck and Tom Poppendieck saw this and wrote a book about it which I just read: Lean Software Development: An Agile Toolkit. The book takes the lean manufacturing principles and adapts them to the software environment. As I read it I could see how everything I knew about lean manufacturing was fitting with the agile methodologies perfectly!
The funny thing about the whole thing is that I finished university without hearing a word about agile! Yes, don't ask me why... I learnt agile by my own at my first jobs and reading books. One day, I bumped into lean software development and I thought "shit! This rings a bell.." and suddenly all my memories from the first years of uni came back to me! Everything started to fit together! :)