SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Coding Dojos
på arbetstid
fredrik.wendt@squeed.com
PST, PSD, PSM I, CSM
This work by
Fredrik Wendt
is licensed under a
Creative Commons
Attribution-ShareAlike
3.0 Unported License
http://creativecommons.org/licenses/by-sa/3.0/
Ditt namn, vad du gör!
Vad är det?
Har du eller vän deltagit?
Erfarenheter från deltagande?
Förväntning(-ar) på denna session!
Coding Dojo!
Learning Objectives
• why you don't want to run typical generic katas
• how different exercise styles matches learning patterns,
skills and objectives of the dojo
• some things to think about when facilitating dojo sessions
• how I convince companies to see coding dojos as an invest
with short ROI
• what skill advancements you might expect from coding
dojos
• how a successfully run dojo may impact "soft values"
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
TL;DR
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
➔ Background, context
Based on What?
2 regular user groups
12 teams, 9 customers
past ~ 2 years
50 / 50
Taxonomy: Coding Dojo
“Dojo” from martial arts/budo
Means “place for the way”
More on Coding Dojos?
15% off: scrum-alliance-las-vegas-2013
Taxonomy: Kata
“Kata” from martial
arts/budo
Start from scratch, next
time – try
new approach
Practice until mastered
Small, 1-2 hrs
Presentation
Randori
Roundori
Break-out
biz
CHANGE!
new skills
Practice
Coding Dojo
Examples of ”Skills”
TDD, Good Tests – Test Design
Working with Legacy Code
BDD, ATDD
Clean Code, Refactoring
Patterns, New Technologies
Pair Programming
Examples of ”Change”
New Tests Are Written!
Old Tests starts passing!
Code Coverage Goes Up!
Everyone Cares when the build Fails!
Technology Shift – “On” Plan
Skill Advancement
How comfortable were/are you with SKILL?
Beginner Expert
Before
After
Today
... ... ...
Programming Language
How comfortable were/are you with the programming language?
Beginner Expert
Before
After
Today
... ... ...
IDE-editor
How comfortable were/are you with the IDE-editor?
Beginner Expert
Before
After
Today
... ... ...
Unit Tests
How often did/do you write unit tests?
Beginner Expert
Before
After
Today
... ... ...
Test-Driven Development
How good at test-driven development were/are you?
Beginner Expert
Before
After
Today
... ... ...
Mock Objects
How comfortable were/are you at using Mock objects?
Beginner Expert
Before
After
Today
... ... ...
Refactoring
How good at refactoring were/are you?
Beginner Expert
Before
After
Today
... ... ...
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
➔ Background, context
Coding dojo!
Vad tror du behövs för lärande på arbetsplatsen?
(Skills, Change – subjektiva resultat)
Pros/cons – olika sätt att organisera sig?
(Presentation, Randori, break-out)
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
➔ Background, context
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
Safe Environment for Learning
No salary setting managers in the room
Talk about how humans learn!
Show attendees –
what: learning objective
how: seeing is believing
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
Different Mind-Set!
Attend out of own interest vs told to attend
Telling is not enough
Showing is not enough
Need to experience to believe & understand
Production like, see it's doable outside dojo
Must Feel Real!
Enterprise Java Beans
Java Persistence API
javax.servlet.*
String Calculator? Fizz Buzz?
Roman Numerals? MMXIII?
Bowling? Poker Games?
Example: servlet.Filter
• Kata Java EE Authentication Filter
• Uses javax.servlet.* API
• Uses 2 custom interfaces
• Show classical vs mockist style
• 2nd time around Clean Code
request is part of
HTTP Session?
get token from session
SSO token is valid?
pass request on
down the filter chain
return;
throw AuthException;
resp.setStatus(401);
request contains
SSO cookie?
SSO token is valid?
request contains un
& pw parameters?
get token from cookie
get un & pw from request
un & pw valid in LDAP?
get new SSO token
store SSO token in cookie
store SSO token in session
No
No
No
Yes
Yes
Yes
Yes
KataJavaEEAuthenticationFilter
public interface UserAccountRegistry {
boolean credentialsAreValid(String username,
String password);
}
public interface SingleSignOnRegistry {
boolean tokenIsValid(String ssoToken);
String requireToken(String username);
void revokeToken(String ssoToken);
}
KataJavaEEAuthenticationFilter
Break-out
Break-out
Break-out
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
Format
15 90 15
40 – 10 – 40
Context
Understand exercise
Fail in order to learn
Tools? Techniques?
“Seeing is believing”
DO
Review, Feedback
Repetition
Participants' own
words means learning!
Input to next session
Learning by Doing
Repeat exercise
without trainer,
same time, place, people
”I can do this on my own”
vs
”only works for others”
Repetition Mother of Learning
E-mail with kata,
retrospective notes,
learning objectives,
ask if they've uncovered new
insights/experiences
➔ Safe Learning Env
➔ Like Production
➔ Practice, Repetition –
Learning by Doing
Summary
Learning Objectives
• why you don't want to run typical generic katas
• how different exercise styles matches learning patterns,
skills and objectives of the dojo
• some things to think about when facilitating dojo sessions
• how I convince companies to see coding dojos as an invest
with short ROI
• what skill advancements you might expect from coding
dojos
• how a successfully run dojo may impact "soft values"
MORE!
• Fruit, Candy, Coffee, Sugar!
• Whole team vs mixed teams
• Management buy-in – S-curve/hockey stick in learning
• Production like kata – 90 minute problems != realistic
• 1h topic-intro (clean code), lunch, 2h exercise
• 2h kata, lunch, 2h kata
• 1600-1800
• Come prepared, know your audience – 20 Questions
• Plant a mystery
NO MORE!
”Anti patterns”:
• Too complex problem
• Too complex biz rules (or game rules)
• Too huge data model – poker hands kata?
• Too great skill differences, depends on kata & style
• “Hero”?

