• Teaser Home

    Clean Code Developer School

    Saubere Softwareentwicklung üben – regelmäßig, fokussiert, individuell, angeleitet

Kanban Board

Architecture Kata “Kanban Board”

Develop a software system to support distributed teams by letting them jointly manage their tasks on a shared Kanban board.

A Kanban board consists of a number of columns which can be customized, e.g. ToDo, In Dev, In Test, Done.

Each column can container several tasks up to a column specific maximum (Work-in-Progress limit (WIP limit)). A task consists of a title, an author, and for each column they got moved to a timestamp. In addition tasks can be assigned a color.

New tasks are introduced only in the first column. From there they can be dragged to next column and so on – but only if the destinations WIP limit hasn’t been reached.

In each column a task needs to be assigned to a team member who will be responsible for accomplishing it. Unless a team member has been assigned the task can be pushed back to the previous column. But as soon as a team member has been assigned it’s fixed to that column and can only be dragged to the next column.

However there are to types of columns: activities and queues. Both have WIP limits, but only activities require an owner to be assigned. ToDo or Done are typical queue columns, In Dev is a typical activity column.

Team members will be managed on a per board basis with their name, email address and password. Who opens a board needs to log in.

There are three roles:

  • Admins are allowed all functionality
  • Members are allowed to move only their tasks
  • Readers may only view a board

Boards can be open on several computers at several sites at the same time. Changes made on one computer should be made visible immediately on all others.

Variation #1

Members will be notified of changes. The notification consist of a short description of the change, e.g. “Board ‘Authorization component’: Mary moved task ‘Encrypt password’ to column ‘In Progress’” The notification can be send as an email or some other form of push technology.