This week, Betrand Meyer and Marco Piccioni will be moderating a Massive Open Online Course (MOOC) on Agile. There are only few online classes dedicated to practices in software engineering, and this one’s ambition is to further expand the offerings in software engineering education. Another MOOC that comes to my mind is Armando Fox’s SaaS MOOC, now available as Agile Development using Ruby on Rails.
What’s interesting to me is that Betrand Meyer is also the author of Agile!: The Good, the Hype and the Ugly which was published back in 2014 and provided a systematic review of Agile practices, including criticism of some ideas traditionally associated with Agile practices. Agile comes in many flavors including Scrum or XP and can be associated with a sense of radical departure with practices established in the days of the Waterfall development approach. Meyer’s long experience in software engineering and as CTO of Eiffel Software certainly came into play when revisiting Agile practices and providing his opinion on which practices should be flagged as “brilliant, good, hyped and ugly.”
At Ness we run the vast majority of our software engineering labs under some flavor of distributed Agile which we calibrate during what we call blueprinting – the systematic setup of a software lab designed to tick and function like an extension of our partner’s software engineering organization. We use our experience across the years and software labs to gauge the pertinence of a best practice in a holistic way.
In his book, Meyer recognizes short iterations, Continuous Integration, regression test suites, the product owner role, or associating tests with functionality as “brilliant” contributions of Agile. On the topic of upfront design, Meyer shares my view that the deprecation of any upfront design work can be categorized as “ugly”. As an example, if I am a developer retrieving data from Cassandra (a popular distributed database), I may want to capture a Chebotko diagram (see paper) to understand my query patterns before heading straight to my code editor. Meyer also places TDD or Test-Driven Development in the “ugly” category arguing against mandatory test-first practices. Here, I also agree, as I see unit tests being part of the definition of “done” rather than adoption of strict TDD. Some other practices are misclassified, in my opinion. For example, I would argue that self-organizing teams do not deserve a “hyped” categorization as autonomy plays a key role in viable organizations as shown by management cybernetics and lean manufacturing. All of this should make for an interesting and engaging online course!
MOOCs are a terrific opportunity to learn at moderate cost, and I regularly recommend to friends and colleagues courses that might support career or personal goals. Software engineering as a discipline keeps evolving, and it is thanks to folks like Meyer and many other practitioners that we improve the quality of the release deliverables while working in the most professional way possible. Good luck to the students and happy learning!