• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Code retreat @BMW Car IT
 

Code retreat @BMW Car IT

on

  • 1,544 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,544
Views on SlideShare
1,541
Embed Views
3

Actions

Likes
2
Downloads
4
Comments
0

2 Embeds 3

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

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...