Imagine if every composer went about music composition like this:
“I have a big deadline coming up and I’m not done. I know what I’ll do! I’ll get a bunch of young musicians who don’t have much experience but who really want to get some exposure.”
So he gathers all the musicians together. Then he says,
“Okay guys, I know you have different amounts of experience and are suffering badly from imposter syndrome. I’m here to tell you it’s OKAY because tonight, whoever writes the best portion of the composition that you’re working on will win and a prize.”
And then the composer keeps the young musicians there all night. And instead of paying them for their time and giving them proper training, what he does is pay them in pizza, beer, soda, sleep deprivation, and a lot of coffee. And the best student composer wins a prize and the chance to help the composer write his music on a full-time basis.
It makes no sense, right?
And yet, this is what happens when we throw new programmers into “friendly competitive” hackathons, under the illusion that competition is somehow conducive to learning.
What is a hackathon?
Stated simply, a hackathon is s a programming competition where developers/students are tasked with writing software within a short window of time, anywhere from a few hours to a few days. Sometimes, students are grouped into teams and must compete to produce the best application within that time frame. Sometimes it’s composed of mostly beginning programmers; other times the crowd ends up more mixed. It’s meant to help programmers improve their skillset under pressure.
Some organizations host their own hackathon, which is how you’d get the type of scenario mentioned at the start of this article. Other hackathons are meant more as a way to challenge developers and encourage networking.
There are too many hackathons going on at any time to list them individually.
Are Hackathons Really the Best Way to Learn?
The popularity of hackathons might point to their effectiveness…. Or it might point to exploitation and the creation of a coding culture that is overly competitive from the get-go.
I’m a senior programmer with nearly two decades of experience and even I have never found the competitive environment to be interesting or inviting. My experiences with them where that they alienated more learners than they reached.
Of course, some of the anecdotal data points to the fact that the majority of individuals who attend hackathons aren’t even programmers. They’re hiring managers, entrepreneurs with ideas, and admin staff for the event itself.
Hackathons: Shortcut Recruiting?
It seems that when companies sponsor hackathons, they’re looking for talent and they’re looking for free solutions to their software development challenges. What does it say about companies that seek to hire competitive “hackers”? Perhaps it says that recruiting is broken. Perhaps it also says that the world is changing and merit-based hiring is where it’s at. But surely there have to be better ways to introduce students to coding than shoving them into a “compete or die” environment.
Pros of Hackathons:
- Seeing what other people can create is inspiring
- Opportunity to network with peers
- Opportunity to find a mentor
- The challenge can be inspiring for some personalities
- The challenge can provide accountability some personalities need
- Can bring you job opportunities and something to show for your work
- Intimidating for certain personalities
- Intimidating for new learners
- Intimidating for minorities who already feel underrepresented
- May cause people to think that every programmer is competitive
- Not good for those brand new to programming
- Titshare (Enough said!)
Hackathon Alternative: Open Source Projects
Don’t get me wrong. I feel that completing projects is the perfect way to learn the ins and outs of software development. I don’t feel that it’s the only way to go about creating a network of developers or getting your feet wet.
For example, you could contribute to open source projects. Both Cindy and I have contributed hours upon hours of development support to open-source projects. Open source projects are real projects run by people of various levels of experience and skill. You’re more likely to work on a variety of languages when you’re working on an open source project than you would in a mobile-first hackathon. You’re also going to see some of the problems existing software has, which is more useful to the real world of programming than constantly starting from scratch.
Some resources for you:
Contributing to Open Source on Github
This article covers the more technical side of contributing code: using an online repo like Github.
How to Get Started with Open Source
This one by HackerEarth is a list of some of the more popular and needy open source projects, like Mozilla and Python. Definitely worth a read.
Getting Involved in Open Source Projects
Treehouse is always useful and this article is no exception. You’ll find out why open source is so important and how to go about finding a suitable project.
The Beginner’s Guide to Contributing to Open Source Projects
This NewRelic article provides some really great newbie friendly, non-code related ways to get started in open source.
How to Get Started in Open Source
This ReadWrite article is especially geared for women who want to dive into the open source world. They give advice for getting over the closed nature of open source communities and how to find the best community for your skillset.
My solution: Dinner and Code
Learn more about Dinner and Code by going to the website.
SlideWave is an agile, full stack development team that focuses on high performance and complex software projects. Think 3D simulation, "soup to nuts" enterprise automation, and web-based applications. To learn more about us, click here.