(Re: “Agile processes adopted widely; Scrum leads the way,” December 2011, p. 20), many of the organizations I visit use “Scrum” as the catchall term for any Agile practices or approaches they’ve adopted. It usually means most (though not always all) of the 3-4-3 Scrum roles-meetings-artifacts, plus 10-90% unit test coverage and TDD, continuous integration, and other XP engineering practices, plus a variety of other practices to fit, e.g. ATDD, DDD, lean for managers, etc. I don’t think you can draw the conclusion from survey responses about methods in use at all, particularly if you don’t include an option of an agile “blended, home-grown” approach.
Point/counter-point over functional programming
In the December 2011 issue, in response to Larry O’Brien’s column, reader Dev declared that there was no functional programming bandwagon. “For more than 50 years, mainstream programmers always prefer a non-functional language. If you have tried to write non-academic programs in a functional language, you’ll know why they present all kinds of hassles when dealing with simple things like files and file systems,” he said.
Another reader, Mark, added this:
“The 21st century’s signature contribution to mainstream programming: unit testing.” What? Unit testing has been around forever (or at least for the 40 years I have been in the business).
Larry responds to Dev: It seems to me that there is a functional programming (FP) bandwagon: The influence in the .NET world is clear, with LINQ being a prime driver of the evolution of the .NET languages. In the Java world, I feel that there is industry motion toward Scala as the best “next Java.”
As to whether FP is “superior” to object-oriented programming when it comes to mainstream enterprise development, or only excels in the algorithmic realms, I think that’s a huge debate that the industry needs to have. My old construction was, “LISP has been touted in academia for 40 years, and everyone abandons it when they move into industry. Maybe that has some significance?”
But as I’ve tried to say in these two columns, it seems to me that “FP approaches” (state externalized into parameters, functional rather than structural composition, etc.) have become more commonplace for totally pragmatic reasons. I think that has “primed the pump” as it were, and I think that FP (an old concept) is about to be discovered anew, and everyone’s going to shout “Silver bullet! Silver bullet!” Regrettably, I anticipate that if some of us with gray hair say, “Well, you know, it’s fine, but it’s not magic…” we’re going to be dismissed as “not getting it.”
…and to Mark: Yes, unit-testing has been “around” forever, but it has only become a mainstream development practice in the 2000s. In the 1990s or before, I would be surprised and happy to find a test suite embedded in a source-code tar ball (especially a unit test suite). Today, I would be surprised to check out a new codebase and not find such a suite. The shift in expectations about testing and quality is, to me, the “signature” shift in the programming zeitgeist in the 2000s. Unit-testing was downright rare back in the days of statically linked single-entry-point programs.