Should software development be lean or agile?

The agile and lean approaches to software development have much in common, but they also have some fundamental philosophical differences

I've been reading "The Art of Lean Software Development" by Curt HibbsSteve Jewett, and Mike Sullivan (ISBN 10: 0-596-51731-9 | ISBN 13: 9780596517311) in dribs and drabs, and enjoying it. O'Reilly describes it thus:

book cover

This succinct book explains how to you can apply the practices of Lean software development to dramatically increase productivity and quality. Lean principles are being applied successfully to product design, engineering, the supply chain, and now software development. You'll learn how to adopt Lean practices one at a time, rather than taking on the entire methodology at once. At each stage, you'll see significant, measurable results.

I was exposed to lean principles as Just-In-Time Manufacturing in the 1980s, when I worked for a company that made radioactive pharmaceuticals. I didn't connect it to software development until recently; apparently, the book that introduced the subject, "Lean Software Development: An Agile Toolkit," by Mary and Tom Poppendieck, wasn't published until 2003, and even then it was marketed as an academic book rather than as a professional title.

[ Keep up with app dev issues and trends with InfoWorld's Fatal Exception and Strategic Developer blogs. ]

I learned agile principles on my own in the 1970s, when I developed an iterative style for software development that grew out of my experimental physics education and the availability of interactive terminals to the VM/CMS system at Brown. The name "agile" wasn't really applied to the kind of lightweight methodologies I've been using since then until the 2001 Snowbird conference, which also led to the Agile Manifesto and the Agile Alliance.

The agile and lean approaches to software development have much in common: They both strive to improve software quality, reduce waste, increase developer productivity, accept changes to requirements, and prize meeting the customer's real needs. What's different is their philosophy.

Agile is primarily about software development praxis and typically only makes glancing contact with the business, in the person of the "customer" and via "stories." Lean tries to encompass the entire scope of the business, including the supply chain, rather than limit itself to software development.

It's entirely possible to incorporate agile methodologies into a lean development process: Hibbs, Jewett, and Sullivan recommend Scrum for that purpose, since it's one of the easiest agile methodologies to learn.

I'll have more to say about lean and agile in the future. Meanwhile, what do you think? Do you practice lean and/or agile development? What works for you?