views:

536

answers:

10

As a developer, I sometimes come across the term 'Critical Path' in the context of development execution. From wikipedia I know it has to do with identifying the necessary tasks that must be completed in a project.

Is my understanding correct?

What is the best definition of Critical Path you have encountered? How would identify the Critical Path when planning a project?

+1  A: 

I would say that if a task is part of a project, then all must be completed.

My understanding of "critical path" has more to do with dependencies. It's the task with the most dependencies, the greatest risk, the one that will cause the most other tasks to fail if it's not completed. It might be the longest lead time task, so it has to be planned and started early enough to guarantee sufficient time to complete the rest.

duffymo
"All must be completed" may be true with regards to manufacturing / product development, as you have a fixed end point, but software dev is typically versioned / iterative / patched and also can be less predictable to plan. Hence "wishlist" type features marked as the first to go should time become an issue. +1 for the concise CP description though.
MatW
Good point to distinguish manufacturing from software development. Gantt charts precede computers (circa 1915), so it's no surprise that there'd be new wrinkles that wouldn't fit.
duffymo
MatW, in fact product development within manufacturing is also iterative, versioned and products are patched. Car marks and face-lifts are versions (normally referred to as "engineering levels"), development of a new car goes through iterations and rarely started from scratch, cars are patched (patches are referred to as "manufacturer re-call", and often done as part of scheduled maintenance). Similarly to manufacturing, software needs to be released in working configuration regadless of features included. Similar to software, in manufacturing products during development have wish lists.
Totophil
+8  A: 

For an Application:

The critical path is the sequence of activities (out of all the possible sequences within the application) which add up to the longest overall duration, and thus is the first target for optimisation.

For a Project:

The critical path is the sequence of project activities which add up to the longest overall duration. This determines the shortest time possible to complete the project.

Frozenskys
Hehe. I'm always sceptical / worried when people talk of "optimising" a schedule. Its like a lot of code optimisations; rarely necessary nor yields the results / gains you'd expect!
MatW
Nice answer. Concise. +1
Rob Stevenson-Leggett
Do not forget, every delay on one item of the critical path leads to a delay of the whole project.
BeowulfOF
Sometimes the Critical Path can be "optimised"; but that's typically due to falls assumptions on what are dependant tasks (those that muse run sequentially rather than in parallel). See the MacOS-MS-Project project as an example of this (Joel talked about it in one of the podcasts).
CodeSlave
+3  A: 

The critical path is the line of dependent tasks that, if there is a time shift in one of these tasks, will postpone the whole project.

What do I mean by that:

If you have tasks a,b,c,d. A and b have to be done before c can start. D is not pependent on any other task. A takes longer to finish then b, and a and c together take longer to finish then d, [a,c] is the critical path.

Optimizing this path will shorten your project.

It will be good practice to whatch activities on the critical path closely.

Ralph Rickenbach
A: 

The critical path is the one that has no slack.

When project tasks are split between the members of the team, there will be one (or two) people who don't have any slack time between tasks or at the end of the project. As a delay in any of these tasks will cause a delay in the whole project these people are said to be on the critical path.

For example (a 2 person 4 task project):

Person A
Task 1-----|
           |-Task 3----|

Person B
Task 2---|
         |-Task 4---|

Person A is on the critical path. A delay in task 1 or 3 will delay the entire project, while a delay in task 2 or 4 won't (unless it's a major delay of course!).

To mitigate this:

  • Rearrange the tasks to allow people to finish together. This isn't always possible due to task dependencies and you don't really want to put every body on the critical path.
  • Add more contingency to the project so that even the person on the critical path as some leeway.
ChrisF
A: 

An activity of a project is on the critical path if any delay for this activity causes a delay on the project as a whole.

jens
+2  A: 

I'm not sure if it's the best definition, but it's certainly one of the most succinct:

The sequence of dependent steps that determine the minimum time needed to carry out an operation

another, slightly longer one, and in the context of project management (similar to the Wikipedia article that you linked to):

