While a correctly developed project schedule is a thing of beauty, a poorly created one can be a source of frustration to the project team and risk to the overall project success.
Developing a schedule before spending time to decompose the scope of a project is likely the primary sin of most poor planners, but it is closely followed by the incorrect usage of schedule dependencies, constraints & deadlines.
- Schedule dependencies represent a logical connection between two discrete activities. Such relationships should be related to the nature of the activities themselves and NOT to who will perform the tasks or to other such constraints. The dependencies most commonly provided include:
- Finish-to-Start: the most common causal relationship hence no explanation is necessary for its usage.
- Start-to-Finish: Rarely used but is useful when developing a schedule backwards from a fixed end date.
- Start-to-Start: this represents a true relationship between two activities and has nothing to do with their predecessors. If I happen to have two tasks that start at the same time because of a predecessor, that is better represented as two finish-to-start relationships (e.g. systems testing & developing documentation can both begin once development is complete, but there is no relationship between systems testing & developing documentation so we wouldn’t want to use a Start-to-Start dependency here). This dependency is often used with a lag to represent the connection between two activities that run in parallel but cannot start at exactly the same time (e.g. apply the first coat of paint & apply the second coat of paint). A true Start-to-Start example is a race between two runners where each runner is represented as a separate activity – while they will likely finish at different times, both must start at exactly the same time.
- Finish-to-Finish: this is generally used to represent activities that must complete at the same time so as to not impact their successor activities or one or more of the objectives for the project. A non-project example of this is the act of preparing food at a restaurant – the chefs must ensure that the main course and garnishes are ready at exactly the same time so that plating can be done without impacting quality.
While I have not tried to provide a comprehensive walkthrough for each of these features, hopefully it clarifies their usage such that the right tool can be used for the right job!