how do I use cyber-dojo?

cyber-dojo is designed to be used as follows:

1. creating your cyber-dojo

from the home page one person...
  • click
    setup a default practice
  • click your chosen language
  • click your chosen test-framework
  • click
    next
  • click your chosen exercise
  • if you're practicing alone, click
    set it up & start programming
    . A dialog displays your animal (e.g. dolphin). Click ok.
  • if you're practicing in a group, click
    set it up & show the hex-id
    . A dialog displays your cyber-dojo's id, e.g.,
    3AF65A

2. entering your cyber-dojo

if you're practicing in a group each pair now enters your cyber-dojo. Each pair, from the home page...
  • click
    enter a practice
  • type in the cyber-dojo's id, e.g.,
    3AF65A
  • click
    start programming
  • a dialog displays the animal (e.g. panda) assigned to the pair.
  • click
    ok
  • each pair is now in their own test environment

3. programming inside your cyber-dojo

from their test environment everyone programs for a fixed amount of time e.g., 45 minutes
  • write tests, click
    test
    to see if they fail
  • write code, click
    test
    to see if they pass
  • each
    test
    click creates a new traffic-light :
    • red if one or more tests failed
    • amber if the tests could not be run (eg syntax error)
    • green if all the tests passed
  • remember, cyber-dojo is not a personal development environment
  • remember, cyber-dojo is a shared learning environment
  • the aim is not to finish, the aim is to improve
  • when time is up everyone stops programming

4. reviewing your cyber-dojo

from the home page one person connects their computer to a projector and...
  • clicks
    review a practice
  • types in the cyber-dojo's id, e.g.,
    3AF65A
  • clicks
    open a dashboard
      to open the dashboard displaying all the animals and their traffic-lights
  • clicks any animal's traffic-light and steps through their history
  • everyone chooses what to focus on improving in the next iteration


list of donators

  • Companies.
    Schlumberger Beijing Geoscience Center have found cyber-dojo an invaluable tool for training and development of our software community and believe the project has a bright future. Thank for you contribution to our training efforts. We are delighted to sponsor the cyber-dojo project by contributing $1000.

  • Individuals.
    Olve Maudal, Mike Long, Mathieu Baron, Steve Coates, Johannes van Tonder, Santeri Vesalainen, Alexander Ottesen, Anders Schau Knatten, Mike Sutton, James Grenning, Allan Kelly, Randall White, Lucas Videla, Mark Sargent, Jason Jolly, Mark Grimes, Pedro Gimenez, Marc Kannegiesser, Oliver Baylis, Brian Porter, Jamie Toolin, Alejandro Perez Garcia, Pavol Rovensky, Wojciech Kozlowski, Dan Grassi, Juan Alday, Damian Crawford, Seb Rose, Emily Bache, Michael Coxeter, Fernando Sola Ortiz, Sean Moir, Michael Aderskog, Daniel Aquino, Emyr Williams, Clayton Hunt, Tallapaneni HariBabu, Eric Lefevre, Thomas Rytz, Robert Senkbeil, Charles Armitage, Tobias Froberg, Michael Hilton, David Whittaker, Owen Phelps, Elliot Blackburn, Robert Pitchford, Kevlin Henney, Magnus Lassi, Amitai Schlair.

  • Thank you.

frequently asked questions

Why don't you add auto refactoring?

No. Listen.
Stop trying to go faster; start trying to go slower.
Don't think about finishing; think about improving.
Think about practising as a team.
That's what cyber-dojo is built for.

Why don't you add ...?

No. Listen.
Stop trying to go faster; start trying to go slower.
Don't think about finishing; think about improving.
Think about practising as a team.
That's what cyber-dojo is built for.

cyber-dojo is not an individual development environment
cyber-dojo is a shared practice environment
cyber-dojo is a shared learning environment
cyber-dojo gently provokes; provocation encourages learning

how do I create and share a cyber-dojo customized practice session?

Suppose you want to create a starting point whose files are different to the initial default set of files for a language. For example, you might want to create a cyber-dojo where the tests are already written. Or maybe you want to start with some legacy code to practice refactoring.

You can do this very easily in cyber-dojo.  Prepare your files in a regular cyber-dojo.  When you think you have your files how you want them, click the "test" button. If everything is as expected make a note of...
  • the cyber-dojo's 10 character id (from the URL); suppose it is 58E4486EE2
  • the animal; in this case the panda
  • the last traffic light's number; in this case 10


Click on the latest (right-most) traffic light. This will bring up the history-dialog. At the top-left is the "fork" button:


Click the fork button. This will create a new cyber-dojo with its own id, whose starting files are taken from panda's 10th traffic light. A new dialog will appear telling you the new cyber-dojo's id.


Creating a link for other people to fork your starting point

Now, in this example 6AACCE is a new empty cyber-dojo which has no users or changes in it yet. As you use it changes to it will accumulate. Eventually you will run out of animals with which to enter. In other words, like all cyber-dojos, it's good for one practice session only.

This begs the question, is there a way to share a starting point which will be pristine every time? The answer is yes, there is.

6AACCE was creating by forking from the panda's 10th traffic-light in the cyber-dojo with id 58E4486EE2. The following URL will create of a new forked cyber-dojo with its own ID, by forking from the panda's 10th traffic light of cyber-dojo 58E4486EE2.

<a href="http://cyber-dojo.org/forker/fork/58E4486EE2?avatar=panda&tag=10" target="_blank">Start a new cyber-dojo from my awesome starting point</a>

You can now share this on a web page (for example).

analyzing traffic-light transitions

As I write this cyber-dojo has hosted about 15,000 practice dojos. I've written a short ruby script to extract some measurements from a sample of about 500. I looked at transitions between red, amber, and green traffic-lights:
  • red means one or more tests failed
  • amber means the tests did not run (eg syntax error)
  • green means the tests ran and all passed
The first column is average number of lines added/deleted.
The second column is colour → colour transition.
The third column is sample size.

3.94ambergreen447
4.65amberred379
4.67amberamber1462
5.39redgreen607
6.01redred604
7.52greenred420
13.65greenamber436
17.67redamber432
22.18greengreen598

Here's how I interpret the results:
  • If you're at red or green and you make a small change (5.39,6.01,7.52) you're likely to stay at red or green.
  • If you're at red or green and you make a large change (13.65,17.67) you're likely to transition to amber.
  • There is a big spike in the number of amberamber transitions (1462). I speculate that long sequences of these transitions are occuring after a large 13.65 greenamber or 17.67 redamber transition.
  • I think the greengreen value of 22.18 is larger than it should be because it's including renaming a file.