Dimension: Technical Complexity

Technical complexity challenges a project when the problem being solved is complex, or the solution is complex, or the implementation is complex. Simply put, some problems are harder to solve than others. Understanding written English is a hard problem. Understanding spoken English is generally considered an even harder problem. Regardless of the source of complexity, the risks are very real. A technically complex project may suffer from outright failure, delays, or excessive rework. Technical complexity is not likely to be the biggest challenge for most projects. Nonetheless, it can represent a real challenge, and SCM cannot directly address it. There are mitigating steps, though, and SCM can help with these.


A project to understand written English would have an approach dictated by a subject matter expert. The approach would then be digested by a project architect to decompose the system into manageable subsystems. This decomposition is a standard part of the development repertoire for addressing complexity, and is one area where SCM techniques can help.

Beyond the decomposition of the architecture, a technically complex project needs to inform the participants about the subject matter, the solution approach, and the internal details of the architecture. Selling airline tickets doesn’t seem like a hard problem. The code itself is rather straightforward, with the only significant constraint being the limited availability of tickets on a particular flight. But supporting the heavy transaction volumes involved with air travel may require a technically complex implementation. Another area where SCM techniques can help mitigate complexity is by monitoring and enforcing the performance of process steps, or _ceremony._ Ensuring that documentation, review, testing, and integration are performed helps to spread understanding about the system.

Ceremony is a trade-off. It reduces developer output in favor of other activities. (The _Agile_ approach to development is largely a reaction to the excessive amount of ceremony required on some projects.) But in a project where ignorance of the subject matter or of the solution approach represents a real risk to the success of the project, ceremony that distributes knowledge or understanding throughout the team can be a significant benefit.

There are some areas where SCM techniques can help mitigate the challenge of a hard project. Construction techniques help facilitate decomposing the system, depending on its size and internal structure. See _Component-based Development, Service-oriented Architecture,_ and _Software Assembly._ Ceremonious techniques make it easier to enforce completion of knowledge gathering and requirements achievement activities in sync with development. See _Automated Enforcement of Standards, Gated Work Flow,_ and _Requirements Management._ Finally, _System Architect_ is an Organizational technique that proves particularly useful when the system has a high degree of interdependency.

Leave a Reply