SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
The London Python
                       Code Dojo




                   An Education in
                 Developer Education
                       Nicholas Tollervey ntoll@ntoll.org
The London Python Code Dojo is a community organised monthly meeting of Pythonistas.
This non-technical talk explains what we get up to. My aim: to encourage you to organise a
dojo.
About Me:
       • Musician (tuba, piano, organ, theory & composition)
       • Teacher (mainly teenagers but also pre-school to adult)
       • Philosophy of Education (concept of creativity)
       • Writer (O’Reilly book coming soon)
       • Developer (Python for 3 years, .NET before)
       • Currently at Fluidinfo (world changing start-up) :-)
Who the hell is ntoll and why is he interested in code dojos..?
Agenda:

         • What is a Dojo? (Official vs London definition)
         • Why participate in a Dojo? (What’s in it for me?)
         • What is a good Dojo? (Attendee / Organiser)
         • Conclusion: Some personal observations.

I re-wrote some of this talk as a practical response to the “diversity” and “genius” keynotes. A
“dojo” is one way to address the vision/challenges these talks mention.
What is a dojo?
                  (official definition)


Dojo is a martial arts term. It’s a place where you go to practice. I feel uncomfortable about
this but the name has stuck. Perhaps we should call it a “Code-do” or “Py-do”..? (“do” means
place)
Invented here




Started by French dudes in Paris around December 2004
“Acquiring coding skills
    should be a continuous
          process...”
                                                http://codingdojo.org/


Very simple philosophy. Improving existing skills is also important.
Assumption: A good
          developer is always
      learning and re-evaluating
         in order to improve.

I hope we can all agree with this..?
http://www.flickr.com/photos/19884852@N00/318274014/




                  Code Dojo =
                Deliberate Practice
To improve one needs to practice...
These are old ideas...
The unexamined life is not
             worth living.




                                              http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg




                  Socrates (469-399 BCE)
The father of Western philosophy... (2500 years ago) i.e. it’s good to be in a continuous
process of examination and re-examination.
Much learning
      does not teach
      understanding.




                           http://en.wikiquote.org/wiki/File:Heraclitus,_Johannes_Moreelse.jpg




           Heraclitus (c.535 - 475 BCE)


The original grumpy old man of ancient Greek philosophy... in other words... don’t just read
the book. Go *do* something... practice!
Parisian Dojo Rules
         start
                                                  2mins: organise next dojo

                                                  30mins: retrospective on last dojo


                                                  10mins: decide the topic for this dojo
      dojo




                                                  40mins: code (either “prepared” or “randori”
                                                  kata)

                                                  10mins: half time break


                                                  40mins: code


         end
                                   (not to scale)
What happens at a dojo? codingdojo.org sets out detailed rules for timing and conduct... The
interesting tasks are the two 40 minute “Kata”.
http://www.flickr.com/photos/renfield/351557228/




                                     Kata..?
Kata is another borrowed martial arts term meaning “forms”. They’re pre-specified /
choreographed steps to be practiced again and again. Improves muscle memory.
Like scales or etude that musicians practice. Graded in difficulty & focus on particular
“aspects”. Practice correctly: reflect aiming for autonomy. Code-dojo kata = code problems.
Prepared Kata




                             http://www.flickr.com/photos/foundphotoslj/466713478/




          •   A presenter shows how to solve the problem using TDD
              and BabySteps™

          •   Each step must make sense to everyone present

          •   Only interrupt if you don’t understand what’s going on
Two mechanisms for doing Kata in a dojo: Prepared and Randori. ^^^ Not a photo from the
dojo... :-)
Randori Kata
                            pilot



                                                               co-pilot
                             happy to volunteer


              •   Public pair programming using TDD

              •   Each pair has a time slot

              •   At the end the pilot returns to the audience, the co-
                  pilot becomes the new pilot and a new co-pilot
                  volunteers from the audience
Randori means “chaos taking” (freestyle). Audience can’t interrupt, only co-pilot (ask
questions, offer advice). Pilot gives a running commentary of thought process. (A dojo
photo!)
What is a dojo?
               (London definition)


Arose from a conversation in a Python pub meet-up. I was explaining music “masterclasses”.
Jonathan Hartley responded with an explanation of the code dojo. We organised a meeting...
We didn’t know what we
        were doing and didn’t
         stick to the rules!


We really did try hard at the start.
Geeks actually socialising!




          Coding fuel


