A widespread phenomenon
Hackathons are a very widespread, “sporting” competition in the world of developers. It allows us to have some fun in a somewhat extreme and exclusively professional atmosphere. The goal of the event is to make an entire project in one swift movement, from nothing, through to it’s conclusion (possibly with some small interruptions for things like lunch, personal hygiene and if you’re very lucky, sleep. I’ve been a participant in only one 12-hour hackathon and as I’m about to take part in another, I’d like to share some of my thoughts and experiences going in.
The skills of a developer improve progressively from project to project, it would be unreasonable to expect someone to have all the knowledge required to complete a project perfectly at it’s outset. Let me explain why. Suppose a developer begins a new project, he learns the technical requirements of the task and plans how to structure it. When everything moves from theory to practice, he’ll find that something was redundant or something was missing. The “raw product” included shortcomings that were the result of a failed system design foundation. Whilst working on the project, the developer learns how to solve the different quirks and pitfalls which appear, sometimes he patches them quickly and crudely, sometimes carefully and to high quality standards, sometimes it might require implementation of great skill or perhaps a delicate touch, it depends on the programmer’s skills, circumstances and deadlines.
A developer grows project by project
Anyway, eventually the project is ready! The client is satisfied that the project now meets their requirements, but the developer himself is still a work in progress! In the process of overcoming the hurdles of development he has grown professionally. Now he knows what can be done better, what was redundant and what required special attention. All these little corrections have become a part of his programming experience. Each new project he takes on is done better than the last, more detailed and more sophisticated. Each new planning stage becomes more intense and precise, but as a result the outcome is simpler and more perfect. So, with little steps we acquire skill in our trade.
A complete cycle
A Hackathon then is an opportunity to live through all the aspects of a regular project, but in the space of a single day, (or perhaps 12 hours, a couple of days or even a week!). In a real project you may need to continue being involved for weeks, months or even years before the learning cycle comes to it’s end. During the course of the project of course you’re very unlikely to have the opportunity to scrap what you’ve done when half way through and start again doing everything more optimally in the light of what you’ve learned.
A safe place to grow
Of course, the project that was implemented in a day doesn’t claim to have refined syntax, documentation, tests or commented code, but it is an opportunity to prepare at least one project all the way through to the end, learn from it and grow professionally in a safe context. That’s a key reason why I’m keen to participate in more.