Giter Club home page Giter Club logo

dag's Introduction

Dag

Dag is a tool for thought (tft) that helps you think of dependency maps.

Use it directly in your browser at https://stefanom.github.io/dag/

Dag Screenshot

What are dependency maps?

When working on something with multiple people, it's useful to know what can be done in parallel and what cannot. If we have three tasks TaskA, TaskB and TaskC, can we assign them to different people at the same time, or is one blocked by another? How long is each task going to take? How confident are we about those ETAs? How much uncertainty are we hidding in those plans? which tasks should be done first? Are there ways to refactor the work to reduce risk and uncertainty? How do we know are mapping our opportunity and risk management space optimally with our plan of action?

Why is this useful?

I believe that planning is not about predicting the future but rather a support system to help making better decisions under uncertainty. I also believe that planning tools focus too much on the "artifacts" (the plan itself) which is generally crap and don't focus enough on the value of act of planning itself.

Dag is designed to help you articulate visually what it would be very slow and cumbersom to draw in either drawing programs or in rectangular editing substrates like spreadsheets or on whiteboards.

We tend to avoid continuous planning because the ROI is poor and I feel that this is because planning tools are designed to be "asset generators" (as a way for producers, project or product managers to talk about "the plan" with others) but instead they should be considered "tools to amplify thought" and encouradge exploration, tweaking and continuous updating by everyone involved in a project.

How do I use it?

Point your browser to https://stefanom.github.io/dag/ then start typing in the text area.

The dependency map is drawn dependency by dependency, in the format of

  • taskA > taskB [effort|uncertainty]

which is used to indicate that taskA needs taskB. That is: taskA cannot be completed until taskB has been completed.

The [] part is metadata about taskB and it's optional. If you include it must contain at least the amount of effort (as an integer). Up to you to decide what kind of metric system to use for effort, Dag doesn't care. Optionally, you can provide a measure of how certain you are of such an effort evaluation. Dag calls it uncertainty and it's used internally to pad the effort to account for worst-case scenarios. This number can be a floating point number and the mass of a task is calculated as

mass = effort + effort * uncertainty

So, [2|0.5] will lead to a task of mass 3 = (2 + 2*0.5). This is equivalent to saying "I'm only 50% confident of 2 units of effort for this task".

The Sankey diagram is redrawn for every change you make to the text, so you just type away and the diagram responds.

The name of the task is also its index, so make sure you use the very same name if you want two tasks to be considered the very same and connect in the chart.

How do I save my dependency maps?

Dag doesn't do it for you (at least at this time). You can copy the text you edited in it and save it anywhere you normally keep notes or documentation or whatever and then paste it back when you need to weak it.

How do I run it locally?

Make sure you have node.js installed. The very first time run

npm install

to install all the dependencies. Then type type:

npm run dev

which will automatically open your browser to the right page. If you make any changes in the ./dev folder the page reload automagically.

How do I package it for release?

Type:

npm run release

this will populate the ./docs folder with the latest version of Dag, which is what's served by GitHub at https://stefanom.github.io/dag/

Can I help?

Absolutely, send me a PR or submit a feature request.

What's left to be done?

  • show the difference between mass given to effort vs. mass given to uncertainty
  • highlight the critical path

dag's People

Contributors

stefanom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.