The path through a series of activities, taking into account interdependencies, in which the late completion of activities will have an impact on the project end date or delay a key milestone (there may be more than one critical path)

Your understanding is correct, and the first step to identifying the critical path through a given project, would be to firstly actually define all of the individual steps required to complete the project, then to examine each and every "step" to determine just how dependent/important that step is to both other steps in the project as well as the project overall.

Let's say I want to paint a wall. The steps might be (this is an intentionally simplified example):

  • Buy some paint
  • Buy some paint brushes
  • Paint the wall

Well, given that the end result would be a nice, freshly painted wall, the first step here (Buy some paint) is absolutely critical to the whole thing. If I can't achieve that, everything else stops. Also, every step after that is entirely dependent upon step 1 having been completed previously. Therefore, in this (admittedly contrived) example, the first step in the critical path is buying some paint.

Conversely, Step 2 is important for a good paint job but could potentially be omitted if I just throw the paint at the wall!

CraigTP
Steps 1 and 2 could be completed in parallel, so technically the critical path would be (the longer of step 1 or 2) + step 3.
Frozenskys
@Frozenskys - Yes, you're right. It was a poor and contrived example that I tried to come up with off the top of my head! But it still has to work in serial if we assume that the store that sells us the paint doesn't sell paint brushes (we have to go elsewhere for that). Yes, it's a stretch, I know! :)
CraigTP
A: 

Hi

Imagine a project composed of many many tasks with dependencies between them (eg A must be complete before B can begin, C must start after D starts, etc). The critical path is the set of tasks for which any increase in duration affects project duration. So, if task C is on the CP and takes 2 days too long, the project is delayed 2 days. In complex projects it can be very difficult to determine the CP, and there are likely to be many tasks not on it. Watch out, though, for tasks not on the CP but which move themselves onto it as the project unfolds -- the CP is dynamic not static.

Good luck

Mark Westwood

High Performance Mark
+1  A: 

Project is divided into tasks such as coding, testing. Most tasks depend on each other. For instance, testing depends on coding to be completed. Some other tasks can be run in parallel.

Let's say you have a mini project to write a customer management system. You could roughly devide it into three tasks:

  1. Coding UI - 5 days
  2. Coding backend - 7 days
  3. Integration of UI and backend - 2 days

If you did all of the task sequentially, the project would have taken 5 + 7 + 2 = 14 days.

Let's assume now that UI and backend coding could be done in parallel, so you can assign two developers to work at the same time. However, the integration depends on both task completed.

How long would the project take?

  1. UI coding starts on day 1, ends on day 5
  2. Backend coding starts on day 1, ends on day 7
  3. Integration can only start on day 8, when both UI and backend are completed, and will end on day 10.

Now, you can see, that if UI coding started on day 3, instead of first day it wouldn't actually affect the overall project deadline, because it would complete then on day 7 in time for integration to start. This is called slack, UI coding has a slack of 2 days.

On the contrary if backend coding was delayed, it would have delayed overall schedule by the same amount of days. The task does not have any slack in the schedule.

Backend coding and integration together form project's critical path: if any of the tasks is delayed, the project delivery will be delayed as well.

Project critical path can be defined is either a sequence of dependent tasks necessary to complete the project resulting in the largest duration, or alternative definition, the sequence of dependent tasks necessary to complete the project that have no slack.

Needless to say if a task lies on the critical path it's paramount that it is delivered on time, otherwise, the schedule is going to drift, increasing costs.

Tasks that are not on the critical path are permitted to have variation in duration or start time as long as it doesn't exceed the slack, otherwise they become part of the critical path themselves.

Totophil
A: 

A picture is worth a thousand words. A picture WITH words is worth millions. A link is priceless.

Check out MindTools web site
and NetMBA web site

Brad Bruce
A: 

The sequence of critical dependent tasks to determine the time needed.

Also this term is widely used in mainframe batch cycle. Determine the critical path to optimize the batch cycle. The exercise is to remove the non critical batch jobs from dependencies so that optimized critical path is determined which in turn reduces the batch window time.

kishore