People who practiced waterfall methodologies were, at the time, looking for very local goals. For example: Rigorous, long, detailed, unambiguous specs were a desired result for braindead big-design-up-front people. A thorough manual test plan was also usually a rewarded goal for them. As many other local goals.
The agile movement finally challenged that nonsense and strived for working software, collaboration, responding to change, interactions and individuals.
Except that working software is also a local goal. You need people using software. Working software without users is, well, pretty pointless (and sad!):
“I was a devotee of the latest in software development methods (known collectively as agile development) which promised to help drive waste out of product development. However, despite that. I had commited the biggest waste of all: building a product that our customers refused to use. That was really depressing”
— Eric Ries, “The Lean Startup”
Working software with actual users is also a sort of intermediate goal. I’ve seen software in use by real users who are only being slowed down by such software. Enterprises are pretty good at buying those pieces of improductive (albeit working) software and their employees usually become hapless victims users.
The real goal that we should always strive for is software which works, have users and empower them somehow. Software that make people productive. Software that make people have a good time. Software that make people smile.
Whatever you can tweak in the way to get there should be tweaked. Nothing, not even so-called best practices should be sacred in the way to the real goal.
Software that helps people. That’s the goal we really strive for
Originally published at techblog.leosoto.com on May 23, 2013.