Some years ago, I worked as part of a software development organization, which produced the highest quality, most predictable results that I have ever experienced before or since. We never missed a delivery date, always came in on or under budget and delivered systems that fully met customer requirements. At the time the organization was assessed at level 3 in the SEI Capability Maturity Model, but went on to achieve level 5, the highest possible on the scale. It was also ISO 9001 certified.
I have seen aspects of the way this organization worked in other settings but never a situation where all the factors were present, and never with the same level of results. Surprising, considering how effective it was.
Here are the main characteristics of the organization:
Matrixed Organization Structure
The organization was structured as a two dimensional matrix, with functional leads on one axis and project managers on the other. The functions mapped to the traditional elements of software construction (Analysis, Architecture, Design & Development, and Testing) with additional support functions of Quality and Infrastructure Management.
At any one time, there would be several projects moving through the centre at different stages of development. Project managers may be serving multiple projects and multiple clients, and functional leads would be supporting multiple projects.
The philosophy behind the structure was that the functional leads served the project managers who served the customers. This worked well because the functional leads had accountability for their deliverables (on time, on budget, with quality). Each project had a portion of the functional lead contributing in a leadership role, and as the functional leads were the most experienced members in their discipline, this gave every project the benefit of senior expertise. Additionally the approach freed the project managers from internal focus and gave them more time and energy to focus on their customers.
Focus on Customer
With the functional leads focused on the “how to” of every project, the project managers were able to focus much more on the “what” of the customer requirement. The emphasis in the project manager’s role was therefore as an advocate for the customer, rather than as a manager of the project activities, which were monitored by the functional leads. This meant that the project managers were able to spend more time understanding the customer and ensuring that the resulting system effectively supported the customer’s business requirements and priorities.
Quality system – consistent, repeatable process
The quality system that was designed for the organization was a key component of the predictability of the results that the organization produced. It defined the way in which each function was performed. Achieving process repeatability was possible because the same functional leads performed their role for every project and there were always multiple projects being performed. Being permanent members of the organization, implementing continuous improvement was also relatively straightforward for the functional leaders and the quality manager, who together were constantly reviewing the effectiveness of the processes and methods in use. Standard methods and tools were applied to every project.
Contrast this with the more typical project situation where a new team of leaders is brought together for the first time to execute a new project and placed under immediate schedule pressure. It is rare to have a team member whose responsibility it is to define and implement a consistent process – it is usually left up to the project manager – so the “how to” is invented “on the fly” based on a medley of experience. Is it any wonder that so many projects exceed budget and schedule goals?
Strict change control
Have you ever had a house built or even an extension? I have always thought that we could learn change control best from the building industry. They are masters at managing change and ensuring that the customer understands the schedule and cost implications of requesting changes. So it was with this organization. If changes were requested and agreed to by the customer, this reset the baseline against which “on time, on budget” delivery was measured. This served to preserve the reputation for predictability.
So what’s not to like?
Despite this awesome reputation, there were still aspects that customers did not like that we had to guard against. Pet hates included “Black Hole Syndrome”: because the organization was located remotely from most client offices, customers often felt that, once requirements had been agreed, their project disappeared into a black hole and they needed to trust us, until the first prototype or release was ready for demo or acceptance testing, often several weeks. Despite the fact that the organization always had a vanguard team spend time on site with the customer’s staff for the initial phase of a project, many customers were uncomfortable with the fact that the majority of the project team were remotely located. Paying for time sliced leaders was also an issue which had me spending time explaining the value to customers of having these experienced functional managers involved directly in their project, albeit on a time-sliced basis. Some of them got it, many did not. Also the modus operandi of the organization did necessitate that the customer had to be equally disciplined, if they wanted the benefit of predictability. Some customers wanted to sacrifice predictability for the advantage of changing their requirements at a moment’s notice and this did not jive well with the way we worked.
Despite the misgivings of some customers, the organization thrived and was clear proof to both customers and staff that the model worked and worked well. The fact that the organization was ultimately assessed at CMMI Level 5 is a tribute to its capabilities and the dedication of the people who designed it and the team who managed it. In the search for predictability, the holy grail of software development projects, I have yet to see an organizational approach that worked as well as this one.