I am a big fan of agile software development methods, because they provide much more control for marketers and other business types over technology teams—and they make technology projects more successful. But I came across a new term for something I have found to be true. Alan-Rimm Kaufman talks about YAGNI, which means “You Ain’t Gonna Need It.”
I am a big believer that concepts need names. Human beings are language-oriented, so when we can plaster a name on an idea, it helps us internalize it.
And YAGNI is a big idea. I’ve seen it over and over in projects that I have worked on, which is one of the most important reasons that agile development works. The basis of YAGNI is the illusion we all have that we “know” what will be needed in the future. We are all planners, so we plan a new Web site, or another new piece of software, we always know what we want first, but we think we know what we want second, third, and fourth.
And sometimes we do.
But often, by the time those priorities can pop to the top of the list, we’ve changed our minds. Not because we’re fickle (although there’s some of that, too), but because we’ve learned more and what we thought we wanted might not be a good idea. Or because we discovered something else more important. Or because we realize that we should solve that problem, but in a different way.
So, when you develop in agile fashion, you develop the very next most important thing, get that working, and update your Web site with it. Then you can see how that works while you are developing the next thing. By doing that, instead of doing a six-month “site redesign,” you develop fewer features that you don’t need and you update the right features based on how well they work.
If you’re feeling a bit overwhelmed about the whole idea of development processes, you might benefit from a new book I am reading, Outside-in Software Development, which talks about how to focus technologists on the things that mean the most for your business. Carl Kessler and John Sweitzer are onto a big idea, that every part of your software development process must consider business value—no specialists can just exist to make things work technically. I guess I knew that, but I wouldn’t have been able to put it into words the way they have, with the examples they’ve provided to bring it to life. There are a lot of books written that you ain’t gonna need, but you might need this one.