Code Monkey home page Code Monkey logo

help-me-decide-it's Introduction

Help Me Decide It!

Unit Tests

This application helps you decide which tasks to prioritize, based on Eisenhower's Matrix.

einsehower-matrix

Using relative comparisons to come up with a general priority

A Task is one thing that we want to prioritize. In the diagram above, they would be the post-id cards.

To distribute the tasks on the quadrants, we must assign two values to them: their Importance and Urgency.

Since it's sometimes hard to assign these values independently, we will do a system in which we compare tasks two by two. For example, given a task A and task B, we will pick which one is the most important, and the most urgent (it may be the same task, or maybe one is more important but the other is more urgent).

comparison

Once these comparisons are done, which task will have an overall value of importance and urgency, which will allow us to place them in the quadrants as we see on the diagram.

Generating a task list from the priority values

Having the tasks placed on the quadrant, we will use a distance function to transform a 2D diagram into a sorted list of tasks, which can be assigned to a backlog etc.

That is achieved by measuring the Euclidian distance of each task to the point of maximum urgency and importance (red dot on the diagram). Note in the diagram that by measuring these distances, we came up with the task order of E, F, D and G, although there were in different quadrants.

prioritization

help-me-decide-it's People

Contributors

rodbv avatar

Stargazers

 avatar

Watchers

 avatar

help-me-decide-it's Issues

Create a "comparer" for tasks

Create a "comparer" that will get all the tasks from a matrix and compare them 2 by 2.

For example, when comparing tasks A and B, if A is decided to be more important than B, it will have its importance property increased by 1.

Similarly for urgency. Importance and Urgency are independent, so it's possible that A is set as more important but B is more urgent.

One problem we have here, is that to compare all tasks 2 by 2 may end up in too many comparisons. For instance, if we have 20 cards, that would be the combination of 20 items 2 by 2 which is 20!/(2!)(18!) or 190 comparisons.

One way to reduce this is to consider the comparisons to be transitive, i.e. if A is more important than B, and B is more important than C, then we consider A more important than C and this comparison doesn't have to be made by the user.

The sorter method should be iterative and keep requesting the comparison of 2 cards until all of them have been classified.

Note: To make this work with any number of cards we may have to remove the maximum limit allowed for urgency and importance (currently set from -10 to +10 on Task.MAX_SCALE_VALUE and Task.MIN_SCALE_VALUE respectively.

Rename task Ranking as Priority

We currently calculate a task's "ranking" as the Euclidian distance of the task urgency and importance coordinates in relation to the point of maximum importance and urgency (see prioritization.jpg on the project's root).

That means that the higher the ranking value, the less urgent/imporant is the task.

This is misleading as the convention is that the higher the ranking of a thing, the more "important" it is.

Therefore we will replace the term ranking with priority across the project, as priorities as usually thought as "the lower its number, the more important it is", on a project the most important task is assigned "Priority 1", the second most important "Priority 2" and so on.

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.