I have made a new step towards becoming a journeyman while participating for the first time at SoCraTes Germany on 7th-10th August. It was one of those experiences that made me say that being a developer is interesting, challenging, rewarding and fun.
2 days of coffee breaks
The unconference consists of 2 days with open space sessions and many coffee breaks.
It all started with WorldCafe discussions on Thursday evening when we identified the main topics of interest: Apprenticeship, Micro Services, Software Design, TDD, Mob programming. 100 participants from Germany and 40 participants from all over Europe filled rapidly the Marketplace with over 30 sessions in the morning. The activities didn’t stop until late after dinner. We used to gather outside or at the bar for discussions, inside for board games or mob programming. We even had a session of beat box and a training for joggling.
We continued on Sunday with Code Retreat prepared by @ and Adi. 30 participants were engaged, Adi and Martin know how to get them out of their comfort zone by choosing challenging programming constraints for each session. They had to deal with hard stuff like legacy code, Golden masters and Mikado method.
My first lesson
Never let things for the next day if you can do them today.
I was going to propose a session about Apprenticeship. Staying in the line with the post-it in my hand, the Marketplace got filled with many great topics. Just before my turn to present the topic I bailed out. I had the thought of proposing this topic tomorrow (hoping that less interesting sessions will be scheduled). Bad idea! Two reasons: first, the discussions are always generating even greater topics for the second day, the relaxed and friendly atmosphere makes the participants want to share and learn more. Second, after 1 minute @ announced his Apprenticeship session leaving me with no session for the next day. The only remaining choice was to attend his session and share my experience anyway. I ended up facilitating my own session.
Main ideas presented by me are included in the talk I delivered with Alex, at I.T.A.K.E. Unconference 2014. Adi and @ contributed too and the session brought even more insights into the subject. I discovered that few companies have such a program and everyone is doing it differently. It seems that is just us having this for both junior and experienced software developers.
Software design rediscovered
Design is done incrementally while doing test first programming or TDD. This is one of the first lesson I had when I started my apprenticeship at Mozaic Works. Adi confirmed it while talking about “Evolutionary Design”. It was a real open space session where Adi lead the participants to share their knowledge related to evolutionary design. For some it was emergent design, for others incremental design or just-in-time design.
During @‘s “Greenfield experiences” session I found out that doing copy-paste and generating duplication is not that bad. Sometimes duplication helps you discover the good design step by step. All you need to do is to not forget to remove it before finishing the feature’s implementation. The same happens with creating the tests when dealing with new technologies.Because it is difficult and risky to do TDD in a technology you don’t know, we choose to make the code work first, second we do the tests and third we make the code clean. All of these through incremental refactoring. I realized that maybe I am not an apprentice on this topic anymore. I was able to share what I have learned during the pairing sessions I had with Alex on refactoring, removing code duplication and incremental design.
More, while talking about estimates and planning, I found out that our programmers’ brain works different than managers’ brain. We are more relaxed when it comes to not knowing when a release will be delivered and we can deal better with uncertainty. So, managers should definitely read Real Options :).
I have many takeaways after 3 days of intensive learning and sharing experience. Here are the key ones:
- Apprenticeship is seen and put in practice as a program for junior developers. Its scope is to give them the best start in their careers as software developers and show them the way towards software craftsmanship. We, at Mozaic Works, see it as a continuous learning of new practices and techniques which helps you become more productive and efficient in everything you do at work.
- Software design is an art and like any art it has to evolve and be refined constantly.
- Working with new technologies is challenging and risky, but the results can be of great value for both programmers and managers.
- I like being a developer and I want to continue my journey towards software craftsmanship.
It was my first intensive programming experience abroad and I took new lessons. For sure, it was a big step on my way to software craftsmanship. Next year, I will proudly join again as a journeyman and I invite you to join us in learning and sharing with friends from across Europe.
Want to know what other events are happening soon and contribute to your way to software craftsmanship? Check out upcoming workshops on our calendar and get ready to join I T.A.K.E. Unconference 2015, in Bucharest.