Code retreat @BMW Car IT
Upcoming SlideShare
Loading in...5
×
 

Code retreat @BMW Car IT

on

  • 1,596 views

The slides I used during our code retreat at BMW Car IT.

The slides I used during our code retreat at BMW Car IT.

Statistics

Views

Total Views
1,596
Views on SlideShare
1,591
Embed Views
5

Actions

Likes
3
Downloads
4
Comments
0

2 Embeds 5

https://www.linkedin.com 3
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Code retreat @BMW Car IT Code retreat @BMW Car IT Presentation Transcript

  • 1.BMW Car ITCode Retreat Sebastian.Benz@bmw-carit.de
  • 1. code2. delete 6x3. repeat
  • The point of a code retreat is not to make progress on the problem. The point is to write perfect code! Corey Haines
  • In each session...1. Set a goal2. Try to reach it3. Destroy your code4. Retrospect
  • Pair Programming• Talk about your assumptions, short-term goals, general direction• Switch roles frequently• Communication: "This method is too long" vs "Could we make this method shorter?"• Exercise: Ping-Pong-Pairing - one person writes a test, the other tries to fix it. more http://jamesshore.com/Agile-Book/pair_programming.html
  • Session IGet to know the problem...
  • Conway‘s Game of Life
  • Conway‘s Game of Life
  • 1. Any live cell with fewer than two live neighbours dies, as if caused by under-population.
  • 1. Any live cell with fewer than two live neighbours dies, as if caused by under-population.
  • 1. Any live cell with fewer than two live neighbours dies, as if caused by under-population.
  • 2. Any live cell with two or three live neighbours lives on to the next generation
  • 2. Any live cell with two or three live neighbours lives on to the next generation
  • 3. Any live cell with more than three live neighbours dies, as if by overcrowding.
  • 3. Any live cell with more than three live neighbours dies, as if by overcrowding.
  • 4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.
  • 4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.
  • Notes• All rules are applied simultaneously• Start by focusing on the rules• No GUI - use tests instead
  • Session IIEverything is an object.
  • Example neighbours CellCellCell Cell vs. Cell CellCell Cell
  • Challenge• Thou shalt not use arrays.
  • Session IIITest-drive your design.
  • Test-first ≠ Test-driven
  • TDDWrite a failing Make the unit test test pass Refactor
  • TDD as if you meant it• Write one failing test• Make the test pass by writing implementation code in the test• Create a new implementation method/function by: • extract method on implementation code from (2), or • moving implementation code from (2) into an existing method• Only ever create new methods in the test class• Only ever create implementation classes to provide a destination for extracting a method created as per (4).• Populate implementation classes by moving methods from a test class• Refactor
  • Example
  • Challenge• Thou shalt TDD as if thou meant it.• Thou shalt not use the debugger.• Thou shalt know in advance which test will fail.
  • Session IVIts all about the looks...
  • "There are two hard problems in computerscience: cache invalidation, naming things, and off-by-one errors." Eric Florenzano / Phil Karlton
  • "There are two hard problems in computerscience: cache invalidation, naming things, and off-by-one errors." Eric Florenzano / Phil Karlton
  • Example
  • Challenge• Thou shalt use good names.• Thou shalt express your intend by method names.• Thou shalt have only methods with LOC < 3.
  • Session VMore challenges...
  • Challenge• Thou shalt use only functions and constants. or• Thou shalt not use loops (while, for, iterators,..).
  • Session VIThe end game...