Being a good developer requires continual learning. Recently, Atlassian held the first session of Design Group. A study session on object-oriented software design, the purpose of Design Group is to remove pesky distractions like deadlines and users so we can concentrate on improving the design of the software we make. In this first session, we started with the foundations of Object Design and selected a group of less senior developers to be guinea pigs in what I hope will grow into an extensive training program. By all reports it went off! The participants were very positive about their experience.
For those who vague-out on the technical stuff, this was all about how to best represent a small convenient chunk of the physical world, a “domain”, in software objects.
This time around the domain was Monopoly. Everyone knows Monopoly.
First, using our beloved index cards, we brainstormed the concepts in the game. Are dice necessary or is it just a random number between 2 and 12? Are game pieces necessary, or are they just a convenient way of telling where each player is on the board? How should a software monopoly game keep track of whose turn it is? Why have these people got sticky notes on their heads with monopoly domain objects written on them?
These were the questions that vexed us for half a day.
People paired up for discussion about what the roles and responsibilities were of the objects in our the monpoly domain model. For two hours, pairs wrote code that they later demonstrated to the group.
Thanks to Robyn’s kind loan of her Star Wars Special Edition Monpoly ™ we discussed the difference between interface and implementation and explored the tricky issue of special game rules, such as when landing on the Death Star Free Parking and collecting all the money collected from taxes and Jedi Chance cards etc.
We had a lot of fun using a few collaboration games to understand Monopoly. The sticky notes were part of that game some people call Celebrity Heads, I know it as The Rizzla Game for some reason lost to the sands of time. The game is to ask Yes/No questions of the other players in an effort to find out what is written on the note stuck to your own head. A “Yes” answer lets you ask another question. It was pretty funny having everyone asking questions like “Am I Property?”, “Do I have a relationship with Money?” and “Am I concrete?”.
I look forward to continuing the program in the future and as always am interested in hearing from people who would like to contribute. There are lots of people keen to be involved and I think it’s great that Atlassian’s fearless leaders have the courage of their convictions to support internal learning programmes like this. With their support I have tried to make this as valuable as possible to the individual participants and ultimately to Atlassian.