{"slug":"kanban-board","meta":{"title":"Kanban Board","slug":"kanban-board","kind":"pattern","summary":"Work shown as columns of cards, one column per stage, moved by dragging — the shape of the whole process visible at once, at the cost of everything a table is good at.","problem":"A team needs to see where every piece of work is and shift things between stages. A table shows the records but not the distribution, so nobody notices that one stage is holding thirty items until it becomes an incident.","family":["scan","workflow"],"data_shape":["collection"],"principles":["orientation","surface-dont-bury"],"interaction":["direct-manipulation","scanning"],"density":"low","complexity":"medium","status":"stable","visibility":"public","use_when":["Work moves through a small number of named stages — ideally three to six.","Where things are stuck is a question the team asks regularly.","Moving an item between stages is a normal, frequent action.","Everything in flight fits on one screen, roughly under a hundred items."],"avoid_when":["There are hundreds of items. A board becomes unreadable long before a table does.","People need to compare items on a number — a board has no columns to align.","There are more than about seven stages, where horizontal scrolling hides half the process.","Only one person works the queue. A queue is more efficient than a board."],"alternatives":[{"slug":"dense-operational-table","when":"People compare and sort more than they move things between stages."},{"slug":"review-queue","when":"One person works items one at a time and throughput matters more than overview."},{"slug":"grouped-list","when":"You want the same grouping benefit without giving up alignment and sorting."}],"ask_leo":"Build a kanban board for this workflow.\n\n- One column per stage, in process order, using the stage names the team says\n  out loud.\n- Show a count on every column heading, and let a column show a limit when the\n  team has agreed one.\n- Keep cards small — the identifier, the title, the owner, and at most one\n  more fact. A board's value is the overview, and big cards destroy it.\n- Dragging a card to another column moves it and persists immediately. Show\n  the drop target clearly while dragging.\n- Every drag must also be possible without a mouse: a move action on the card\n  that picks the target stage from a list.\n- Show the age of a card in its current column, at least for the ones that\n  have been there a long time. Stuck work is the main thing a board should\n  reveal.\n- If a column can exceed about twenty cards, scroll it independently and keep\n  the heading and count fixed.\n","related":[{"title":"Linear Workflow","url":"/patterns/linear-workflow","summary":"The topology underneath — get the stages right before drawing columns."},{"title":"Dense Operational Table","url":"/patterns/dense-operational-table","summary":"What a board gives up — alignment, sorting and comparison."}]},"body":"## Anatomy\n\n```\n  To do (4)        In progress (7)     Blocked (3)      Done (12)\n  ┌──────────┐     ┌──────────┐        ┌──────────┐     ┌──────────┐\n  │ JOB-118  │     │ JOB-102  │        │ JOB-097  │     │ JOB-091  │\n  │ Framing  │     │ Wiring   │        │ Glazing  │     │ Strip out│\n  │ Dana     │     │ Sam · 9d │◀ aged  │ Priya·14d│     │ Sam      │\n  └──────────┘     └──────────┘        └──────────┘     └──────────┘\n       …                 …                  …                …\n                    ↑ the count is the point: 7 in progress,\n                      3 blocked — visible without reading a card\n```\n\n- **Counts on headings.** The distribution is the information; the cards are\n  detail.\n- **Small cards.** Four facts maximum. A board of large cards is a card list\n  with extra scrolling.\n- **Age on cards that have aged.** Without it, a card parked for three weeks\n  looks the same as one that arrived this morning.\n- **A keyboard path for every drag.** Drag-and-drop as the only mechanism\n  excludes people and breaks on touch.\n\n## Why it works\n\nIt makes **distribution** preattentive. You do not read a board, you look at it:\none tall column is a bottleneck, and you see it before you have read a single\ncard. No table conveys that in under a second.\n\nIt also makes moving work physical. Dragging a card is direct manipulation —\nthe thing you are looking at is the thing you are changing — which is the\n[consistency](/patterns/consistency) principle at its most literal, and it is\nwhy boards feel good to use in a way status dropdowns do not.\n\n## What you give up\n\nA board has **no columns**, in the table sense, so it has nothing to align.\nThat means no sorting, no comparison across a metric, and no scanning a value\ndown a list. Amounts, dates and durations all become text on cards, readable one\nat a time.\n\nThat is a genuine trade, not a flaw — but it means a board is the wrong default\nfor anything where the question is \"which is largest / oldest / most expensive\".\nMany teams adopt a board for its overview and then discover they have lost the\nlist they actually worked from. Offering both views over the same data is\nusually the right answer.\n\n## Getting it wrong\n\n- **Cards that grew.** Six fields and a description per card, so four cards fill\n  the screen and the overview is gone.\n- **Too many columns.** Past about seven, the process scrolls sideways and can\n  never be seen at once — which was the entire reason to build a board.\n- **A Done column that grows forever**, eventually dominating the board with\n  finished work. Archive it, or cap it to a recent window.\n- **No age indicator**, so the board shows where things are but never that they\n  are stuck.\n- **Drag-only.** Unusable by keyboard, awkward on touch, and impossible on a\n  long column where the target is off-screen.\n\n## Exemplars\n\n**Trello** defined the pattern and demonstrates its limit just as clearly: it is\nexcellent at fifty cards and unusable at five hundred.\n\n**Linear** offers board and list over identical data and lets people switch,\nwhich is the mature answer — the board is a *view*, not the model.\n\n**Jira's board with explicit work-in-progress limits** shows the original\nmanufacturing idea intact: the column count is not decoration, it is a\nconstraint the team agreed to, and the board enforces it.\n\nThe extractable rule: **a board is a view for seeing distribution, not a\ncontainer for work.** The moment it becomes the only way to see the data, you\nhave traded away sorting and comparison for a picture.\n"}