I’ve been given several opportunities lately to be thinking about the relationship among product development, agility, and services. In a recent conversation regarding (of all things) how to sample work for artifacts in a CMMI for Services appraisal, it became clear that taking a services view of development actually makes a lot of things more obvious when it comes to where and how to make performance improvements.
Furthermore, the idea that product development can be modeled as the organization of particular services – such that the culmination of all the services results in a product – not only enhances the understanding and performance of the development flow, but it also creates a strong affinity to agile management and development values, principles and practices. In fact, a service-oriented development flow is how Kanban views and manages development, and even shares many parallels with traditional services such as “cumulative” work and flow. And, seeing development as a flow of services simplifies if not eliminates the endless catch-22 of dealing with planning, resource allocation and work volume.
In the video, I was at the tail end of a week-long exposure to a very demanding product development and services delivery context: aboard a pleasure cruise ship. At this stage of our family’s development, pleasure cruising has emerged as our vacation of choice so this was my sixth cruise in over 10 years. The first three cruises were with three different cruise line companies and the most recent three were with the same line. What struck me most about the ship’s (and this cruise company’s) operations were its flexibility and responsiveness to change.
Despite many constraints, within those constraints the ship was autonomous, and, the various departments within the ship had degrees of autonomy. Beyond autonomy, there were clear components run centrally and just as clearly there were components that were decentralized. But it all worked as a single service: the ship. Within nearly every service were products to be developed, whether produced from scratch or recreated afresh over and over again. Yet again, the massive, highly complex service system operated in an agile way by nearly any measure of ‘agility’ in nearly every facet of how it ran.
A few days after my return from the ship I had the opportunity to teach Introduction to CMMI. This offering was to one of my clients and a guest. All participants were sharp and involved – which isn’t always the case with such classes. The class was special in that I was experimenting with new course material for the SEI in which I was delivering content from the CMMI for Development constellation following content from the CMMI for Services constellation. This experience reinforced for me and exposed the participants to the strong relationship between Services and Development, the strong benefits of viewing development as a service (from both operational and improvement perspectives), and, helped my client (who uses Scrum, Kanban, and traditional development in various parts throughout the company) see common threads to help improve performance irrespective of how they approach management and development.
The learning for agile and CMMI cooperation may very well be found in services. Think about it. Now, class, discuss.