As per the advice of quite a figure at big news company, I've been participating in a number of hackathons lately. It's been quite a learning experience, so I'm working on scheduling more for myself over the next few months.
One problem I have is getting started. Coming up with clever solutions to big problems doesn't seem to be the hard part. If I can come up with a relevant simple solution to a problem within 3 hours during a 48hr hackathon, I can have at least 40 hours to implement the solution I thought up.
In order to solve my problem of getting started, I've decided to come up with a hackathon stack and heuristic attack scheme.
Coming Up With An Idea
Coming up with an idea to work on can be tough, because some hackathon prompts are made to get conversations about huge issues started. Lots of hackathons are created to start a community of problem solvers in a particular realm of issues, not simply to tackle one or two micro-problems. Since such problems usually stem from huge, seemingly unsolvable problems, sophistication in whatever solution I come up with over the time I've been alloted should not be sought. Instead, I think what would be most effective is finding one very small portion of the issue, gauging its importance with respect to other portions, then tackling that throughout the course of the hackathon event.
So I can break my idea-creation time up into:
- Topical research - find out what the problem entails; key concepts should be identified; obvious issues should be listed.
- Settlement - Choose an area to focus on based on the topical research.
I've been in some tough research situations (time constraints) running iNeedShitDone. I can leverage the skills I've developed doing that in order to get through this part of the hackathon creatively.
Hackathons are sometimes device-specific, but I haven't participated in any of those, so I'm assuming that I'll always be working on both common mobile and desktop applications.
I need a core application that I can step into the hackathon with so I can get started right away. Since a one-size-fits-all stack is impossible, my intention won't be to create one of those. Instead, I'll focus on components all applications are bound to have, including common extraneous components. I also want to keep in mind that these projects can turn into real technical/innovative projects, which can become businesses.
I'm basically going to add to this list over time. I'll start a git repo tying everything together.
- Version control
- Underlying web application framework (MVC-preferred)
- Front-end framework (visual components; responsiveness)
- Front-end framework (functional components)
- REST API infrastructure
- User profiles/accounts
- Deployment scheme
- Profiles/Accounts application
- REST API
- Real-time updates
- Picture/Video uploading/rendering
- Private Messaging
- Analytics and accompanying visuals (charts)
- Social site integration
- Friends/account linking
- Realtime form validation
- Email notifications