Code for Good aims to solve social problems through software. We're out to change the world, for the better. So far, that has taken the form of many hackathon-type events, where we gather developers, designers, and subject matter experts together for a day or two (or more) to focus on creating a software-based solution to a social problem. We work with nonprofit partners to find problems that need solving, and to make sure our efforts have the most impact. The results of our hackathons have been amazing, but in order to reach "every person on earth", Code for Good has to scale up. Way up. That's where you come in.
If you're interested in putting your own Code for Good activity together, we want to help you however we can. To that end, this page collects what we've learned, tools we've found useful, and other information that we hope will help you get started with your own Code for Good event.
Putting on a hackathon isn't rocket science. YOU can do it. It takes some work, but it can be very rewarding and, if done right, lots of fun.
There are LOTS of things that go into conducting a successful hackathon. Here are some things we've learned:
- Decide how long you want your hackathon to go on. Generally, you'll have some time at the beginning to get everyone on the same page. some time for people to organize themselves into teams, and some time at the very end for "show and tell" (and judging/prizes, if you decide to do a competitive hackathon). In between, you want to give the teams plenty of time to work on their projects. A typical hackathon is one or two days, but can be longer. Staying overnight is an option if your participants are up for it (and your venue makes that feasible).
- Find a place. You can do a hackathon at a business, school facility, or even a private home. Make sure you think about the basics like parking, access to bathrooms, ease of getting in and out (especially for overnight hackathons), trash disposal, etc. Comfortable places to sit and work are a must.
- The four basic ingredients of a hackathon are: Food, Power, Internet, and Caffeine (not necessarily in that order). Plan to provide these to your participants to keep them happy and productive.
- Encourage serendipity - do everything possible to help the participants surpass expectations, and surprise and delight you and each other
- Remove barriers to participation - make it possible for as many of your target audience to participate as possible
- When facilitating a hackathon, your role is to answer questions and solve problems
- A hackathon should be a fun, casual time where participants can set aside the "day to day" and focus on building something cool
- Kick off with a "download" - an introduction to the topic, the ground rules, etc. Keep this short, to give the teams as much time as possible to work
- Help teams form organically, around common skillsets, interests, and needs. Don't be too rigid about team structure.
- Plan a "show and tell" at the end of the event, where each team shows what they accomplished.
- Encourage teams to think beyond the end of the hackathon for their projects - how are they going to get it into the real world, into the hands of real users? Don't let them think of this as a school project they'll turn in, then walk away from.
Of course, none of these are hard and fast rules. Don't be afraid to experiment, try new things, and follow your instincts.
Choosing a Problem to Work On
A Code for Good hackathon has a problem (or set of problems) that participants are trying to solve with their creative software solutions. In organzing your event, put some thought into what problem(s) you want to solve. Think about nonprofits or other organizations that you can partner with. Choose a problem domain that will be meaningful to your participants. Do your research to make sure that you understand the problem set well enough to explain it adequately. If possible, get subject matter experts (from your nonprofit partners or elsewhere) to come and participate in your hackathon. Ask them to give a short overview of the problem at the beginning of the event, and to stay and participate with the teams at the hackathon. The more detail you can provide, the more connection you'll help your participants feel, and the more motivated they'll be to create a great solution.
These are some free tools, sites, and other resources that we've found useful in organizing and conducting hackathons.
- Event Planning and Logistics: Eventbrite - Invites, RSVPs, and easy messaging to attendees. Free for free events.
- Project Planning and Management: Trello - Organize your project into "boards" and see who's working on what, and what needs to be done.
- Source Code Sharing and Collaboration: Github - Manage your code and files and collaborate with your team. Free for open source and public projects.
- HTML5 Coding and Cross Platform Development: Intel XDK and HTML5 Tools - Browser-based tools to write and test your HTML5 apps, then compile and deploy them to popular platforms.
- Web and HTML Reference: W3Schools - A terrific reference for how to do just about anything with HTML.
- Group Questions and Answers: Piazza - Create a place for your team to ask and answer questions, and help each other out.