Contenu connexe

Similaire à Coding dojos på arbetstid

Sp12_Week3 complete
Sp12_Week3 completeSp12_Week3 complete
Sp12_Week3 complete
educw200
 
Getting Started with Camtasia-A Seflin Round Table discussion
Getting Started with Camtasia-A Seflin Round Table discussionGetting Started with Camtasia-A Seflin Round Table discussion
Getting Started with Camtasia-A Seflin Round Table discussion
Alyse Ergood McKeal
 
Learning experiences and learning design
Learning experiences and learning designLearning experiences and learning design
Learning experiences and learning design
Gail Matthews-DeNatale
 
Distributed scrum
Distributed scrumDistributed scrum
Distributed scrum
Jozua Velle
 
Program Portfolio UniversityStudent NameStudent Address.docx
Program Portfolio UniversityStudent NameStudent Address.docxProgram Portfolio UniversityStudent NameStudent Address.docx
Program Portfolio UniversityStudent NameStudent Address.docx
briancrawford30935
 
Rapid usability testing
Rapid usability testingRapid usability testing
Rapid usability testing
lisarex
 
Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...
stijn vanpoucke
 

Similaire à Coding dojos på arbetstid (20)

Those Who Can Should Also Teach
Those Who Can Should Also TeachThose Who Can Should Also Teach
Those Who Can Should Also Teach
 
Sp12_Week3 complete
Sp12_Week3 completeSp12_Week3 complete
Sp12_Week3 complete
 
Getting Started with Camtasia-A Seflin Round Table discussion
Getting Started with Camtasia-A Seflin Round Table discussionGetting Started with Camtasia-A Seflin Round Table discussion
Getting Started with Camtasia-A Seflin Round Table discussion
 
Prototyping approach and platforms nov. 2020
Prototyping approach and platforms nov. 2020Prototyping approach and platforms nov. 2020
Prototyping approach and platforms nov. 2020
 
Starting Your First Job in the Software Industry: Tips and Tricks from Nakov
Starting Your First Job in the Software Industry: Tips and Tricks from NakovStarting Your First Job in the Software Industry: Tips and Tricks from Nakov
Starting Your First Job in the Software Industry: Tips and Tricks from Nakov
 
How to Build your Career.pptx
How to Build your Career.pptxHow to Build your Career.pptx
How to Build your Career.pptx
 
Improving WordPress Themes & Plugins Support Documentation
Improving WordPress Themes & Plugins Support DocumentationImproving WordPress Themes & Plugins Support Documentation
Improving WordPress Themes & Plugins Support Documentation
 
Maximising Online Resource Effectiveness Workshop Session 8/8 Workshop roundup
Maximising Online Resource Effectiveness Workshop Session 8/8 Workshop roundupMaximising Online Resource Effectiveness Workshop Session 8/8 Workshop roundup
Maximising Online Resource Effectiveness Workshop Session 8/8 Workshop roundup
 
Learning experiences and learning design
Learning experiences and learning designLearning experiences and learning design
Learning experiences and learning design
 
Distributed scrum
Distributed scrumDistributed scrum
Distributed scrum
 
Program Portfolio UniversityStudent NameStudent Address.docx
Program Portfolio UniversityStudent NameStudent Address.docxProgram Portfolio UniversityStudent NameStudent Address.docx
Program Portfolio UniversityStudent NameStudent Address.docx
 
