My favorite principle of the Agile Manifesto addresses simplicity, or as they describe it...
the art of maximizing the amount of work not done
This principle is so core to the way I approach my work as a software developer, that I often take it for granted.
"Maximizing the amount of work not done" almost sounds like a definition for laziness, right? No, it's not about laziness--we just don't want to work on things that no one will care about.
Software is such a pain in the ass to describe, develop, test, budget for, maintain, operate in production, etc. I can stomach all these things because I think about the people who will use the software and how it will save them time and make their lives easier.
It's hard to get motivated to work on things I don't feel confident any real user will value.
In fact, I'd say a thread that is woven throughout the Agile Manifesto is this idea of never drifting too far away from what we know will be valuable to real people.
Let's examine a few more of the principles of the Agile Manifesto...
Principles:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Translation: At every stage, let's make sure that the customer sees exactly what we're building for them, so that we don't waste time building things they don't like.
Principle:
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Translation: We don't want to keep building something the customer doesn't like just because the requirements say so.
Principle:
Business people and developers must work together daily throughout the project.
Translation: Let's make sure the people who will actually use the software we're building actually like what we're building for them and find it useful.
Principle:
Working software is the primary measure of progress.
Translation: The people we're building the software for only know that we've built something valuable for them when they have real software at their fingertips. Until then, they must take it on faith that we're building something valuable.
Maximize the amount of work not done. The customer gets the most bang for their buck, and the team stays motivated. Everyone wins.