With all the brouhaha about Agile methods in the last year or two, it’s hard not to get carried away in all the excitement. But, sometimes when balance sets in, it’s hard for me not to wonder — what’s really new about Agile that’s creating such an enthusiastic response? Now, I understand and appreciate that Agile has its critics, sceptics and nay sayers, and that’s probably a good thing as we head into an Agile bubble. But, even among its supporters and advocates, some introspection is probably a desirable thing, isn’t it?
Musing on this topic, I think back to some of my very first projects in the early 1990s back when I was a software developer. They were in the defense industry, and in those exciting days, we had:
1. Small, collocated teams. Usually, we operated in small teams of about 3-4 developers, a tester and a clear customer. We were collocated in a shared bullpen, even we did not pair program.
2. On site customer/product owner. Our customer was usually a colonel looking to make a mark by building a software system that delivered real value.
3. Daily meetings. We had daily meetings with our customer and entire team, including our managers. Okay, so we didn’t standup, and we didn’t have the nice 3 questions we do now, but these meetings were pretty productive, and gave the customer a real sense fo what they were getting, and us great interaction with them and each other.
4. Technical discipline. We had object libraries to package and streamline code development, code reviews and simple, clear design. We checked in often and integrated very often.
5. Software studio/craftsmanship. We had senior programmers who were pretty strict about shepherding the system, and apprentices like me had help and mentoring as we progressed to become journeymen and master crafsmen ourselves.
6. Heavier methods on large projects. On larger projects, the confirguration management and documentation was more rigorous, the code reviews more formal and the touch of the senior programmers a bit more onerous. The team dynamics were not as fun, but we still had sub-team focused on particular modules. Overall, it was amazing how much quality, valuable code we produced because of the additional structure.
As you can see, even though we didn’t call it Agile, many of the accoutrements of Agile were very much present on our early projects. So, I have to wonder, what’s really new about Agile?
Not sure I can answer that question authoritatively, but I understand that Test Driven Development is perhaps the only new practice in XP. I can’t think of any other practices in XP, Scrum, DSDM, etc that can be claimed as radically new. Therefore, I think the thing(s) that it new about Agile is not so much this or that practice, but the presentation of a prescriptive set of simple, essential practices. By boiling things down to the minimum, and by perhaps pedantically insisting on these basics, Agile methods have tended to reliably deliver customer value.