Agile methodologies seem to be taking root in recent years as more and more organizations realize that iterative development done correctly is a highly efficient way to build software. As I see agility gaining popularity I can’t help wondering what the next ten years will hold for agile development.
I just returned from Agile Open Northwest 2010 (http://www.agileopennorthwest.org) and I became very excited. The people there “get it” and are successfully applying agile in a range of environments. I am so wary of fads, which seem to abound in software development. The brief history of creating software is littered with methodologies, languages and tools that have gone nowhere.
Agile is certainly not a fad. The basic principles will probably be in integral part of software development for a very long time. But even in the fast changing world of software it takes time for good ideas to become part of the mainstream.
I talk with a lot of software developers and managers who have never even heard of agile. I also meet lots of teams who say they are doing agile but don’t understand it and are not using it in a way that would maximize the benefits for them. Agility is such a different way of thinking about building software that it is easy to misunderstand at first and the cultures of organizations can be so strong that agility becomes cooped into something far less effective.
I see the next ten years as a consolidation of many of the practices successful agile teams use today. I believe that many of the agile practices we embrace today will become common knowledge in software development in the future. Test driven development, for example, will become more widely practiced for new development and lots of legacy code will be retrofitted with tests. I am looking forward to the day that teams look at writing code without tests the way we look at writing code without compilers today. Sure, you could do it but it is so painful why would you want to?
This is a bright and exciting future but I also see some challenges with agile adoption. As with adopting anything, it takes people time to figure out what works and what doesn’t and to integrate what is new into the old way of doing things.
I was very excited about object oriented programming back in the late 1980’s. I thought it would revolutionize our industry and it did, to some degree, but far less than I had expected. I’ve met very few development teams that use the object oriented paradigm to its fullest. Most teams I see realize some of benefit of object oriented languages but miss using the best features of objects. I hope this will not true with agility but it is almost inevitable. However, this is just part of the adoption process. In 10 years I expect most development organizations will find ways to make agile work for them.
I think the main benefit of agility and object oriented programming is to shift the way we think about problems which, in turn, helps us shift the culture of how organizations approach problems. These things don’t happen overnight and real change does not happen without some struggle but it is also very exciting because we are figuring it out and improving over time.