Many of the places we work have "Master Schedulers." They have "Chief Systems Engineers." They have "Lead Cost Analyst," and "Program Architects" (my role).
These people and the roles they play are critical to the success of the program for several reasons:
- They know how the systems work. These systems are complex, because the programs are complex. A typical Integrated Master Schedule (IMS) for a large manned space flight programs runs in the 30K activity range. Not all are active of course, but the critical path from Contract Award to Launch must in the IMS if it is to credibly shows cost, work effort, resource requirements and programmatic and technical risk management.
- The Cost Lead looks after $600M to several Billion dollars of allocated funding.
- The two Chief System Engineers "own" the design of the space craft, with support from all the technical disciplines - avionics (our area, with Guidance Navigation & Control and Command & Data Handling being the principle software systems), propulsion, life support, structures, safety and mission assurance.
The notion of a Scrum Master has a bit of the smell of these spaceflight program roles, but where is the Master Architect, the Master Programmer, the Master Tester?
In our world the role of a "Master" are formally recognized, compensated, and part of the culture. The two Systems Engineers have business cards with the company logo, the program's logo and the title Chief Systems Engineer.
The positions are filled from the cadre of Systems Engineers that have trained, acquired Masters Degrees, professional certification and shown they are "fit for purpose" to be called Chief Engineer.
They also have gray hair or no hair, many "school of hard knocks" war stories about what not to do, and most of all the admiration and response of their community and the Program Managers that they work for.
Developing a Profession
Could it be that software development outcomes will improve if a paradigm like this were applied? That Master and Apprentice were the spectrum. To be a Master you must not only earn the position from skills, knowledge, and experience, but you must be recognized by your peers. IBM has Fellows, as does the IEEE and the ACM. INCOSE (the system engineering profession organization). These societies have refereed journals, software intensive product areas, a set of guides for practicing the profession of engineering.
When I encounter programmers claiming some process or another is the "right" way to go. Or a blogger making claims that practices that have been in place since the early 60's are flawed and not applicable in his domain (the same domain BTW that those practices are applied to today). I think about the Chief Engineers and the Master Scheduler I encounter on our programs. I wonder if we're missing something in the software development business?