Skip to main content

A pretty dumb PM.

Project description

dumbpm

GitHub version Build Status License

A pretty dumb PM.

At the moment it only does projects prioritization: it is pretty dumb, indeed.

The whole philosophy behind dumbpm is that PMs (project managers, product managers, people managers, pokemon masters, etc.) all do some tasks that could use some automation, but at the same time this automation should be as dumb as possible. There are so many changing factors that influence such tasks that you better hire a PM (or a team of researchers to do the automation) to do the clever stuff, not a random software on the internet. In addition, if we keep it dumb, people can just read the code and understand what is going on, if they really want to.

If you have any suggestions for something (but nothing clever!) that you would like dumbpm to do for you, open an issue and let me know.

Prioritization

Giving a table of projetcs defined as below, it outputs a list of projects in order of priority within the optionally specified budget (prioritization as "data problem").

The prioritized list is modelled as the exact solution of a Knapsack Problem with the following value function: norm(norm(value) / (norm(cost) * norm(duration) * norm(risk))) + norm(rigging). Pretty dumb, indeed.

If budget isn't specified, the list will simply be sorted by the result of the above value function. By default, cost is the only thing counted against the budget, but there is an option to use (cost * duration) instead.

$ dumbpm prioritize --help
usage: dumbpm prioritize [-h] [--budget [BUDGET]] filename

positional arguments:
  filename           CSV file with projects definition

optional arguments:
  -h, --help         show this help message and exit
  --budget [BUDGET]  Max budget allowed
  --duration-cost-budget
                     Budget is (cost * duration) instead of only cost

Projects format

Project definition happens in a CSV file with the following structure:

  • Project: name of the project
  • Value: value of the project
  • Cost: cost of the project
  • Duration: duration of the project expressed in unit of times
  • Risk: risk of failure of the project
  • Rigging: arbitrary value used to rig the result (yay, cheating!); the highest the more likely the project to be prioritized (keep in mind that this counts for half of the score of a project)
  • Alternative: comma separated list of projects that are incompatible with this one (e.g.; make lunch vs buy lunch)

Any field which is not specified, will be filled with 0.

There is a bit of slack on the headers of the columns (e.g.; Project, Projects, project, etc. are all alright). Notable mentions: rig and rigging both work; same for alts and alternatives; PQ can be used instead of cost if that's your thing.

Columns duration, risk, rigging and alternatives can be entirely omitted.

Project Value Cost Duration Risk Rigging Alternatives
Buy a better espresso machine 5 4 2 1 9
Buy ambient parfume for the back 1 1 1 1
Find and remove source of bad smell 5 2 4 4 10
Find better coffee vendors 4 2 6 3 5
Buy smart component for roaster 3 5 2 3 Build in-house roasting notification system
Introduce a periodical suggestion survey for treats 3 2 6 1
Buy a more modern sign 3 3 1 1
Contact a designer to re-think the front 5 5 6 3
Buy beds for powernaps 1 3 1 1
Import treats from France 2 4 2 2
Build in-house roasting notification system 3 5 6 5 Buy smart component for roaster

Example

$ cat projects.csv
Project,Value,Cost,Duration,Rigging,Alternatives
Buy a better espresso machine,5,4,2,9,
Buy ambient parfume for the back,1,1,1,,
Find and remove source of bad smell,5,2,4,10,
Find better coffee vendors,4,2,6,5,
Buy smart component for roaster,3,5,2,,Build in-house roasting notification system
Introduce a periodical suggestion survey for treats,3,2,6,,
Buy a more modern sign,3,3,1,,
Contact a designer to re-think the front,5,5,6,,
Buy beds for powernaps,1,3,1,,
Import treats from France,2,4,2,,
Build in-house roasting notification system,3,5,6,,Buy smart component for roaster

$ dumbpm prioritize projects.csv
01 Buy ambient parfume for the back
02 Buy a more modern sign
03 Find and remove source of bad smell
04 Buy a better espresso machine
05 Find better coffee vendors
06 Buy beds for powernaps
07 Buy smart component for roaster
08 Import treats from France
09 Introduce a periodical suggestion survey for treats
10 Contact a designer to re-think the front

$ dumbpm prioritize projects.csv --budget 10
01 Buy ambient parfume for the back
02 Buy a more modern sign
03 Find and remove source of bad smell
04 Buy a better espresso machine

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dumbpm-0.3.1.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dumbpm-0.3.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file dumbpm-0.3.1.tar.gz.

File metadata

  • Download URL: dumbpm-0.3.1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5

File hashes

Hashes for dumbpm-0.3.1.tar.gz
Algorithm Hash digest
SHA256 591f23d91c711d2d7c27813e52b97026c85e4f745acf95c36d13a94c92588eec
MD5 23bf20f972dcca4fd4c1adff97a3a6a7
BLAKE2b-256 a89985d357287184bfc52ae6c3f9c70585a071727a52a1ed64c7bfda12418694

See more details on using hashes here.

File details

Details for the file dumbpm-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: dumbpm-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5

File hashes

Hashes for dumbpm-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dfc8bf31a064976f0d5d9537bcbdd849011ef76b14d544b186a88a5d550a5607
MD5 e04986940cf665d8d1b21973b079ee9f
BLAKE2b-256 479248bb752e4868fe62923592703ad65ae7471ff59a4916d2902596a5fae9da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page