I was speaking with a colleague today who's working as a scrum master on a project with another customer. While we were discussing on how we both look at project metrics and related subjects, the subject of tooling was touched. They used ScrumWorks at that project and were quite happy with it.

After walking through the tool and specifically the features that dealt with organising releases, projects, etc. I found the tool lacking on one part, like all the others I've seen and/or evaluated; My current client is an enterprise organisation that has hundreds of employees that work on the software development, due to control of the environment works with fixed date releases and has multiple programs and projects running simultaneously.

What I would like is a tool where I would be able to manage the interdependencies of programs, projects, applications, application chains, releases and preferably even resourcing of the overall development effort of the company.

I started to discuss this with my colleague and drew a very high level relationship diagram, dividing the relations into 3 groups;

  1. Project organisation
    • A program has N projects
    • A project has N teams
    • A team has ~5 +/-2 core members
    • A team has 0:N members that are brought to the team for a single task
  2. Chronological organisation
    • A Release consists of 1 to N projects
    • A project can consist of N project phases (prince2) and each phase can consist of N sprints
    • A project consists of N sprints
  3. Technical organisation
    • An application chain (by lack of wording; the chain of applications, that together provide the business functionality) consists of N applications
    • An application can be part of N application chains
    • An application can be modified/build in 1:N projects
    • An application chain can be modified/build in 1:N projects

This was just the 5 second version on paper. When I got home I got interested in the relations and this is my initial view (it's not 100% correct, since the relations between programs and other parts are bigger, but out of sake of simplicity I decided to model from the project part outwards):

  • A program consists of 1-N project
  • A project consists of 1-N teams
  • A project can be part of 1-N releases
  • A project consists of 1-N sprints
  • A project can work on/influence 1-N application chains
  • A project can work on/influence 1-N applications
  • A project can have time-related dependencies on 1-N projects
  • A team works on 1-N sprints, 1 at a time
  • A team consists of 1-N core members (which can change over time)
  • A team can have 1-N temporary members added and removed to execute single, specialised tasks
  • A team works on/influences 1-N applications
  • A team works on/influences 1-N application chains
  • An application chain consists of N applications
  • An application chain is deployed in 1-N releases
  • An application chain is created/modified in 1-N sprints
  • An application chain is worked on in 1-N sprints
  • An application is deployed in 1-N releases
  • An application is created/modified in 1-N sprints
  • An application is worked on in 1-N sprints
  • etc.

So far I have a lot of N:N relations and dependencies where teams can work on the same application for the same release. Not to mention all further dependencies for teams on sprints of other teams, etc.

What I need for my client is a tool where you can manage multiple product backlogs (for different businesses within the corporation), assign them to different programs and/or projects, model the dependencies on applications, projects, etc. Then have the dependencies calculated between the projects and applications, teams, resources, etc. And keep a history of everything for performance tracking purposes. All of this, just to generate a single release planning, get a simple management dashboard that gives the status of every project at any moment in time and shows problems with dependencies, resourcing, etc.

So far I haven't found a single tool that is able to do this.

Which makes me wonder; how do parties like Nokia deal with this and do they deal with it? Do they even have things like project portfolio management implemented on board/director level to steer the company operationally on a consistent level that is in line with the company goals?

In other words; is Scrum really being used in the enterprise?