coderetreat( · • tdd as if you meant it • use monads • 2 katas in turns • rotating dojo...
TRANSCRIPT
Coderetreat(behind(the(scenes((@mar%nklose,
Learning(on(the(job(
h.p://www.flickr.com/photos/coast_guard/5662650628,
Performing(on(the(stage(
Prac5ce?(
h.p://www.flickr.com/photos/oakleyoriginals/2749348015/,
eine(Lösung?(
Kenne(deine(Tools!(
von(einander(lernen(
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,
Aufstellung(
• Tischgruppen,,sind,besser,
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,
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,
Frühstück(verbindet(
,,
Game(of(Life(
,,
((
á(45(min(
walk(around(and(take(notes(
ask(instead(of(telling(
delete(your(Code!(um(Sackgassen(zu(vermeiden(
Retrospek5ve((&(Pause(
Pair((Programming,
Clean(Code(
Refactoring(
Constraints,
Am(Ende(3(Fragen:(
• das,Gelernt,zelebrieren,• sich,austauschen,und,bestä%gen,• wich%ges,Feedback,für,den,Facilitator,
1.(Was(hat(Dir(gefallen?(
2.(Was(hast(Du(gelernt?(
3.(Was(wirst(Du(anwenden?(
4000 Developers
Coderetreat
200 Locations
SA(14.12.2013((
andere(Formate(
h.p://www.flickr.com/photos/randychiu/4603464896,
Hab(keine(Angst!(
• das,Format,hilS,Dir!,
CoGFacilita5ng(
• man,lernt,sehr,viel,dabei,
• insbesondere,bei,größeren,Gruppen,sinnvoll,
• prak%sch,bei,ungerader,Anzahl,von,Teilnehmern,,(einer,kann,mitcoden),
Constraints,
Simple(Design(
1. Passes,its,tests,2. Minimizes,duplica%on,3. Maximizes,clarity,4. Has,fewer,elements,
Kent,Beck,
h.p://www.flickr.com/photos/jmrosenfeld/3154138479/,
Ping(Pong((op5onal:(• evil(• mute(
Baby(Steps(
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,,,
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,,
IF( THEN(
ELSE(
No(Condi5ons(at(all(
Das,geht,doch,gar,nicht!,
Wie,oS,denken,wir,,dass,etwas,nicht,geht,?,...,
Polymorph(
• tote,,lebendige,Zellen,• Vererbung,vs,Delega%on?,• Tipp:,zusätzliche,Arten,
hinzufügen,(z.B.,Zombie),
No(Mouse(
• Tipp:,– Shortcuts,auf,Flipchart,sammeln,,
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,
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,,
Freie(Wahl(,
• z.B.:,– Dojo,– Session,#2,– keine,Maus,– Freestyle,(TDD),– Tell,don‘t,ask,– TDD,As,If,You,Meant,It,– Polymorph,...,
,
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,
(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,
,
(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.,
,
„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,
Coding(macht(wieder(Spaß!(
• 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(