October 9, 2014
What is the best way to teach a group of developers how to implement new technologies? Piece of cake: Just run a team hackathon!
When the CMS platform eZ Publish 5 (based on the Symfony2 framework) came to NoA Ignite, our work was cut out for us. We needed to find out more about how Symfony2 works. We needed to learn all about the program’s application programming interface (API), and we needed to figure out how to create cool new features. Our first thought was to call Sensio Labs (the folks who created the framework) and ask them to visit Kraków so that they could show us their tricks. And so we did – about a year ago, in March 2013, we had several days of training with them.
Since then, however, none of us had used Symfony2. Naturally, when you don’t use certain skills, you forget them sooner or later. I’m sure that’s what happened to our group of brave PHP developers! A couple of months later, we asked ourselves: What is the best way to learn this material for good? There can only be one answer: Practice. But how do you practise a technology you don’t use, especially when you’re very busy? Well, you can do what we did: Ask your company to help you, gather the team, go outside of the city, relax, focus and let the magic happen.
The hackathon would last for three days and required a great deal of preparation before leaving town.
First things first: We had to pick the best dates. Gathering the whole team for three days outside the office is not easy, especially as we had to make sure our project managers could work around our absence. In the end we decided to go in the summer, which is typically a slower period at our office.
Three days is not a whole lot, so we had to use our time efficiently. The stated goal of the hackathon was to create a Symfony2-based application that could send SMS notifications to employees. We had other ideas, of course, for example creating a system that would help us manage our FIFA 14 tournaments, but not everyone welcomed this idea (tough luck, but maybe next time). After that, we defined the application’s exact functions and split those ideas into tasks. After estimating the time, individual tasks were assigned to a pair of developers. This was our first go at “pair programming.”
Finally, we had to make sure that everyone had the same “settings.” Just as in the office at NoA Ignite, we were using virtual machines. For this occasion, we created a brand new VM that ran Ubuntu 14.04 and had all PHP tools on board.
On departure day (D-Day!), we packed our laptops, grabbed coffee from the company kitchen and started our journey to the Castle in Niepołomice (about 30 minutes from Kraków). Apart from the historical aspect, the location also offers a nice hotel. Picking a nearby location saved time – we could start hacking the same morning we left the office.
After we arrived, we consolidated the furniture that filled two hotel rooms into one room. Then we started to create code, draw diagrams on flipcharts and do other things that developers do.
As we worked on the project during office hours, we were free in the evenings and wanted to have some fun.
After our first day of work, we had non-work-related conversations, chilled out with beer and smart food (chips, pretzels, cookies). The next day, we finished work and went to a rope course in Wieliczka. It was the first time for some of us, and we ended up with a bunch of men in the middle of the forest screaming like babies. Following this high energy entertainment, our batteries were fully charged for the last day of the hackathon.
Our goal was to produce a fully functioning solution. However, as the hackathon progressed we found ourselves having to spend time learning Symfony2 at the expense of implementing the code. In retrospect, we could have allocated more time for learning Symfony2. The upshot was that we ended up with a nice and large but incomplete application. As the hackathon came to an end, we devised a plan on how to complete the application and hope to be able to release it in the coming months.
Definitely! An event like a hackathon has many advantages. First and foremost, we learned a lot about Symfony2. After the hackathon, I was able to use my new skills in a project at work. Secondly, although the team members were already close and liked each other, the hackathon gave us an opportunity to hang out together even more. We also collected bonus point as it allowed us to spend time with a new team member. Last but not least, we almost arrived at a solution that would make every employee happy. To conclude: I encourage you all to try this fantastic, fun and focused method to learn cool new things with your teams :)
Photos: Making Waves Hackathon Team