Design, Develop, Create

Monday, 2 October 2017

(PART 3) IONA Technologies - maturity

Implementation is that phase of the product life cycle that covers the more concrete aspects of product production, including: design, test, and delivery activities. The product life cycle controls how the organisation’s products progress and develop from concept (feature requirement and design) to completion (release).

Since 2002 IONA had achieved equivalence with ISO 9001 certification. Internal activities were described and monitored using the quality management system. Yet while new product development work was seen to be the most important, high value, high profile strategic activity of the company, the fact was that day to day effort was often diverted (reluctantly at times) towards support and maintenance of software already installed or being commissioned at customer sites. The company's engineers were spending considerable time working on software maintenance activities. In fact, 'next version' projects and new feature development time took a back seat to customer support.

The company used a traditional project management paradigm to plan and monitor development however they were struggling to cope with the twin demands of new product development and existing product maintenance. As this was happening the management team and engineers were discussing among themselves if and how it would be possible to adopt an Agile iterative development lifecycle.

This group of activists had decided to evaluate Kanban, Extreme Programming and Scrum. They needed to understand how it would impact their working environment, work practices, management and organisational structure, and also their status as an ISO9001 certified organisation (Figure below).
Figure: ISO9001 QMS continual improvement system

The company's products were large, some greater than 10M Loc. Their software offerings ranged over several industry categories: distributed objects, object databases, standards based architectures for financial and telecoms, embedded systems in 'scale industry' environments that generate, transmit, record and monitor event and process data.

Reviewing a corporate video made around then that promoted the company's product development lifecycle we were presented with a cyclic+layered management system aligned with the organisational structure of: support, test, project management, design and development. Some call this a V model and the same model is also used by many of the world's largest organisations.

However the company's product release history is complex. A typical product line is released in a steady sequence of major and minor releases (figure below). Major revisions of the main product are released approximately 4 times a year, but they also deliver maintenance releases including ‘roll-up’ patches, custom releases and minor updates every other week.

Subsidiary products that are dependent on the main product IONA's Orbix deamon (Object Request Broker). A daemon is a program that runs as a background process and in concert with daemons on other computers. The smaller teams that manage these software products will often need to release versions that are built with (synchronise against) the main product.
Figure: Indicative release history Y1-Y4

As is typically in the software industry, IONA's customer support queues were highly volatile (see figure below). Customer support queues fluctuate wildly over time and may sometimes halt new product development projects in order to address urgent customer demands. This is partially because the products depend upon each other but also because they exist within a constantly evolving external software ecosystem. The products need to operate within various browser versions, operating systems, and hardware platforms. External environmental changes often force software to be updated and drive both maintenance and new product releases.

Figure: Indicative support queue activity Y1-Y4

In summary; the organisation follows two very different approaches to managing production. On the one hand there is a sequential/linear process for managing and releasing new product versions; the NPD (new product development) approach. On the other hand there is on-going support and maintenance work which is highly responsive, crisis driven and reactive.

Provide an analysis and recommendations for future action.