Contracts are as much about collaboration and trust as they are about protection. While projects are not necessarily governed by contracts, all entail some compact between participants. From in-house developments with shared ownership on one hand, to fixed price outsourcing on the other hand, success will depend on collaboration and a community of purpose.
Hence, a first objective should be to prevent prejudiced assumptions and defensive behaviors. Then, taking a cue from Game Theory, compacts should be designed to enhance collaboration between parties by establishing a non-zero sum playground where one’s benefits don’t have to come from others’ losses.
Players and Stakes
Basic participants of engineering projects can be put in two groups, possibly with subdivisions: business units expressing requirements, and engineering units meant to provide solutions.
The former (user, customers, or stakeholder) specify the needs, pay for the outcome, and expect to benefit from its use. Their success is measured by return on investment (ROI) and depends on cost, quality, and timely delivery.
The latter design the solution, develop the components, and integrate them into target environments. Narrowly defined, their success is measured by costs.
Hence, while stakes may clearly conflict on prices, there is room for collaboration on features, quality and timing, and that may bring benefits to both customers and providers.
Communication and Collaboration: Modeling Languages
Understanding is a prerequisite to collaboration, and except for in-house developments, there is no reason to expect immediate (aka mediation free) understanding between business and engineering units. Some common language is therefore required if heterogeneous concerns are to be matched.
While in-house developments under shared ownership can proceed with domain specific languages, collaboration between different organizational units along time can only be supported by modeling languages with non specific semantics.
Assessments and Strategies: Requirements Metrics
If participants are to act rationally based on symmetric information, they must agree on some measurements for size and complexity.
Given that collaboration is not to offset interests by nature different or even conflicting, participants’ strategies must be based on shared and reliable information regarding their respective stakes. Moreover, if timing is to matter, projects will have to be measurements reviewed for changes, and strategies redefined accordingly.
Despite their shortcomings, requirements metrics are nonetheless a necessary component of any collaborative framework, with or without explicit contracts.
First of all, some measurements are required to set schedules and plan resources. Even faulty, those estimators will serve their purpose if agreed upon by all participants, with possible biases redressed by consent, and lack of accuracy reduced or circumscribed progressively.
Then, as engineering projects often come with intrinsic uncertainties, they may go off-trail. Providing timely and reliable indicators, participants should be able to anticipate hurdles, reassess strategies, and amend agreements.
Finally, metrics will make room for arbitrage and differentiated strategies; given trustworthy information and clear acceptance criteria, participants are in a position to weight their respective stakes with risks, rearrange their priorities, and plan their endgames accordingly.
Prices and Acceptance: Contracts
While trustworthy information is a necessary condition for cooperation, it’s not a sufficient one, as players may be tempted to defect (aka cheat) if they think they can get over with it. Leaving out ethical considerations and invasive regulations, the best policy should be to set rewards and sanctions such as to make a convincing case for cooperation benefits.
That can be achieved if participants can opt for differentiated and non conflicting strategies set according model layers.
Starting with business processes (aka computation independent models) and expected return on investment, customers consider system functionalities (a) and ask providers for feasibility (b), and schedules (c).
Given a functional architecture (aka platform independent models), participants may define strategies: customers associate features with date and expected benefits, providers plan resources and deliveries for products (aka platform specific models and code).
Commitments, by customers on prices and providers on dates, are made at two levels: functional architectures (d) and features (e).
As for any iterative process, changes must be explicitly circumscribed by invariants, e.g functional architecture of supporting systems. Yet, within those constrains, there may be room for adjustments as providers’ costs and customers’ returns may be contingent on schedules.
Processes: Time, Risks, Responsibilities and Milestones
As Einstein put it, “The only reason for time is so that everything doesn’t happen at once”. That seems a perfect fit to project planning, as illustrated by two archetypal project configuration:
- At one extreme, in-house projects with shared ownership may operate within their own time wraps (aka timeboxes) because decisions by customers and providers are taken jointly and simultaneously.
- At the other extreme, outsourced projects are set along sequenced milestones and governed by different organizational units, each with its own time scale. With tasks performed independently and decisions made separately, time becomes a factor and processes are introduced to define time units and manage risks and decisions alongside.
More generally, engineering processes are introduced when decisions are to be made along time by different organizational units. As a matter of fact, time is governed by changes and the decisions to be made thereof, and the sequencing of tasks should be designed accordingly:
Technical: engineering processes come with their own intrinsic constraints regarding the sequencing of operations. When those operations can be performed independently of contexts the whole sequence can be seen has without temporality and wrapped into a single step. Otherwise they must be associated with distinct process steps.
Contractual: while uncertainties about contexts may affect both expectations and commitment, decisions have to be made notwithstanding. But decisions carry risks and should therefore be factored out, with rationale and responsibilities stated explicitly. While some responsibilities may be shared, decisions about contexts should remain the sole responsibility of the participants directly in charge and appear as milestones set in contracts.
Managed: whatever the number of model layers and automated transformations, engineering processes set about and wind up with human activities. Given that resources and skills are by nature limited, participants have to make the most of their use. But once milestones are set and technical constraints identified, each participant should be able to optimize its own planning.
That makes for three basic project configurations:
- Requirements analysis is about business requirements and feasibility. Its main objective is to identify technical and contractual milestones.
- Use case developments are self-contained projects under shared ownership, bounded by contractual milestones. They come with defined prices and schedules whose mix can be managed by consent.
- System functionalities are set by cross-cutting objectives and their development is therefore governed by contractual milestones and schedules.
- Agile and Phased approaches
- Spaces, Paths, Paces (Part 2)
- Work Units
- Products, Projects, Processes
- Project Management
- Contract Driven Modeling