Mistake #1: We started the evening with pizza and beer. This didn’t set the scene for calm
and thoughtful coding.
Code




                                                    Good turnout

About 25 people turned up. We chose to work using a Randori kata. The rule for a time slot
was 10 minutes or a passing unit test for each pair. This worked quite well... (but)
We only had Emacs or Vim available...

                                          vs

                ...and didn’t have a standard keyboard.




        The Twitter based kata sucked (too complex) :-(



                Only 6-7 people got a chance to pilot.
Several more mistakes... Things we should have thought of in advance... :-(
We got it to work!
The task was to display a graph of a user’s followers on Twitter.
Other stuff that wasn’t
supposed to happen...
• Spontaneous applause for working code
       • Audience participation
       • Lots of discussion & debate
       • A generally noisy time

Not at all like the Parisian dojo. Sorry... :-(
(actually, that was good stuff)
In the discussion at the end we thought interaction was a positive aspect of the evening
(photo of Gautier’s dojo beer bottle art). We continued doing Randori based dojo until...
I want to do a
                                             presentation and get your
                                                    feedback...




                 Dave’s great idea...
Dave had a great idea. He wanted to *practice*.
Wouldn’t it
               be great if we split into
                small groups to code
                     together..?




              Ciarán’s great idea...
Lightning struck twice... Ciaran had a good idea too. Didn’t like it that only 6-7 people
coded. Also, some attendees didn’t want to code in front of everyone but were happy in small
groups.
Two new dojo formats!



ZOMG! Epic win!
#1 Show and Tell Dojo
Rene (PyGame core dev) setting up a no-holes barred, everything-but-the-kitchen-sink
demo of PyGame... (if you ever meet Rene, ask him how he deploys websites).
More like a seminar
               than presentation.


We encourage attendees to interrupt, ask questions, debate, code along, point out problems
and generally don’t just sit there...
Participation expected
#2 Team Dojo
These evenings are generally very energetic, fun yet concentrated in nature. It’s social coding
in the raw.
(                                  &                                            )
                                      +

A bit like the classic TV programme “The Great Egg Race” or Scrapheap challenge... teams
complete a pre-defined task (with Python).
Suggest
                                                                       then
                                                                        vote
                                                                        on a
                                                                       topic

Task ideas written on the board during the pizza and beer bit at the start. We then vote and
split into teams.
Teams do the same task
This takes about 1.5 hours.
Show, tell, review & questions
Usually the best part of the evening (for me). Often the task is solved in interesting ways
*you* might not have imagined. Presenting, explaining code & design is a good thing to
practice.
Why participate in a
                   Dojo?


How does attending a dojo relate to our assumption that a good developer is always learning
and re-evaluating themselves in order to improve?
• Learn by doing (practice)
    • Fail safely with sympathy

    • Teach one another
    • Explain yourself to peers

    • Explore each other’s solutions
    • Build a community
Educational benefits of taking part in a Dojo are pretty obvious. You get to practice! Not the
original dojo format. We “forked” the concept, stole the ideas we liked & adapted it.
Nerds




             Nerd bait


The pizza and beer = important means of community building and getting people relaxed.
Share “war” stories, demo stuff and generally have a good time.
It’s just like IRC but
                you’re actually IRL!
Attendees ability/experience differs vastly. Social = non-skill based means of welcoming new
members and getting to know your peers.
What is a good Dojo?
(Attendee’s perspective)
It is FUN...
It’s easier to learn when you’re having a good time.
...to solve problems...
Attendees get to go on an evil mad scientist trip...
...in a place where it is
          safe to make mistaiks...
Celebrate failure! Important point: THIS IS JUST WHAT MUSICIAN’S DO IN A REHEARSAL. You
fail here so you don’t fail when it really matters.
...and you’re encouraged to show
      & tell what you’re up to.
Get feedback from the other attendees. Be open: analyse, appraise, report and support.
TEACH! These are all good virtues/skills for a developer to cultivate.
What is a good Dojo?
       (Organiser’s perspective)


I’m often mis-identified as the “organiser”. Actually, the group organises itself. I’m interested
in education & I’m reminded of something a former professor of mine once said in a lecture...
The effect of any
                                   educational activity should
                                   be to bring about a positive
                                       change in learners.




                        Keith Swanwick
       Emeritus Professor: Music Education (London University)
(Paraphrased)
This is a spade!
                                                              (obvious, right?)




                                http://www.flickr.com/photos/imcountingufoz/5602273537


Surely, all learning situations have positive outcomes..? They’ll be fun, interesting, life
changing, etc... (every teacher wants to be like Robin Williams in “Dead Poet’s Society”).
Really..?
Actually: NO. Often learning situations are boring, annoying, frustrating or just plain
*wrong*. You might be distracted, worried and/or compelled (rather than inspired).
How can you tell it’s
                 going well..?


HINT: if you see something like the previous photo then it’s going wrong. What is the essence
of a dojo going right..? I’d suggest something like...
•   There is a positive aim

           • Something is happening to
               achieve this aim

           •   It is possible to measure if
               the aim has been met (there
               is feedback)

This can be generalised to any sort of learning situation (and other things too) and at both
the group and individual level.
•   We decide on a problem

           • We work collaboratively in
               groups to solve the problem

           •   We show and tell what we
               did and ask for critique and
               suggestions

This is how I’d express it as a group based dojo.
Conclusion:
Some personal observations.


I assume everyone wants to be a better developer. One way to do this is attend a
dojo... but this is just one means to an end.
mmMMmm...
                                                               backwards talk
                                                                rubbish do I
                  How to be a
                  Jedi Hacker




People who want to improve are often looking for teachers - but beware of people who offer
themselves as gurus, who promote a “system” or offer pithy aphorisms.
This is common
                        in music


We have 500 years of examples in music education to draw upon. Methods and systems have
always existed, been developed, built upon and can definitely be useful but...
...they can safely be ignored if something else works for you. In the very worst cases they can
do serious damage (limit autonomy since they can be straightjackets).
WTF?




                           To be an über-Hacker is to
                          “grok” the source completely




Try not to be impressed/follow people offering “systems” & “methodologies”. Be cynical: ask
questions (like we do in the dojo). Learn to practice learning! Yeah, that’s a pithy
aphorism. ;-)
The only real
          wisdom is knowing you
               know nothing.




                                             http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg




                  Socrates (469-399 BCE)
I’m with Socrates... don’t just blindly follow what other people say, make up your own mind.
Cultivate autonomy (an important concept within Philosophy of Education).
If you’re ever in London
          come along and say hi!
I advertise it on the Python-UK mailing list. I’ll eventually get round to doing a website. The
30 tickets usually sell out in about 6 hours of the first announcement (but email me anyway).
Questions..?


Binary beer bottles :-) A question for you: Are you going to organise a dojo..? Is it clear what
you have to do..? What’s stopping you..? Fork the concept and run with it!

Contenu connexe

Tendances

Estudo dos verbos - Prof. Ana Glades
Estudo dos verbos - Prof. Ana GladesEstudo dos verbos - Prof. Ana Glades
Estudo dos verbos - Prof. Ana GladesAna Glades Nogueira
 
Must-mustn't-have to-don't haveto
Must-mustn't-have to-don't havetoMust-mustn't-have to-don't haveto
Must-mustn't-have to-don't havetoartemisamolivyatis
 
Present perfect
Present perfectPresent perfect
Present perfectfefegoomes
 
Inversion in english full explanation
Inversion in english full explanationInversion in english full explanation
Inversion in english full explanationMari Jimenez
 
Conditional sentenses if clauses
Conditional sentenses if clausesConditional sentenses if clauses
Conditional sentenses if clausesMarilene dos Santos
 
The most common Prefixes and Suffixes
The most common Prefixes and SuffixesThe most common Prefixes and Suffixes
The most common Prefixes and SuffixesAndres Ruiz
 
Inglês aula 09 - preposições
Inglês   aula 09 - preposiçõesInglês   aula 09 - preposições
Inglês aula 09 - preposiçõesJairo Caetano
 
Can, could, must, may, should
Can, could, must, may, shouldCan, could, must, may, should
Can, could, must, may, shouldPepa Mut
 
GERUND AND TO INFINITIVE.ppt
GERUND AND TO INFINITIVE.pptGERUND AND TO INFINITIVE.ppt
GERUND AND TO INFINITIVE.pptssuserf7eb7b
 
Português - Regência Verbal - www.CentroApoio.com - Vídeo Aulas
Português - Regência Verbal - www.CentroApoio.com - Vídeo AulasPortuguês - Regência Verbal - www.CentroApoio.com - Vídeo Aulas
Português - Regência Verbal - www.CentroApoio.com - Vídeo AulasVídeo Aulas Apoio
 
Pretéritos perfetio, imperfeito e mais que perfeito
Pretéritos perfetio, imperfeito e mais que perfeitoPretéritos perfetio, imperfeito e mais que perfeito
Pretéritos perfetio, imperfeito e mais que perfeitoLaureano Netto
 
PHRASAL VERBS.pptx
PHRASAL VERBS.pptxPHRASAL VERBS.pptx
PHRASAL VERBS.pptxThainHey
 
Ppt have,has lesson 1
Ppt have,has lesson 1Ppt have,has lesson 1
Ppt have,has lesson 1akbarclayzer
 

Tendances (20)

Estudo dos verbos - Prof. Ana Glades
Estudo dos verbos - Prof. Ana GladesEstudo dos verbos - Prof. Ana Glades
Estudo dos verbos - Prof. Ana Glades
 
Must-mustn't-have to-don't haveto
Must-mustn't-have to-don't havetoMust-mustn't-have to-don't haveto
Must-mustn't-have to-don't haveto
 
Present perfect
Present perfectPresent perfect
Present perfect
 
Inversion in english full explanation
Inversion in english full explanationInversion in english full explanation
Inversion in english full explanation
 
I Wish I Had
I Wish  I HadI Wish  I Had
I Wish I Had
 
Conditional sentenses if clauses
Conditional sentenses if clausesConditional sentenses if clauses
Conditional sentenses if clauses
 
The most common Prefixes and Suffixes
The most common Prefixes and SuffixesThe most common Prefixes and Suffixes
The most common Prefixes and Suffixes
 
Predicação verbal
Predicação verbalPredicação verbal
Predicação verbal
 
Wish
WishWish
Wish
 
Past continuous
Past continuousPast continuous
Past continuous
 
Inglês aula 09 - preposições
Inglês   aula 09 - preposiçõesInglês   aula 09 - preposições
Inglês aula 09 - preposições
 
Período Composto
Período CompostoPeríodo Composto
Período Composto
 
Family Business 2.0 - Social Media Tools
Family Business 2.0 -  Social Media ToolsFamily Business 2.0 -  Social Media Tools
Family Business 2.0 - Social Media Tools
 
Can, could, must, may, should
Can, could, must, may, shouldCan, could, must, may, should
Can, could, must, may, should
 
GERUND AND TO INFINITIVE.ppt
GERUND AND TO INFINITIVE.pptGERUND AND TO INFINITIVE.ppt
GERUND AND TO INFINITIVE.ppt
 
Português - Regência Verbal - www.CentroApoio.com - Vídeo Aulas
Português - Regência Verbal - www.CentroApoio.com - Vídeo AulasPortuguês - Regência Verbal - www.CentroApoio.com - Vídeo Aulas
Português - Regência Verbal - www.CentroApoio.com - Vídeo Aulas
 
Ortografia – Uso De G
Ortografia – Uso De GOrtografia – Uso De G
Ortografia – Uso De G
 
Pretéritos perfetio, imperfeito e mais que perfeito
Pretéritos perfetio, imperfeito e mais que perfeitoPretéritos perfetio, imperfeito e mais que perfeito
Pretéritos perfetio, imperfeito e mais que perfeito
 
PHRASAL VERBS.pptx
PHRASAL VERBS.pptxPHRASAL VERBS.pptx
PHRASAL VERBS.pptx
 
Ppt have,has lesson 1
Ppt have,has lesson 1Ppt have,has lesson 1
Ppt have,has lesson 1
 

Similaire à London Python Code Dojo: An Education in Developer Education

Coding Dojo - PyCon Br 2008 - EN
Coding Dojo - PyCon Br 2008 - ENCoding Dojo - PyCon Br 2008 - EN
Coding Dojo - PyCon Br 2008 - ENHugo Corbucci
 
OpenStack Upstream Training Report
OpenStack Upstream Training ReportOpenStack Upstream Training Report
OpenStack Upstream Training ReportRakuten Group, Inc.
 
Designing with the Body: Learning to Physically Prototype
Designing with the Body: Learning to Physically PrototypeDesigning with the Body: Learning to Physically Prototype
Designing with the Body: Learning to Physically PrototypeDavid Sherwin
 
Coding dojo
Coding dojoCoding dojo
Coding dojovietnt84
 
Digital storytelling for language classrooms
Digital storytelling for language classroomsDigital storytelling for language classrooms
Digital storytelling for language classroomsTom Walton
 
Monday Night, March 3rd, Visual Rhetoric
Monday Night, March 3rd, Visual RhetoricMonday Night, March 3rd, Visual Rhetoric
Monday Night, March 3rd, Visual RhetoricMiami University
 
Putting Design Back into Instructional Design
Putting Design Back into Instructional DesignPutting Design Back into Instructional Design
Putting Design Back into Instructional DesignCammy Bean
 
The Psychology Behind Pair Designing
The Psychology Behind Pair DesigningThe Psychology Behind Pair Designing
The Psychology Behind Pair DesigningKarl Dotter
 
Design thinking for geeks
Design thinking for geeksDesign thinking for geeks
Design thinking for geeksNina Khosla
 
How to Succeed at a Hackathon - Emerge Americas
How to Succeed at a Hackathon - Emerge AmericasHow to Succeed at a Hackathon - Emerge Americas
How to Succeed at a Hackathon - Emerge AmericasAriel Quinones
 
How to Start and Run a Dojo in Western Australia
How to Start and Run a Dojo in Western AustraliaHow to Start and Run a Dojo in Western Australia
How to Start and Run a Dojo in Western AustraliaCoderDojoWA
 
Using Design Thinking to Develop Visitor-Centered Experiences
Using Design Thinking to Develop Visitor-Centered ExperiencesUsing Design Thinking to Develop Visitor-Centered Experiences
Using Design Thinking to Develop Visitor-Centered ExperiencesWest Muse
 
Unconventional wisdom: Putting the WHY Before the WHAT of Presentation Design
Unconventional wisdom: Putting the WHY Before the WHAT of Presentation DesignUnconventional wisdom: Putting the WHY Before the WHAT of Presentation Design
Unconventional wisdom: Putting the WHY Before the WHAT of Presentation DesignSheila B. Robinson
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesMike Clement
 
Lets not do_opsdev
Lets not do_opsdevLets not do_opsdev
Lets not do_opsdevchase pettet
 
Xconf 2014 - Contributing to Open Source
Xconf 2014 - Contributing to Open SourceXconf 2014 - Contributing to Open Source
Xconf 2014 - Contributing to Open SourceParas Narang
 

Similaire à London Python Code Dojo: An Education in Developer Education (20)

Organise a Code Dojo!
Organise a Code Dojo!Organise a Code Dojo!
Organise a Code Dojo!
 
Coding Dojo - PyCon Br 2008 - EN
Coding Dojo - PyCon Br 2008 - ENCoding Dojo - PyCon Br 2008 - EN
Coding Dojo - PyCon Br 2008 - EN
 
Dojo intro PyCon
Dojo intro PyConDojo intro PyCon
Dojo intro PyCon
 
OpenStack Upstream Training Report
OpenStack Upstream Training ReportOpenStack Upstream Training Report
OpenStack Upstream Training Report
 
Designing with the Body: Learning to Physically Prototype
Designing with the Body: Learning to Physically PrototypeDesigning with the Body: Learning to Physically Prototype
Designing with the Body: Learning to Physically Prototype
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Digital storytelling for language classrooms
Digital storytelling for language classroomsDigital storytelling for language classrooms
Digital storytelling for language classrooms
 
Monday Night, March 3rd, Visual Rhetoric
Monday Night, March 3rd, Visual RhetoricMonday Night, March 3rd, Visual Rhetoric
Monday Night, March 3rd, Visual Rhetoric
 
Putting Design Back into Instructional Design
Putting Design Back into Instructional DesignPutting Design Back into Instructional Design
Putting Design Back into Instructional Design
 
The Psychology Behind Pair Designing
The Psychology Behind Pair DesigningThe Psychology Behind Pair Designing
The Psychology Behind Pair Designing
 
Design thinking for geeks
Design thinking for geeksDesign thinking for geeks
Design thinking for geeks
 
How to Succeed at a Hackathon - Emerge Americas
How to Succeed at a Hackathon - Emerge AmericasHow to Succeed at a Hackathon - Emerge Americas
How to Succeed at a Hackathon - Emerge Americas
 
How to Start and Run a Dojo in Western Australia
How to Start and Run a Dojo in Western AustraliaHow to Start and Run a Dojo in Western Australia
How to Start and Run a Dojo in Western Australia
 
Hackathon
HackathonHackathon
Hackathon
 
Using Design Thinking to Develop Visitor-Centered Experiences
Using Design Thinking to Develop Visitor-Centered ExperiencesUsing Design Thinking to Develop Visitor-Centered Experiences
Using Design Thinking to Develop Visitor-Centered Experiences
 
Unconventional wisdom: Putting the WHY Before the WHAT of Presentation Design
Unconventional wisdom: Putting the WHY Before the WHAT of Presentation DesignUnconventional wisdom: Putting the WHY Before the WHAT of Presentation Design
Unconventional wisdom: Putting the WHY Before the WHAT of Presentation Design
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 
Introduction to Design Thinking Workshop
Introduction to Design Thinking WorkshopIntroduction to Design Thinking Workshop
Introduction to Design Thinking Workshop
 
Lets not do_opsdev
Lets not do_opsdevLets not do_opsdev
Lets not do_opsdev
 
Xconf 2014 - Contributing to Open Source
Xconf 2014 - Contributing to Open SourceXconf 2014 - Contributing to Open Source
Xconf 2014 - Contributing to Open Source
 

Plus de Nicholas Tollervey

Plus de Nicholas Tollervey (7)

An (Inaccurate) Introduction to Python
An (Inaccurate) Introduction to PythonAn (Inaccurate) Introduction to Python
An (Inaccurate) Introduction to Python
 
FluidDB in a Nutshell
FluidDB in a NutshellFluidDB in a Nutshell
FluidDB in a Nutshell
 
FluidDB in a nutshell
FluidDB in a nutshellFluidDB in a nutshell
FluidDB in a nutshell
 
Using FluidDB with Django
Using FluidDB with DjangoUsing FluidDB with Django
Using FluidDB with Django
 
An Introduction to FluidDB
An Introduction to FluidDBAn Introduction to FluidDB
An Introduction to FluidDB
 
FluidDB for Dummies
FluidDB for DummiesFluidDB for Dummies
FluidDB for Dummies
 
An Introduction To FluidDB - a social database in the cloud
An Introduction To FluidDB - a social database in the cloudAn Introduction To FluidDB - a social database in the cloud
An Introduction To FluidDB - a social database in the cloud
 

Dernier

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Dernier (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

London Python Code Dojo: An Education in Developer Education

  • 1. The London Python Code Dojo An Education in Developer Education Nicholas Tollervey ntoll@ntoll.org The London Python Code Dojo is a community organised monthly meeting of Pythonistas. This non-technical talk explains what we get up to. My aim: to encourage you to organise a dojo.
  • 2. About Me: • Musician (tuba, piano, organ, theory & composition) • Teacher (mainly teenagers but also pre-school to adult) • Philosophy of Education (concept of creativity) • Writer (O’Reilly book coming soon) • Developer (Python for 3 years, .NET before) • Currently at Fluidinfo (world changing start-up) :-) Who the hell is ntoll and why is he interested in code dojos..?
  • 3. Agenda: • What is a Dojo? (Official vs London definition) • Why participate in a Dojo? (What’s in it for me?) • What is a good Dojo? (Attendee / Organiser) • Conclusion: Some personal observations. I re-wrote some of this talk as a practical response to the “diversity” and “genius” keynotes. A “dojo” is one way to address the vision/challenges these talks mention.
  • 4. What is a dojo? (official definition) Dojo is a martial arts term. It’s a place where you go to practice. I feel uncomfortable about this but the name has stuck. Perhaps we should call it a “Code-do” or “Py-do”..? (“do” means place)
  • 5. Invented here Started by French dudes in Paris around December 2004
  • 6. “Acquiring coding skills should be a continuous process...” http://codingdojo.org/ Very simple philosophy. Improving existing skills is also important.
  • 7. Assumption: A good developer is always learning and re-evaluating in order to improve. I hope we can all agree with this..?
  • 8. http://www.flickr.com/photos/19884852@N00/318274014/ Code Dojo = Deliberate Practice To improve one needs to practice...
  • 9. These are old ideas...
  • 10. The unexamined life is not worth living. http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg Socrates (469-399 BCE) The father of Western philosophy... (2500 years ago) i.e. it’s good to be in a continuous process of examination and re-examination.
  • 11. Much learning does not teach understanding. http://en.wikiquote.org/wiki/File:Heraclitus,_Johannes_Moreelse.jpg Heraclitus (c.535 - 475 BCE) The original grumpy old man of ancient Greek philosophy... in other words... don’t just read the book. Go *do* something... practice!
  • 12. Parisian Dojo Rules start 2mins: organise next dojo 30mins: retrospective on last dojo 10mins: decide the topic for this dojo dojo 40mins: code (either “prepared” or “randori” kata) 10mins: half time break 40mins: code end (not to scale) What happens at a dojo? codingdojo.org sets out detailed rules for timing and conduct... The interesting tasks are the two 40 minute “Kata”.
  • 13. http://www.flickr.com/photos/renfield/351557228/ Kata..? Kata is another borrowed martial arts term meaning “forms”. They’re pre-specified / choreographed steps to be practiced again and again. Improves muscle memory.
  • 14. Like scales or etude that musicians practice. Graded in difficulty & focus on particular “aspects”. Practice correctly: reflect aiming for autonomy. Code-dojo kata = code problems.
  • 15. Prepared Kata http://www.flickr.com/photos/foundphotoslj/466713478/ • A presenter shows how to solve the problem using TDD and BabySteps™ • Each step must make sense to everyone present • Only interrupt if you don’t understand what’s going on Two mechanisms for doing Kata in a dojo: Prepared and Randori. ^^^ Not a photo from the dojo... :-)
  • 16. Randori Kata pilot co-pilot happy to volunteer • Public pair programming using TDD • Each pair has a time slot • At the end the pilot returns to the audience, the co- pilot becomes the new pilot and a new co-pilot volunteers from the audience Randori means “chaos taking” (freestyle). Audience can’t interrupt, only co-pilot (ask questions, offer advice). Pilot gives a running commentary of thought process. (A dojo photo!)
  • 17. What is a dojo? (London definition) Arose from a conversation in a Python pub meet-up. I was explaining music “masterclasses”. Jonathan Hartley responded with an explanation of the code dojo. We organised a meeting...
  • 18. We didn’t know what we were doing and didn’t stick to the rules! We really did try hard at the start.
  • 19. Geeks actually socialising! Coding fuel Mistake #1: We started the evening with pizza and beer. This didn’t set the scene for calm and thoughtful coding.
  • 20. Code Good turnout About 25 people turned up. We chose to work using a Randori kata. The rule for a time slot was 10 minutes or a passing unit test for each pair. This worked quite well... (but)
  • 21. We only had Emacs or Vim available... vs ...and didn’t have a standard keyboard. The Twitter based kata sucked (too complex) :-( Only 6-7 people got a chance to pilot. Several more mistakes... Things we should have thought of in advance... :-(
  • 22. We got it to work! The task was to display a graph of a user’s followers on Twitter.
  • 23. Other stuff that wasn’t supposed to happen...
  • 24. • Spontaneous applause for working code • Audience participation • Lots of discussion & debate • A generally noisy time Not at all like the Parisian dojo. Sorry... :-(
  • 25. (actually, that was good stuff) In the discussion at the end we thought interaction was a positive aspect of the evening (photo of Gautier’s dojo beer bottle art). We continued doing Randori based dojo until...
  • 26. I want to do a presentation and get your feedback... Dave’s great idea... Dave had a great idea. He wanted to *practice*.
  • 27. Wouldn’t it be great if we split into small groups to code together..? Ciarán’s great idea... Lightning struck twice... Ciaran had a good idea too. Didn’t like it that only 6-7 people coded. Also, some attendees didn’t want to code in front of everyone but were happy in small groups.
  • 28. Two new dojo formats! ZOMG! Epic win!
  • 29. #1 Show and Tell Dojo Rene (PyGame core dev) setting up a no-holes barred, everything-but-the-kitchen-sink demo of PyGame... (if you ever meet Rene, ask him how he deploys websites).
  • 30. More like a seminar than presentation. We encourage attendees to interrupt, ask questions, debate, code along, point out problems and generally don’t just sit there...
  • 32. #2 Team Dojo These evenings are generally very energetic, fun yet concentrated in nature. It’s social coding in the raw.
  • 33. ( & ) + A bit like the classic TV programme “The Great Egg Race” or Scrapheap challenge... teams complete a pre-defined task (with Python).
  • 34. Suggest then vote on a topic Task ideas written on the board during the pizza and beer bit at the start. We then vote and split into teams.
  • 35. Teams do the same task This takes about 1.5 hours.
  • 36. Show, tell, review & questions Usually the best part of the evening (for me). Often the task is solved in interesting ways *you* might not have imagined. Presenting, explaining code & design is a good thing to practice.
  • 37. Why participate in a Dojo? How does attending a dojo relate to our assumption that a good developer is always learning and re-evaluating themselves in order to improve?
  • 38. • Learn by doing (practice) • Fail safely with sympathy • Teach one another • Explain yourself to peers • Explore each other’s solutions • Build a community Educational benefits of taking part in a Dojo are pretty obvious. You get to practice! Not the original dojo format. We “forked” the concept, stole the ideas we liked & adapted it.
  • 39. Nerds Nerd bait The pizza and beer = important means of community building and getting people relaxed. Share “war” stories, demo stuff and generally have a good time.
  • 40. It’s just like IRC but you’re actually IRL! Attendees ability/experience differs vastly. Social = non-skill based means of welcoming new members and getting to know your peers.
  • 41. What is a good Dojo? (Attendee’s perspective)
  • 42. It is FUN... It’s easier to learn when you’re having a good time.
  • 43. ...to solve problems... Attendees get to go on an evil mad scientist trip...
  • 44. ...in a place where it is safe to make mistaiks... Celebrate failure! Important point: THIS IS JUST WHAT MUSICIAN’S DO IN A REHEARSAL. You fail here so you don’t fail when it really matters.
  • 45. ...and you’re encouraged to show & tell what you’re up to. Get feedback from the other attendees. Be open: analyse, appraise, report and support. TEACH! These are all good virtues/skills for a developer to cultivate.
  • 46. What is a good Dojo? (Organiser’s perspective) I’m often mis-identified as the “organiser”. Actually, the group organises itself. I’m interested in education & I’m reminded of something a former professor of mine once said in a lecture...
  • 47. The effect of any educational activity should be to bring about a positive change in learners. Keith Swanwick Emeritus Professor: Music Education (London University) (Paraphrased)
  • 48. This is a spade! (obvious, right?) http://www.flickr.com/photos/imcountingufoz/5602273537 Surely, all learning situations have positive outcomes..? They’ll be fun, interesting, life changing, etc... (every teacher wants to be like Robin Williams in “Dead Poet’s Society”).
  • 49. Really..? Actually: NO. Often learning situations are boring, annoying, frustrating or just plain *wrong*. You might be distracted, worried and/or compelled (rather than inspired).
  • 50. How can you tell it’s going well..? HINT: if you see something like the previous photo then it’s going wrong. What is the essence of a dojo going right..? I’d suggest something like...
  • 51. There is a positive aim • Something is happening to achieve this aim • It is possible to measure if the aim has been met (there is feedback) This can be generalised to any sort of learning situation (and other things too) and at both the group and individual level.
  • 52. We decide on a problem • We work collaboratively in groups to solve the problem • We show and tell what we did and ask for critique and suggestions This is how I’d express it as a group based dojo.
  • 53. Conclusion: Some personal observations. I assume everyone wants to be a better developer. One way to do this is attend a dojo... but this is just one means to an end.
  • 54. mmMMmm... backwards talk rubbish do I How to be a Jedi Hacker People who want to improve are often looking for teachers - but beware of people who offer themselves as gurus, who promote a “system” or offer pithy aphorisms.
  • 55. This is common in music We have 500 years of examples in music education to draw upon. Methods and systems have always existed, been developed, built upon and can definitely be useful but...
  • 56. ...they can safely be ignored if something else works for you. In the very worst cases they can do serious damage (limit autonomy since they can be straightjackets).
  • 57. WTF? To be an über-Hacker is to “grok” the source completely Try not to be impressed/follow people offering “systems” & “methodologies”. Be cynical: ask questions (like we do in the dojo). Learn to practice learning! Yeah, that’s a pithy aphorism. ;-)
  • 58. The only real wisdom is knowing you know nothing. http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg Socrates (469-399 BCE) I’m with Socrates... don’t just blindly follow what other people say, make up your own mind. Cultivate autonomy (an important concept within Philosophy of Education).
  • 59. If you’re ever in London come along and say hi! I advertise it on the Python-UK mailing list. I’ll eventually get round to doing a website. The 30 tickets usually sell out in about 6 hours of the first announcement (but email me anyway).
  • 60. Questions..? Binary beer bottles :-) A question for you: Are you going to organise a dojo..? Is it clear what you have to do..? What’s stopping you..? Fork the concept and run with it!