W06SENG411MA2

From Craig

The theory of constraints was developed by Eliyahu M. Goldratt, and is based off the notion that all real systems have at least one constraint. Researchers investigated the effect of constraints on solutions to systems by using algorithms that could optimize systems with several hundred constraints and comparing the results. They found that most of the solutions were too unstable to be practical. The ones that proved most useful were always those with less constraints. This has lead to the principle idea of TOC, that while stable systems must have at least one constraint they are also unlikely to have more than three, otherwise they would quickly degenerate into instability. Companies can improve their profits and effectiveness by isolating these few key areas that limit their performance and reducing how restrictive they are.

Critical chain scheduling is a project management technique that grew out of Goldratt applying TOC to scheduling and manufacturing management. In project scheduling terms, the three constraints that TOC predicts are in the form of process bottlenecks. Thus, critical chain scheduling focuses on finding these bottlenecks and widening them. However, part of TOC is that systems always have at least one constraint, and as such critical chain acknowledges that there is a minimum amount of time tasks require to be completed. One technique of critical chain is to reduce any safety time from schedules. Work tends to expand to fill the allotted time, and it has been show in many projects that time-wasting practices are encouraged when developers have extra time. Even worse, these practices tend to be concentrated at the start of the time interval, so all the emergency time gets used up before any emergencies occur, meaning if any emergencies do pop up deadlines get missed. Multi-tasking is also frowned up in critical chain scheduling. Employees who multitask often spend a lot of time switching between their chosen tasks without finished anything ahead of time, which can cause delays. Lastly, extra effort is not put into finishing things early. TOC focuses on bottlenecks, and the bottleneck in this case is late tasks. Even if things are early, the tasks that rely on them may not be ready to start, which means nothing is gained. Other tasks being early will not speed up tasks that are late, so the bottleneck will not be resolved and any extra resources spent completing a task early are wasted.

One way that the concepts of TOC and critical chain relate to the lecture material is through Brook's Law. As mentioned above, part of the basis of critical chain scheduling is that tasks have a minimum time beyond which they cannot be finished any faster. No matter how many people are added to a project, they cannot help it past a certain point. Plus, the law of diminishing returns comes into effect. When training time is factored in, adding new people may actually delay the product even further, which is Brook's Law. Also, the focus of Tuesdays lecture was measurement and metrics based management. Proper estimates are essential for critical chain scheduling. It is important to have good estimates for task times in order to allot enough time for developers to finish their work comfortably without giving them a lot of extra time that would be better saved in the project buffer. Also, it is critical to have a proper estimate of the amount of resources in order to properly stock the resource buffer and make sure important resources are not unavailable when needed. Finally, if task dependency is well estimated, then all the of the tasks can be scheduled in such a way that no bottlenecks occur. That is, no situations arise where three tasks are scheduled to be completed, yet two of them require as input other tasks which have not been done, meaning parts of the development team have nothing productive to do.


Some examples of such dysfunctional behavior is when a task is split into components and assigned to individuals. Individuals are often rewarded or punished based on their ability to complete their tasks on time. To an individual usually individual success is more important than the entire project success. They will usually apply a safety buffer on time when asked how long to finish the task to guarantee their success. This safety buffer can cause problems to the completion of a death march project. Another example of dysfunctional behavior is when multiple tasks are assigned to a single individual. Since there may be several people waiting on the completion of their task, they will tend to switch back and forth between these tasks when they are rushed by each party that is waiting on their task.


Chapter 7 related to scheduling a project properly so there is a hope of meeting deadlines. It is common in a corperate setting to have a manager allocate the work in such a way that would make it nearly impossible to meet deadlines. An example of this would be trying to get employees to multi task and work on different aspects of the project at the same time. This will lead to getting a little work finished on all aspects but never completing any one of them. This problem can also be compounded when other phases of the project are dependant on previous work


The idea is not to think of a death march as only having enough time, but as a result of dysfunctional organizational behaviours which cause the project to take twice as long.