BDB650

Kanban, XP, and TDD

Summary

Kanban

eXtreme Programming

Test Driven Programming

Kanban

Kanban's History

Developed at Toyota in the 1940's

Aligned inventory levels with the actual consumption of materials

Requires the passing of cards (kanban)

Uses a Just In Time (JIT) approach

Kanban in Agile

Kanban is a popular Framework for Agile development

It matches the amount of work in progress (WIP) to the team's capacity

Allows for flexible planning, fast output, and clear focus

Kanban Boards

Kanban Boards

Used to visualize tasks and optimize the workflow

Default: To-Do, In Progress, and Done

More columns can be added: testing, waiting, etc.

Provides a single source of truth for the team

Kanban Cards

Feature critical info about work items:

Description of the task

Who is reponsible

Time estimates

etc.

Kanban System

No specific timelines for sprints

Each column of the board has a limited capacity - WIP

As cards move columns, more cards are pulled from the backlog

Scrum vs Kanban

Scrum Kanban
Cadence Fixed sprints continuous flow
Change no change mid-sprint at any point
Roles PO, SM, and Dev Team No specific roles

Test Driven Development

Overview

In "classical" programming, tests are created in "response" to written source code

TDD flips this around: code is written as a response to existing unit tests

TDD Steps

Think about the behaviors that fulfill your requirement. Select a behavior to implement

Write a test that validates the behavior.

Write only enough code to make the new test and all previous tests pass

Refactor the code to eliminate duplicate code

Select next requirement and repeat previous steps

TDD Cycle

TDD Laws

Write no production code except to pass a failing test

Write only enough of a test to demonstrate a failure

Write only enough production code to pass the test

eXtreme Programming

XP Overview

Combines a set of 5 values, 5 rules, and 12 practices

Emphasis on technical aspects

More disciplined (rigid) than other Agile frameworks

Uses TDD as well as aspects of Scrum: iterations and user stories

XP Values

Simplicity: simplest solution that works

Communication: talk frequently and effectively

Feedback: constant comms with stakeholders

Courage: speak up when problems and/or opportunities arise

Respect: Mutual respect between developers and customers

XP Rules

Planning: user stories and iterations

Managing: open and constant communications

Designing: CRC Cards

Coding: Pair Programming and continuous integration

Testing: All code will need to pass unit tests

XP Iteration

Scrum vs XP

Scrum XP
Applicability any agile project software dev
Cadence fixed iteration flexible iterations
Tweaking no longer scrum encouraged
Roles PO, SM, and Dev no fixed roles

Reading

Kanban (required)

Kanban vs Scrum (required)

Kanban WIP (required)

Test Driven Development (required)

eXtreme Programming (required)

eXtreme Programming (required)