We have already blogged about the ways to share expertise and knowledge inside your organisation However, there is one more way. That’s something we call a codefest or hackathon. Codefest is an opportunity to work for two days on any project you like using any technology of your choice. Also, it’s a chance to work with people you don’t have on your project.
Codefest enables people to try different roles. Indeed, a person who is normally spending their day writing code, can become a Product Owner or an Architect by coming up with a project idea. Before we start Codefest we already have a list of potential projects. Anyone who wants to propose a project needs to write an elevator pitch description and mention its possible technology stack. Later on when teams are formed and a codefest has started, the proposer needs to convey their vision of the project to their team mates in more detail.
While your daily routine includes a well-established set of programming languages and frameworks, at Codefest you can use anything you like. This allows an organisation to evaluate emerging technologies or bring developers up to speed with tools they have not used before. For instance, at our latest codefest we had a few Scala projects and many JavaScript/Angular.JS ones. A few of my colleagues and me chose to use Scala because we wanted to play with it and learn if we could use it on a real project in the future. A few months before the last codefest we had migrated one of our projects from GWT (Google Web Toolkit) onto JavaScript and Angular.JS. That inspired many of my workmates to try that set of tools and use them on their codefest projects.
Each of us has something to teach other people, we can also learn a lot from the others. At codefest you can finally work with all those people you chat to in a coffee corner and share your expertise with, that you don’t work with on projects day to day.
Some people might treat codefest project more like a journey not a destination. In other words, they might put more emphasis on working with new people and using the latest cool technologies. However, a hackathon project can become a commercial or an open source product one day. For instance, some of my colleagues worked on a Sonar plug-in for Scala, which was open-sourced later.
I’d better just leave a quote from one of my colleagues – Alex Mordue. The last codefest he and a few other guys worked on a project whose goal was to give an alert when there was no milk in the fridge using a programmable light bulb...
‘NCRs Codefests give me the opportunity to work with new technologies, software and hardware that I would not normally use in my IT and Infrastructure role. As long as you can get a small group enthused about your idea you can spend two days creating whatever you like. For the previous two Codefests, of which I’ve taken part, I created electronic sensor platforms to get real world physical data into our projects. I’m looking forward to the next Codefest and hope I can think up some reason to use a 3d printer’
This is probably the ultimate codefest project, as it checks all the bullet points from working with new people to doing something totally different while having tons of fun. However, the main point of the project was to ensure that developer’s productivity is never hindered by the sudden absense of milk in the fridge. The team went on a challenging endeavour of combining different pieces of technology together – digital scales, Philips Hue light bulbs, an Android tablet, and a Python/Django server application.
You can read more about this project in this blog post.
We all want to know who is good at what. Indeed, if suddenly we have to write some code in Erlang, we can find the most skilled person in the office by just looking at the skill matrix. The challenge though is to make people keep the matrix up-to-date as they become more and more proficient with the tools they use. This project tackles that challenge by awarding people with points, titles, and badges as they proudly write that they have become Clojure experts after a two weeks training. Furthermore, the project itself was a journey in exploring a full stack JavaScript development – Angular.JS for the frontend and Node.JS and Express on the server-side.
This was another project undertaken during codefest. Instead of writing all about the project, here is a link to the blog post of my colleague, Henry Coles.
Mike Borozdin
Tags: processes
September 2nd 2014