Table of Contents
What
master-plan is a language to describe declaratively the execution structure of a generic project.
To describe this execution structure, the language models an algebra of projects that is very similar in structure to π-Calculus with operators that combine sub-projects into higher level projects, building a dependency tree, via three ways: sums (alternatives, or), sequences (all, in order), and products (all, any order).
The language also allows annotating projects with metadata such as title, description, owner, etc.. Also estimates such as "trust" (complement of risk), and "cost" (effort or time). master-plan is able to sort projects by priority such that if executed (in the proposed order) it will minimize the expected cost.
Why?
Because the entire project description is encoded in a single, readable, file, we have the following advantages:
- Portable: not dependent on a project management tool, the specification is open and easy to add new tools.
- Versioned: keep in version control and you get the history of the project's evolution.
- Hacker friendly: programmers can edit the file to update progress and refine planning anytime.
- Best practice for Software project management: we like to keep our configurations in the same repository, but never the management of the project itself - why not?
That said, there are a few things that I think master-plan is not ideal (yet) for bugs tracking.
Use cases
I expect the following workflows to emerge when using this software:
- The team edits a plan together and defines higher level project structure.
- Team members may work in smaller groups, or individually, to refine projects into sub-projects (planning).
- Groups may add or update estimates of cost and trust once they learn more information.
- Team member look at the updated graph to decide what is the next priority to be executed.
- Team members may update status and ownership when they work on projects.
- When projects gets too large, groups may render graphs for sub-projects they are responsible and ignore the larger scope.
Examples
Example 1: Business Strategy
Master plan can be used not only for software projects, but anything that needs planning and execution, like a business strategy execution plan.
master.plan file
// master.plan
/**
* This project is a business plan, which vision is state in
* the "root" project - which is run a successful tech-based
* business in a certain market.
*/
root {
title "business"
description "can we run a successful business"
owner "CEO"
} x + p;
x {
title "build technology"
description "can we build the technology ourselves"
} h * b;
h hire + acquihire;
hire {
title "hire"
description "can we attract and retain talent"
cost 20
owner "HR"
trust 50%
};
acquihire {
description "can we buy talent"
cost 100
owner "HR"
trust 100%
};
b {
title "build"
description "our technology can be built and scale"
} phase1 -> phase2 -> phase3;
phase1 {
title "validate prototype"
trust 70%
progress 100%
owner "engineering"
};
phase2 {
title "launch in small market"
trust 50%
progress 32%
owner "engineering"
};
phase3 {
title "scale nationwide"
trust 20%
owner "engineering"
};
// Another way to get technology is to parner,
// instead of building it:
p {
title "tech partner"
description "secure a tech partnership"
} (approvalProcess -> sa) + (approvalProcess -> sb);
sa {
title "supplier A"
trust 90%
cost 10
url "www.supplier.a.com"
owner "partnerships"
};
sb {
title "supplier B"
trust 60%
cost 5
url "www.supplier.b.com"
owner "partnerships"
};
// Approval process is a sub-project we have to go once
// regardless of which partnership, will "open the way"
approvalProcess "approval process" legal -> budget -> executive;
legal {
description "figure out how to write the contract"
};
budget {
description "can we afford?"
};
Output
master-plan master.plan -o output.png -w 2000 -c
Please note that:
- The costs, trusts and progress are inferred to top level projects.
- The projects and sub-projects are automatically prioritized the optimum order to minimize expected cost: from top to down.
(c) 2017 Rodrigo Setti. All rights reserved