A hackathon is a social event for programmers and designers with a clear goal: Develop an app in a specific time (normally 24-72h) in the language or platform chosen by the host. Time is a key factor, and 5 minutes can turn a stable project into a complete mess.
In this case is very useful to have a version control system to track the changes done in a project, keeping those changes under control.
Last time I went to a hackathon, I saw the frustration of some of my teammates, who were using the new Team Foundation Services Preview, a great tool with a huge potential, but maybe not the best option for this scenario:
- It needs a stable Internet connection; otherwise the checkin and checkout operations are unavailable.
- It’s centralized, so every time a check-in is done, all the source code its integrated, so if the client detects changes in the servers, It will be necessary to get the last revision, make a local merge, and afterwards, commit the changes back to the server, wasting time.
With this in mind the version control system becomes a sync tool, rather than a control tool. This scenario, using a distributed version control system (DVCS) could be performed this way:
- A member of the team is able to commit the changes of his code independently, in a separate branch, and keep the history of the changes.
- The rest of the members can replicate the changes, using the local network, saving bandwidth and avoiding the usage of external servers.
- The access may be limited, even in the same network only authorized users may be able to see the code and replicate the changes.
- The merge operations are less frequent, integrating finished components; therefore we avoid risks like introducing new bugs. Also, tools like PlasticSCM’s Xmerge can detect refactored code helping a simpler integration.
- All changes may be integrated at the same time the code is being created, independently.
Plastic SCM, as stated before, is a distributed SCM that allows all the discussed features, but also Git or Mercurial will do the job.
In an agile development, the right tool can make the difference between a standard app, and a winner app. On your next hackathon, try a DVCS, and if you try Plastic SCM, leave a comment with your feedback.