Lean is a generic term that applies to a set of principles which have been long established outside of software development. The interpretation of these principles so they make sense in a system development environment is what I would call lean software development.
Agile is an instance of lean principles applied in software development. (And Scrum is an instance of agile.) So in this sense, Lean might be considered a theory, and agile might be considered a set of practices.
In my opinion, agile often does not go far enough and take the systems view, while lean necessarily looks at the whole system. Thus from a lean perspective, software development is not the issue - if a problem can be solved without software, customers would probably be delighted, and delighting customers is what it is all about. Agile has a tendency to be confined to software development itself, instead of looking at the bigger picture (but this is not always true).
Author of Lean Software Development, Implementing Lean Software Development, and Leading Lean Software Development
Lean applied to manufacturing changed the way material flows through plants - starting in the early 80's in western countries. It was called "Just-in-Time" then, and came to be called Lean in the early 90's, largely because of the book "The Machine that Changed the World: The Story of Lean Production". Lean moved to logistics - for example, the US military had a large "lean Logistics" effort, starting in the mid 90's. It has been applied in retail areas, especially in supply chain logistics. Lean ideas have been successfully applied to health care recently.
Applying lean in operational areas is different than applying lean in development areas. There is a growing movement around Lean Product Development, especially hardware development (which may or may not include software).
There are many writers on Lean, including former managers from Toyota. www.lean.org is a good source of lean in non-software areas.
Everyone using the term lean more or less agrees on basic principles, and they also agree that classic lean tools (eg. kanban, value stream maps, 5S) are helpful but not essential and should be driven from the context.
Mary Poppendieck wrote:Lean applied to manufacturing changed the way material flows through plants - starting in the early 80's in western countries. It was called "Just-in-Time" then, and came to be called Lean in the early 90's, largely because of the book "The Machine that Changed the World: The Story of Lean Production".
Yes. I think "Just-in-time" is very important factor for Agile to be successful, it is applicable to Software Development as well, just accomplish howmuchever work to be done and don't think of future (I might be wrong for Product based companies) but atleast, for non-product based software companies or non-IT enabler companies, gone are the days where huge no. of hours are spent on Design alone (Waterfall style).
The place where I work follows "Just-in-time" for software development. We use Agile+Waterfall approach, when I say Agile, it is basically customized Scrum to fit in enterprise. Every Release would have multiple iterations and each iteration again follows Waterfall approach like
"Requirement gathering + Feature allocation + Design Slam + Development + Testing + Rollout" and it is incremental until the complete requirement is accomplished and might take multiple iterations.