Deliberate Practice for Programmers
Deliberate Practice for  ProgrammersDeliberate Practice for  Programmers
Deliberate Practice for Programmers
 
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (P...
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (P...UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (P...
UserZoom Education Series - Research Deep Dive - Advanced - Task-Based TOL (P...
 
The use of Video in Learning and Development Programs
The use of Video in Learning and Development ProgramsThe use of Video in Learning and Development Programs
The use of Video in Learning and Development Programs
 
ADDIE model by alaa youssef
ADDIE model by alaa youssefADDIE model by alaa youssef
ADDIE model by alaa youssef
 
Instructional Design Today: What We Really Need to Know as Practitioners, Res...
Instructional Design Today: What We Really Need to Know as Practitioners, Res...Instructional Design Today: What We Really Need to Know as Practitioners, Res...
Instructional Design Today: What We Really Need to Know as Practitioners, Res...
 
C4U Hackathon Tips
C4U Hackathon TipsC4U Hackathon Tips
C4U Hackathon Tips
 
Rapid usability testing
Rapid usability testingRapid usability testing
Rapid usability testing
 
Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...
 
Train-the-Trainer - Enabling your team
Train-the-Trainer - Enabling your teamTrain-the-Trainer - Enabling your team
Train-the-Trainer - Enabling your team
 

Plus de Fredrik Wendt

Agile Injection, Varberg
Agile Injection, VarbergAgile Injection, Varberg
Agile Injection, Varberg
Fredrik Wendt
 
Webboptimering 25 min
Webboptimering 25 minWebboptimering 25 min
Webboptimering 25 min
Fredrik Wendt
 

Plus de Fredrik Wendt (13)

Continuous Delivery Experience Report - Agile Greece Summit 2016
Continuous Delivery Experience Report - Agile Greece Summit 2016Continuous Delivery Experience Report - Agile Greece Summit 2016
Continuous Delivery Experience Report - Agile Greece Summit 2016
 
Informationsradiatorer NFI Systemunderhåll 2015-12-01
Informationsradiatorer NFI Systemunderhåll 2015-12-01Informationsradiatorer NFI Systemunderhåll 2015-12-01
Informationsradiatorer NFI Systemunderhåll 2015-12-01
 
Go.cd - the tool that Jenkins ain't
Go.cd - the tool that Jenkins ain'tGo.cd - the tool that Jenkins ain't
Go.cd - the tool that Jenkins ain't
 
Arkitektur i agila projekt
Arkitektur i agila projektArkitektur i agila projekt
Arkitektur i agila projekt
 
Clean Code 2
Clean Code 2Clean Code 2
Clean Code 2
 
Js Test Driver, JsHamcrest, JsMockito
Js Test Driver, JsHamcrest, JsMockitoJs Test Driver, JsHamcrest, JsMockito
Js Test Driver, JsHamcrest, JsMockito
 
Jdojo@Gbg Introduction
Jdojo@Gbg IntroductionJdojo@Gbg Introduction
Jdojo@Gbg Introduction
 
Presentation of JSConf.eu
Presentation of JSConf.euPresentation of JSConf.eu
Presentation of JSConf.eu
 
Agile Injection, Varberg
Agile Injection, VarbergAgile Injection, Varberg
Agile Injection, Varberg
 
Clean code
Clean codeClean code
Clean code
 
Webboptimering 25 min
Webboptimering 25 minWebboptimering 25 min
Webboptimering 25 min
 
Clean Code
Clean CodeClean Code
Clean Code
 
Using Mockito
Using MockitoUsing Mockito
Using Mockito
 

Coding dojos på arbetstid

  • 2. This work by Fredrik Wendt is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License http://creativecommons.org/licenses/by-sa/3.0/
  • 3. Ditt namn, vad du gör! Vad är det? Har du eller vän deltagit? Erfarenheter från deltagande? Förväntning(-ar) på denna session! Coding Dojo!
  • 4. Learning Objectives • why you don't want to run typical generic katas • how different exercise styles matches learning patterns, skills and objectives of the dojo • some things to think about when facilitating dojo sessions • how I convince companies to see coding dojos as an invest with short ROI • what skill advancements you might expect from coding dojos • how a successfully run dojo may impact "soft values"
  • 5. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing TL;DR
  • 6. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing ➔ Background, context
  • 7. Based on What? 2 regular user groups 12 teams, 9 customers past ~ 2 years 50 / 50
  • 8. Taxonomy: Coding Dojo “Dojo” from martial arts/budo Means “place for the way”
  • 9. More on Coding Dojos? 15% off: scrum-alliance-las-vegas-2013
  • 10. Taxonomy: Kata “Kata” from martial arts/budo Start from scratch, next time – try new approach Practice until mastered Small, 1-2 hrs
  • 16. Examples of ”Skills” TDD, Good Tests – Test Design Working with Legacy Code BDD, ATDD Clean Code, Refactoring Patterns, New Technologies Pair Programming
  • 17. Examples of ”Change” New Tests Are Written! Old Tests starts passing! Code Coverage Goes Up! Everyone Cares when the build Fails! Technology Shift – “On” Plan
  • 18. Skill Advancement How comfortable were/are you with SKILL? Beginner Expert Before After Today ... ... ...
  • 19. Programming Language How comfortable were/are you with the programming language? Beginner Expert Before After Today ... ... ...
  • 20. IDE-editor How comfortable were/are you with the IDE-editor? Beginner Expert Before After Today ... ... ...
  • 21. Unit Tests How often did/do you write unit tests? Beginner Expert Before After Today ... ... ...
  • 22. Test-Driven Development How good at test-driven development were/are you? Beginner Expert Before After Today ... ... ...
  • 23. Mock Objects How comfortable were/are you at using Mock objects? Beginner Expert Before After Today ... ... ...
  • 24. Refactoring How good at refactoring were/are you? Beginner Expert Before After Today ... ... ...
  • 25. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing ➔ Background, context
  • 26. Coding dojo! Vad tror du behövs för lärande på arbetsplatsen? (Skills, Change – subjektiva resultat) Pros/cons – olika sätt att organisera sig? (Presentation, Randori, break-out)
  • 27. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing ➔ Background, context
  • 28. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing
  • 29. Safe Environment for Learning No salary setting managers in the room Talk about how humans learn! Show attendees – what: learning objective how: seeing is believing
  • 30. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing
  • 31. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing
  • 32. Different Mind-Set! Attend out of own interest vs told to attend Telling is not enough Showing is not enough Need to experience to believe & understand Production like, see it's doable outside dojo
  • 33. Must Feel Real! Enterprise Java Beans Java Persistence API javax.servlet.* String Calculator? Fizz Buzz? Roman Numerals? MMXIII? Bowling? Poker Games?
  • 34. Example: servlet.Filter • Kata Java EE Authentication Filter • Uses javax.servlet.* API • Uses 2 custom interfaces • Show classical vs mockist style • 2nd time around Clean Code
  • 35. request is part of HTTP Session? get token from session SSO token is valid? pass request on down the filter chain return; throw AuthException; resp.setStatus(401); request contains SSO cookie? SSO token is valid? request contains un & pw parameters? get token from cookie get un & pw from request un & pw valid in LDAP? get new SSO token store SSO token in cookie store SSO token in session No No No Yes Yes Yes Yes KataJavaEEAuthenticationFilter
  • 36. public interface UserAccountRegistry { boolean credentialsAreValid(String username, String password); } public interface SingleSignOnRegistry { boolean tokenIsValid(String ssoToken); String requireToken(String username); void revokeToken(String ssoToken); } KataJavaEEAuthenticationFilter
  • 40. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing
  • 41. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing
  • 42. Format 15 90 15 40 – 10 – 40 Context Understand exercise Fail in order to learn Tools? Techniques? “Seeing is believing” DO Review, Feedback Repetition Participants' own words means learning! Input to next session
  • 43. Learning by Doing Repeat exercise without trainer, same time, place, people ”I can do this on my own” vs ”only works for others”
  • 44. Repetition Mother of Learning E-mail with kata, retrospective notes, learning objectives, ask if they've uncovered new insights/experiences
  • 45. ➔ Safe Learning Env ➔ Like Production ➔ Practice, Repetition – Learning by Doing Summary
  • 46. Learning Objectives • why you don't want to run typical generic katas • how different exercise styles matches learning patterns, skills and objectives of the dojo • some things to think about when facilitating dojo sessions • how I convince companies to see coding dojos as an invest with short ROI • what skill advancements you might expect from coding dojos • how a successfully run dojo may impact "soft values"
  • 47. MORE! • Fruit, Candy, Coffee, Sugar! • Whole team vs mixed teams • Management buy-in – S-curve/hockey stick in learning • Production like kata – 90 minute problems != realistic • 1h topic-intro (clean code), lunch, 2h exercise • 2h kata, lunch, 2h kata • 1600-1800 • Come prepared, know your audience – 20 Questions • Plant a mystery
  • 48. NO MORE! ”Anti patterns”: • Too complex problem • Too complex biz rules (or game rules) • Too huge data model – poker hands kata? • Too great skill differences, depends on kata & style • “Hero”?