On Saturday November 15th thousands of passionate developers improved their programming skills and had fun while doing so. How? Well, They all participated in Global Day of Coderetreat.
So what is this Coderetreat? Coderetreat is a day-long, intensive practice event, focused on the fundamentals of software development and design. By providing developers the opportunity to take part in focused practice, the Coderetreat format has proven itself to be a highly effective means of skill improvement. Practicing the basic principles of modular and object-oriented design, developers can improve their ability to write code that minimizes the cost of change over time.
That may sound little bit boring. But what if you had these ingredients?
- 30 passionate developers who are willing to share their knowledge and learn something new at the same time. So passionate that they have no problem to wake up really early on Saturday?
- Interesting problem to explore (Game of Life)
- Set of challenges which will push these developers out of their comfort zones
- Pair programming
Well, That’s what we had at Prague event and I have to say that it was great!
At 8:45AM we started with quick introduction. We told people that they are going to spend most of the day pair programming and switching their partners every 45 minutes. There will be quick retrospective after each 45 minute session and that we will give them different challenges throughout the day.
First session was about getting used to the problem which is always same at every Coderetreat - it’s Game of Life. First challenge was not to touch computer for the first 15 minutes and try to tackle the problem just with paper and pencil.
Second session we introduced 4 rules of simple design.
- Pass all tests
- Reveals intent / Has good naming
- Contains no duplication
- Minimal number of methods, classes, …
We talked about what duplication really means, that it’s not only about same/similar lines of code, but that we are talking about duplication of knowledge (e.g. knowledge of topology in Game of Life).
We also reminded people that it is not about finishing stuff, but about practice and that they should take all the time needed to give things meaningful names, write good tests and remove duplication.
Following sessions were spiced with artificial constraints like:
- Maximum of 4 lines per method/function
- You can’t use IF statements
- Only immutable data is allowed
- No primitives (Integer, String, …) over method boundaries
- No return values
- No talking is allowed. You have to communicate with your partner
using only tests / code.
We, as facilitators, were really happy to see that people tried really hard to obey this constraints and that they pushed themselves out of their comfort zones learning new stuff along the way.
At the end of the day we held big retrospective where each developer answered following questions:
- What did you learn today?
- What did surprise you?
- What are you going to do differently on Monday?
Many programmers learned about tests, new programming languages, some of them were surprised how easy and useful it has been to pair program with other people and how important it is to think about good names for classes, methods, variables and tests.
It has been exhausting yet gratifying day for everyone and I’m looking forward to the next event.
Thanks goes to everyone who participated and made this event so great. And I would also want to thank GoodData and Vendavo for the support which allowed us to make it free for everyone.
Check out more photos from the event and see you next time!