Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO...

52
Coderetreat behind the scenes @mar%nklose

Transcript of Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO...

Page 1: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Coderetreat(behind(the(scenes((@mar%nklose,

Page 2: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Learning(on(the(job(

h.p://www.flickr.com/photos/coast_guard/5662650628,

Page 3: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Performing(on(the(stage(

Page 4: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Prac5ce?(

h.p://www.flickr.com/photos/oakleyoriginals/2749348015/,

Page 5: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

eine(Lösung?(

Page 6: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Kenne(deine(Tools!(

Page 7: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

von(einander(lernen(

Page 8: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Loca5on(•  Steckdosen,&,Strom,•  bequeme,Tische,/,Stühle,•  Kaffee,/,Getränke,•  Frische,LuS,,(Mi.ag,woanders?),

•  Catering,(Sponsoring?),•  Platz,für,Retrospek%ven,•  Flipcharts,so,aufstellen,,dass,man,diese,ohne,viel,drehen,sehen,kann,(mehrfach,anfer%gen),

•  No5zblöcke(&(S5Ce((•  Flipcharts,•  Post_Its,

Page 9: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Aufstellung(

•  Tischgruppen,,sind,besser,

Page 10: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Einladung(

•  (Loca%on,sichern),•  4_6,Wochen,vorher,,

(bei,schon,bekanntem,Umfeld,und,viel,Werbung,,,geht,es,nocalls,auch,mit,2,Wochen),,

•  Hinweis:,,„IDE$&$Tes)ngframework$sollen$eingerichtet$sein“$

•  Noshows,einplanen,,können,20_50%,sein,

Page 11: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

FacilitatorGAufgaben(•  Mo%va%on,•  sichere,und,vertrauensvolle,Umgebung,zum,,Ausprobieren,&,Lernen,schaffen,

•  Ablauf,sicherstellen,•  Verpflegung,sicherstellen,,(eventuell,über,Host),

•  Teilnehmer,herausfordern,und,,dabei,helfen,„besser“,zu,werden,

•  Gefühl,vermi.eln,,dass,es,ein,toller,Tag,ist,und,alle,etwas,lernen,

Page 12: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Frühstück(verbindet(

Page 13: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

,,

Game(of(Life(

Page 14: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

,,

((

Page 15: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

á(45(min(

Page 16: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

walk(around(and(take(notes(

Page 17: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

ask(instead(of(telling(

Page 18: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

delete(your(Code!(um(Sackgassen(zu(vermeiden(

Page 19: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Retrospek5ve((&(Pause(

Page 20: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have
Page 21: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Pair((Programming,

Page 22: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Clean(Code(

Page 23: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Refactoring(

Page 24: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Constraints,

Page 25: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Am(Ende(3(Fragen:(

•  das,Gelernt,zelebrieren,•  sich,austauschen,und,bestä%gen,•  wich%ges,Feedback,für,den,Facilitator,

Page 26: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

1.(Was(hat(Dir(gefallen?(

Page 27: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

2.(Was(hast(Du(gelernt?(

Page 28: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

3.(Was(wirst(Du(anwenden?(

Page 29: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have
Page 30: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

4000 Developers

Coderetreat

200 Locations

SA(14.12.2013((

Page 31: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

andere(Formate(

h.p://www.flickr.com/photos/randychiu/4603464896,

Page 32: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Hab(keine(Angst!(

•  das,Format,hilS,Dir!,

Page 33: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

CoGFacilita5ng(

•  man,lernt,sehr,viel,dabei,

•  insbesondere,bei,größeren,Gruppen,sinnvoll,

•  prak%sch,bei,ungerader,Anzahl,von,Teilnehmern,,(einer,kann,mitcoden),

Page 34: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Constraints,

Page 35: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Simple(Design(

1.  Passes,its,tests,2.  Minimizes,duplica%on,3.  Maximizes,clarity,4.  Has,fewer,elements,

Kent,Beck,

Page 36: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

h.p://www.flickr.com/photos/jmrosenfeld/3154138479/,

Ping(Pong((op5onal:(•  evil(•  mute(

Page 37: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Baby(Steps(

Page 38: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Baby(Steps(Rules(,1.  Setup,source,control,repository,2.  Setup,a,%mer,for,2,minute,interval,when,you,start,3.  Write,exactly,one,test,

1.  If,the,5mer(rings(and,the(test(is(red(then,revert,and,start(over(2.  If,the,test(is(green(before,the,%mer,rings,then,commit,

4.  Restart,the,%mer,(no,discussions,in,between),5.  Refactor,

1.  If,the,5mer(rings(and,the(refactoring(is,not,complete,,then,revert(and,start(over(

2.  If,the,refactoring(is(complete(before,the,%mer,rings,then,commit(6.  Go,to,3,

BTW:,•  The,%mers,should,run,con%nuously,,don’t,stop,to,chat!,,

Adrian,Bolboaca,,,

Page 39: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Baby(Steps(Tipps(

•  git,(oder,ähnliches),benutzen,•  cheat,sheet,für,git,verteilen,•  in,Einladung,git,Installa%on,empfehlen,,•  vielleicht,Baby_Steps,Regeln,als,Flipchart,,

Page 40: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

IF( THEN(

ELSE(

No(Condi5ons(at(all(

Das,geht,doch,gar,nicht!,

Wie,oS,denken,wir,,dass,etwas,nicht,geht,?,...,

Page 41: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Polymorph(

•  tote,,lebendige,Zellen,•  Vererbung,vs,Delega%on?,•  Tipp:,zusätzliche,Arten,

hinzufügen,(z.B.,Zombie),

Page 42: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

No(Mouse(

•  Tipp:,– Shortcuts,auf,Flipchart,sammeln,,

Page 43: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

TDD(as(if(you(meant(it(1.  write,exactly,ONE,failing,test,2.  make,the,test,from,(1),pass,by,first,wri%ng,implementa%on,code,

IN,THE,TEST,3.  create,a,new,implementa%on,method/func%on,by:,

1.  doing,extract,method,on,implementa%on,code,created,as,per,(2),,or,2.  moving,implementa%on,code,as,per,(2),into,an,exis%ng,

implementa%on,method,4.  only,ever,create,new,methods,IN,THE,TEST,CLASS,5.  only,ever,create,implementa%on,classes,to,provide,a,des%na%on,

for,extrac%ng,a,method,created,as,per,(4).,6.  populate,implementa%on,classes,by,doing,move,method,from,a,

test,class,into,them,7.  refactor,as,required,8.  go,to,(1),

Keith,Braithwaite,

Page 44: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Object(Calisthenics,1.  Use,only,one,level,of,indenta%on,per,method,2.  Don’t,use,the,else,keyword,3.  Wrap,all,primi%ves,and,strings,4.  Use,only,one,dot,per,line,5.  Don’t,abbreviate,6.  Keep,all,en%%es,small,,

(method,max,lines,5,class,max,50,lines,,package,max,10,classes),

7.  Maximum,two,a.ributes,per,class,8.  Use,first_class,collec%ons,9.  Don’t,use,any,ge.ers/se.ers/proper%es,

Jeff,Bay,,

Page 45: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Freie(Wahl(,

•  z.B.:,– Dojo,– Session,#2,– keine,Maus,– Freestyle,(TDD),– Tell,don‘t,ask,– TDD,As,If,You,Meant,It,– Polymorph,...,

,

Page 46: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Constraints*(•  use a language you never used before •  code swap (with another team) •  no automated refactorings •  choose new requirements for other

teams Teamwork : •  distributed team (one implements the board the other

the rules, serval integration points eg. every 5 min) •  work on (Legacy) Code form the previous session

of another team, you are only allowed to "phone" them if you have questions

•  quick design for other team (surprise) •  do a handover to another team eq. QA department Pairing : •  batting practice: one writes the tests,

the other one the production code •  remote pair programming •  don't talk with your pairing partner (mute ping pong) •  evil coder (find the loophole) •  one person only writes the test code without ever

seeing the production code Constraints •  no return values •  no state •  verbs instead of nouns •  no data structure •  DRY •  burtual refactoring games •  TDD as if you meant it •  use Monads

•  2 katas in turns •  rotating DOJO (every eg. 5 min) •  read your code aloud regularly •  work with someone you have difficulties to work

with •  work with someone you never worked with

before •  think of your favorite pattern and don't use it •  synchronized timer for all teams (baby steps) •  Pattern Matching Tools : •  use a testing framework you usually don't use •  use an IDE / Editor you never used before •  use VIM (no IDE)

Concepts: •  Outside In by the book Patterns: •  Command & Query Separation •  Value Objects •  Kent Beck's Responsive Design

(Leap, Parallel, Stepping Stone, Simplification)

*,Socrates,2013,Session,on,CR,

Page 47: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

(mein(Vorschlag(für(Beginner(

1.  TDD,2.  Simple,Design,3.  Baby,Steps,4.  Silent,Ping_Pong,5.  etwas,schweres,z.b.:,

no,condi%ons,at,all,,6.  Freie,Wahl,

,

Page 48: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

(mein(Vorschlag(für(Fortgeschri`ene(

1.  TDD,&,Simple,Design,2.  eine,Überraschung,3.  evil,Ping_Pong,4.  etwas,schweres/interessantes,z.b.:,

no,condi%ons,at,all,/,Polymorph,...,5.  Steigerung,mit,Opt_out,6.  Freie,Wahl,oder,Doppelsession,mit,5.,

,

Page 49: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

„schwierige“(Teilnehmer ( ((

•  Diskussionen,vermeiden,•  Opt_out,oder,spezielle,Constraints,anbieten,•  können,gerne,etwas,anderes,machen,als,in,der,Session,

•  einige,Leute,brauchen,eine,Pause;,das,ist,okay,•  Jeder,ist,freiwillig,da,und,entscheidet,selbst,wie,er,seine,Zeit,nutzen,möchte;,das,ist,okay,,,solange,die,Anderen,nicht,gestört,werden,

Page 50: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

Coding(macht(wieder(Spaß!(

Page 51: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have

•  Kontakt:((([email protected]((@mar5nklose(

,•  interessiert?,wir,bieten,auch:,

_  Coderetreats,_  Legacy,Coderetreats,_  Testautoma%on,Coderetreats,_  TDD_Workshops,_  Acceptance,Test,Driven,Development_Workshops,_  agile,SoSwareentwicklung,und,Beratung,_  agiles,Coaching,,

contact(me(

Page 52: Coderetreat( · • TDD as if you meant it • use Monads • 2 katas in turns • rotating DOJO (every eg. 5 min) • read your code aloud regularly • work with someone you have