Coderetreat: The toughest constraint
Ask the attendees what they want
During the Global Day of Coderetreat 2014 (GDCR) I facilitated the event in Turku, Finland. That is when I presented the toughest constraint ever in any coderetreats I facilitated until now.
Since I have a lot of constraints in the list, some time ago I started to ask the attendees how difficult would they want the constraints to be. I am asking them on scale from 1 to 5, 1 being boring, and 5 being extremely difficult, what would they want to do as difficulty.
Another thing I’m doing, stealing the idea from Alex, is to ask the attendees of the coderetreat about the expectations they have. They write one expectation on a sticky note and we look at them and they choose what they want to practice. I tell them about constraints that will generate the kind of learning they want.
Usually during coderetreats the attendees want constraints of the difficulty between 2 and 3. Probably because 1 seems boring and 5 seems scary.
Now it was different. They wanted the scary constraints. And they insisted. So here is the constraint.
Conway’s Game of Life
Conway’s Game of Life (GoL) is a cellular automata, that has specific rules as you can find in the wikipedia article. John Conway worked for tens of years to create these rules for the orthogonal two-dimensional universe. But after that some smart people came-up with the rules for a two-dimensional hexagonal universe. And the rules are very similar, find them in the pictures below.
Dynamic space structure
My idea was to mix those two concepts into one universe. The universe has worm holes. The cells can pass from one part of the universe to the other. But the space changes when you enter the worm hole. The orthogonal cells change into pentagonal cells at the gate of the worm hole (the transient area). After passing the gate, the cells change into hexagons and they live as hexagons until they get out of the worm hole in the other part of the universe.
Time is not constant
To make things even simpler, the time passes differently. If you have one tick in the orthogonal space, in the gate (the transient area) you have that 1 tick equivalent to 7.6. When you pass into the hexagonal space, the 1 tick is equivalent to 0.72.
Nice, right? 🙂
For a couple of years now I am changing the requirements of GoL during software events to show the attendees how changeability should be a focus when doing software development. If you have high coupling between design elements (can be classes, interfaces, prototypes, etc) like Universe, Rules, Space, Cells, etc then it will be very hard or impossible to have a design that is easy to change. Another thing I am focusing is the Single Responsibility Principle. If these design elements are not cohesive and have more than one responsibility, then the design is more rigid and thus more difficult to change.
The main purpose of this session was to highlight better the cohesive design structures one could have when optimizing for changeability of the design for any software solution.
Any other ideas?
If you have any ideas on how to improve this session or any other ideas, please drop me a comment.