A colleague of mine recently asked what I meant by "critical path." I gave her the following example, which she suggested I share:

"Critical path" is a project management term. It represents the longest running sequence of tasks required to complete a project. For example, given the following tasks:

  • Task A takes 1 hour.
  • Task B takes 2 hours.
  • Task C takes 30 minutes.
  • Task D takes 45 minutes.

If the tasks must be completed in alphabetical order, then the critical path is A-B-C-D. And, the project will be complete in 4.25 hours.

But, if you have a helper, and the tasks only need to start in alphabetical order, then the critical path is A-C-D. And, the project will complete in 2.25 hours.

  • Elapsed Time 0:00 - You start task A. Your helper starts task B.
  • Elapsed Time 1:00 - You finish task A. You start task C
  • Elapsed Time 1:30 - You finish task C. You start task D.
  • Elapsed Time 2:00 - Your helper finishes task B.
  • Elapsed Time 2:15 - You finish task D.

But, what does an agile software developer need with an antiquated term like critical path? I was using it in the context of removing engineering work from a broader business process that could be completed faster if the other department involved could execute their tasks in parallel with engineering. So, there!