08448380779 Call Girls In Friends Colony Women Seeking Men
Organise a Code Dojo!
1. Organise a Python
Code Dojo!
Nicholas H.Tollervey
ntoll@ntoll.org
Who am I? I was a musician and teacher before becoming a developer.
This talk is introductory in nature
Please interrupt and ask questions
Tell you about experiences organising the London Python Code Dojo
Encourage *you* to organise a dojo...
2. Organise a what..?
(http://codingdojo.org/)
What is a code-dojo?
Dojo = safe place to practice. A place to make mistakes and learn.
Terminology borrowed from martial arts / Zen Buddhism.
3. Invented here
http://www.flickr.com/photos/anirudhkoul/3483995761/
Started by French dudes in Paris around December 2004
4. “Acquiring coding skills
should be a continuous
process...”
http://codingdojo.org/
Very simple philosophy.
I’d add that improving existing skills is also important.
7. ὁ δὲ ἀνεξέταστος βίος
οὐ βιωτὸς ἀνθρώπῳ
http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg
Socrates (469-399 BCE)
The father of Western philosophy... (2500 years ago)
8. The unexamined life is not
worth living.
http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg
Socrates (469-399 BCE)
i.e. it’s good to be in a continuous process of examination and re-examination
9. ί
ό ἔ ὐ
ά
http://en.wikiquote.org/wiki/File:Heraclitus,_Johannes_Moreelse.jpg
Heraclitus (c.535 - 475 BCE)
The original grumpy old man of ancient Greek philosophy...
10. Much learning
does not teach
understanding.
http://en.wikiquote.org/wiki/File:Heraclitus,_Johannes_Moreelse.jpg
Heraclitus (c.535 - 475 BCE)
in other words... don’t just read the book. Go *do* something (practice!)
11. 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...
12. http://www.flickr.com/photos/renfield/351557228/
Kata..?
Kata - martial arts term meaning “forms”
pre-specified / choreographed steps to be practiced again and again. Improves muscle
memory.
13. Also think scales, arpeggios or Etude that musicians practice (again and again).
Can be graded in difficulty and focus on particular “aspects” of a practice.
Important to practice correctly - reflect with the aim of autonomy.
In the code-dojo context we mean small, self-contained programming puzzles.
Two mechanisms for doing Kata in the dojo...
14. 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
15. 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” - something like freestyle.
Audience mustn’t interrupt - only co-pilot.
Pilot gives a running commentary of their thought process.
16. What happened in
London..?
We’ve learned about the theory. What happened in practice..?
17. !"#$
#"%"
Last August pub meet to organise a “randori” style dojo.
Decided create a graphical representation of a social network based on data from Twitter.
19. Code
Good turnout
About 25 people turned up.
The rule for a time slot was 10 minutes or a passing unit test for each pair.
This worked quite well...
20. But we didn’t know what
we were doing and didn’t
stick to the rules!
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.
Things we should have thought of in advance... :-(
24. Spontaneous applause for working code
Audience participation
Lots of discussion & debate
A generally noisy time
The original rules for a code-dojo are formal and limit the possibility of the audience from
disturbing the pilot and co-pilot.
25. (actually, that was good stuff)
In the discussion at the end we actually thought interaction was a positive aspect of the
evening.
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.
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.
He didn’t like the fact that only 6-7 people got a chance to code.
Also, some of us didn’t want to code in front of everyone but were happy to code in smaller
groups.
33. ( & )
+
=
A bit like the classic TV programme “The Great Egg Race” or Scrapheap challenge... teams
complete a task with Python.
34. Suggest / vote on a topic
Task ideas written on the white-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
This takes about 1/2 hour and is usually the best part of the evening (for me).
Often the task will have been solved in some interesting ways or in ways *you* might not
have imagined.
Also, presenting and explaining code as well as telling us about design decisions is a good
thing to practice.
38. Select a topic from project
Groups solve the same topic
Demo, review and evaluate
Bless a “winner” as start for next time
The general modus operandi.
“Refactoring” dojo using the Randori method was a disaster (boring as hell).
39. Adventure Topics
Create a game world
Represent game state
Make a parser
Generate puzzles
Multi-user or client / server
Here’s what we did.
40. Try my MSUD!
(Multi-Single User
Dungeon)
telnet gautier.fry-it.com 2300
So, the end result after several dojos was a working adventure game. Actually Gautier has
made it available to play on the Internet... go try it! It’s fun!
41. Gautier’s server :-)
http://www.flickr.com/photos/7969902@N07/511103951/
telnet gautier.fry-it.com 2300
Where is French Polynesia? This is a picture of the French army blowing it up in 1970. Licorne
2.
42. In the dojo we...
• Teach one another
• Explain and present code to one another
• Explore each other’s solutions
• Work together
• Build a community
The educational benefits of taking part in a these sorts of Dojo are pretty obvious (I hope).
You get to practice all sorts of things...
Not the original dojo format.
We “forked” the concept - stole the ideas we liked and adapted it to our own group’s
dynamics...
43. Dynamism
... what a dynamic bunch we all are.
Actually, I missed off one of the most important outcomes...
45. And now a word from
our sponsors...
Other considerations for making the dojo a success...
Community building was an aim in addition to learning
46. Nerds
Nerd bait
The pizza and beer = important means of community building.
Share “war” stories, demo stuff and generally have a good time.
47. It’s just like IRC but
you’re actually IRL!
People relax and look forward to the coding aspect of the dojo.
For open source developers community is important.
48. More nerd bait...
We also spoke to O’Reilly who provide us with a book every month. You might have noticed
we wear name-badges. Not only because we can never remember each other’s names but
also because it makes it easy to do a “prize draw” at the end of the evening.
50. mmMMmm...
backwards talk
rubbish do I
How to be a
Jedi Hacker
A personal opinion - people like me who want to learn and improve are often looking for
teachers - but beware people who offer themselves as gurus, who promote a “system” or
offer pithy aphorisms.
51. WTF?
To be an über-Hacker is to
“grok” the source completely
It’s tempting to be impressed and follow / listen to them
I encourage you to be cynical and ask questions of them (just like we do of each other in the
dojo)
Learn to practice learning (rather than following) by learning in a dojo - yeah I know that’s a
pithy aphorism. Bite me! ;-)
53. The only real wisdom is
knowing you know
nothing.
http://en.wikiquote.org/wiki/File:Socrates_Louvre.jpg
Socrates (469-399 BCE)
don’t just blindly follow what other people say... make up your own mind.