Is there an equivalent to Banker's Algorithm but for project management? For example you have several teams with different tasks and there is a deadlock, how do you resolve and prevent these situations? (For example, team A must do task X and team B must do task Y, but to do Y team A needs to finish X and to do X team B needs to finish Y).

  • 1
    Split tasks into smaller tasks? What would be the case where tasks would be deadlocked?
    – Blaž Mrak
    Nov 25 '21 at 19:57
  • @BlažMrak For example, team A needs component X to finish their task. Team B produces component X, but cannot do so without team A finishing their task first. Like how a processes can become deadlocked. Nov 25 '21 at 20:00
  • 5
    This is a people or business process problem. You solve it by figuring it out, not by applying an algorithm. This is why project managers make the big bucks. Nov 25 '21 at 20:04
  • 2
    Mutual/recursive dependencies are a bad idea, but they do happen sometimes with poor design.
    – Erik Eidt
    Nov 25 '21 at 21:01
  • @Segmentationfault What you said is 3 tasks. A needs X to produce Y, B produces X, but needs Q NOT Y to produce X. Y is blocked by X is blocked by Q. If Y is blocked by X and X is blocked by Y, then what are you even doing? By finish their task do you mean a ticket or an "epic"? Because I have a hard time thinking of an example other than "A make a service that consumes B" and "B make a service that consumes A". But if you split the tasks up, you don't have deadlocks. Am I missing something?
    – Blaž Mrak
    Nov 26 '21 at 9:16

If two components are being developed at the same time, you are in a "codevelopement" or "parallel development" situation.

The most standard approach to addressing this works like this:

  1. Both teams complete their design phase in parallel.
  2. Both teams publish an interface specification for their component
  3. Each team reviews the interface specification for the other team and creates a mock service that matches the specification.
  4. The teams develop their own components against the mocks
  5. When development is complete, you remove the mocks and proceed with proper integration testing.

Even though this is more total work, it eliminates the interteam dependency, and can often result in better team throughput.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.