• Stars
    star
    249
  • Rank 162,987 (Top 4 %)
  • Language
    JavaScript
  • Created about 5 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

the game of kanban

DevShop!

I had this idea 10 years ago for a game called DevShop and finally decided to implement a minimal version of it.

It's a kind of 'lemonade stand' game, but instead of buying lemons ๐Ÿ‹ and making lemonade ๐Ÿน, you hire developers ๐Ÿ’ป, testers ๐Ÿ”ฌ and business analysts ๐Ÿ—ฃ, and complete tasks on a kanban board.

Play it online here:

https://devshop.secretgeek.net

Walkthrough

  • click "๐ŸŒŸ start"
  • click "๐ŸŽ find project ($100)"
  • Select on the newly created project in the Inbox column of the kanban board.
  • Select the "๐Ÿค” Founder". (In the animated version this would cause the Founder to walk to the board, grab the card, take it back to their desk, work on it, create a bunch of story cards, and take them back to the board, putting them in the backlog column.)
  • Once the story cards are in the backlog column, click a card to select it.
  • Select the "๐Ÿค” Founder" again. This causes the Founder to begin developing the card. (In the animated version, they would walk over, get the card, take it back to their desk, swear a lot, etc.)
  • The story card eventually ends up in the Test column. Now the card needs to be tested.
  • The founder is capable of developing, testing, and acting as a BA. They don't do any of these things particularly well...
  • Select the card in the test column, then select the Founder, so it can be tested.
  • If it passes testing it is done... and you make money ๐Ÿ’ฒ. (It's possible a bug ๐Ÿ› is found during testing... or if the bug is missed by the tester, the customer can find the bug ๐Ÿž once they receive the card.)
  • when the project is completed you get a completion bonus ๐Ÿ’ฒ.
  • And you can begin another project...

Repeat this until you have enough money to buy a dev or a tester or a ba.

Features include:

  • upskilling people ๐Ÿ“• ๐Ÿ“—
  • training people to increase their efficiency
  • giving them 'initiative' so they can sometimes grab cards for themselves.
  • โ˜• coffee and donuts ๐Ÿฉ
  • ๐Ÿถ dogs and cats ๐Ÿ˜ธ
  • inflation. (i.e. things will cost more and be higher stakes as the game progresses.)
  • (People will get faster as you increase their skills, but jobs will be bigger... thus creating a steady state, a hedonic treadmill, a red queen's race ๐Ÿ‘‘.)

Tips

Some keystrokes....

1. Press 1 to select the first available item in the `Inbox` column
2. Press 2 to select the first available item in the `Backlog` column
4. Press 4 to select the first available item in the `Test` column

..thanks to Richard Mason.

Make sure to buy "โญinitiativeโญ" from the store (when it is available) -- once the workers have initiative you are free to manage the work at a higher level.

Lessons

If you consider it as a tutorial on Kanban or Lean, there are some lessons you can learn by playing this game. These include the following:

  • If work took no time to complete, you would only need 1 worker.
  • The earlier in the process a bug is found and fixed, the cheaper it is to rectify.
  • Bugs should be removed before they get to the customer.
  • Work should flow left to right.
  • You need higher proportions of workers for steps that take longer (e.g. development in this game)
  • The smaller the stories the better. They are less likely to have bugs, and faster to work with.
  • Multi-skilled workers are helpful for alleviating bottlenecks.
  • In a system where bugs and irregular work happen, bottlenecks can appear anywhere.
  • Throughput is a more useful measure than idle time.
  • Good teams are self-organizing, and this requires initiative.
  • A newbie thinks "I wish I could hire a manager to assign the tasks automatically" -- a wise person thinks "I wish the workers had enough initiative to select the tasks for themselves."
  • The system needs to have some slack in it, or there will be no way to respond to bottlenecks.
  • A founder, in the early days, needs to be able to do anything. Later employees can be increasingly specialised.
  • To state the above more generally: in a small company, or when work is volatile or sporadic, generalists are very valuable (even if their skill levels are not very high). In a larger company, or when work is more predictable, certain specialists are very valuable (and busy).
  • Resource levels need to be appropriately balanced.
  • Given a choice between doing something well or doing it quickly, it's better to do it well. It saves time soon enough.
  • People can only work on one thing at a time. If they worked on more than one thing at a time, it would decrease throughput. Multi-tasking is a waste of time. (But multi-skilling is not!)
  • A functioning and growing business can afford to pay a lot for good coffee โ˜•.

Non-lessons

There are many features of the real world, and of workplaces, that are not modelled in this game.

"All models are wrong, some models are useful."

In the real world:

  • not all bugs are so easily dealt with: a single bug can do unlimited damage. That's a vital feature of real bugs, but isn't modelled in the game.
  • workers are not machines. They have good days and bad days, they have real lives. All of this is abstracted away.
  • customers don't pay immediately, sometimes they don't pay at all, even when you've done good work. Life isn't fair like that.
  • you have to pay workers after you hire them. Recurring paychecks aren't modelled in the game because they're not the problem I'm trying to demonstrate. But this isn't a sufficient answer to use in the real world.
  • skill levels are not a simple ladder, "dev skill == 7". They would be better modelled as a bifurcating directed acyclic graph, where every node represents a different atom of skill or knowledge. But there's no emoji for that currently.
  • before you hire a person, you don't accurately know their skill level. Often you don't know afterward either.
  • training takes time and it doesn't have a consistent outcome.
  • sometimes workers leave.
  • projects never really finish. If they went well there will be ongoing support and changes, indefinitely. If they went badly, the lawsuits can also drag on.
  • a situation where "any developer can develop any card" is not achievable. But you can take steps to move in that direction.
  • procurement of goods in the enterprise is not as simple as clicking a "buy" button.
  • workers spend non-zero amounts of their time in meetings, not shown in this game.
  • some related practices I find useful are Daily Standups, Retrospectives, Project Pre-Mortems and Code-reviews. There was no way to integrate these into the game without disturbing the flow.
  • context-switching takes time and effort.
  • some projects are not worth doing at all.
  • some bugs are not worth fixing at all.
  • some bugs are not bugs.

Regarding the risk of skilled employees leaving, I love this:

"What if we train them and they leave?
What if we don't train them and they stay?"

Contributions

Pull requests not actually welcome at this moment. I may take this commercial, and haven't thought through the implications of accepting PRs on it prior to that.

I love PRs normally. Please send PRs to other projects.

More Repositories

1

AwesomeCSV

๐Ÿ•ถ๏ธA curated list of awesome tools for dealing with CSV.
PowerShell
684
star
2

html_wysiwyg

A truly naked, brutalist html quine
HTML
496
star
3

dod

DOS on dope. The last MVC Web framework you'll ever need
Batchfile
183
star
4

ok-bash

.ok folder profiles for bash
Shell
86
star
5

console-adventure

a console.log() adventure
HTML
80
star
6

til

๐Ÿ“˜ Today I Learned
JavaScript
45
star
7

ok-ps

.ok folder profiles for Powershell
PowerShell
34
star
8

csvz

The hot new standard in open databases
30
star
9

AwesomeGUID

๐Ÿ•ถ๏ธA list of awesome things related to Globally Unique Identifiers
16
star
10

today-i-learned

My notes from continual learning ๐Ÿค”๐Ÿ’ก๐Ÿ“—
HTML
15
star
11

today-i-learned-staging

the markdown source of today-i-learned
PowerShell
13
star
12

clowncar

Static Site Generator.... ๐Ÿš—๐Ÿคก๐Ÿคก๐Ÿคก๐Ÿคก๐Ÿคก๐Ÿคก๐Ÿคก infinite clowns emerge from a tiny car!
C#
10
star
13

highlight

Syntax Highlight any powershell, in the console, with `Show-Code '$MyCode = "Colorful";`
PowerShell
9
star
14

pushpop

mental stack manager
8
star
15

pre

The friendly pre-processor
PowerShell
8
star
16

rename-photo

A script for renaming photos in a sortable way (using EXIF data and some handy parameters)
PowerShell
7
star
17

dungeon.css

CSS-based dungeon themes (uses Karcero to generating dungeons/mazes)
C#
5
star
18

markjump

Powershell implementation of Mark & Jump
PowerShell
4
star
19

crumbs

navigate in powershell by dropping crumbs
PowerShell
2
star
20

dgaf

dreams-goals-actions-fears
HTML
2
star
21

nps

HTML
2
star
22

yard-sale

TypeScript
2
star
23

higgins

a html (and markdown) based slide presenter
JavaScript
1
star
24

Out-TShirt

A powershell module for sending output onto a t-shirt.
PowerShell
1
star
25

style_edit

A static html page with editable style
HTML
1
star
26

robots-versus-electric-sheep

artificial life simulation
C#
1
star
27

fuv

C#
1
star
28

coin-toss

1
star
29

zo

C#
1
star
30

o

JavaScript
1
star
31

cubicle-world

1
star
32

vas-arrangements

1
star
33

bad_css_ideas

some css ideas ranging from bad to very bad
HTML
1
star
34

hexerly

Hexerly is a tiny set of helper functions for writing hexagonal games targeting the HTML5 Canvas element. The download includes a set of sample games.
JavaScript
1
star
35

NimbleMemory

1
star
36

breathe

webpage for breathing exercises
HTML
1
star
37

kb

1
star
38

cosmic-ray-detector

HTML
1
star
39

awesome-quine

quines are awesome this is a list of awesome things about quine and awesome quines
1
star
40

markdown-allow-list

allow lists for safe html in markdown
1
star
41

squarified

1
star
42

kv

C#
1
star
43

kp

C#
1
star
44

sysI

1
star
45

lb.com

personal website (list of projects)
HTML
1
star