I learn best by practicing. When I only read (i.e no practicing, no note taking), I almost completely forget what I learned after a month or two. I think most people are wired this way. Think about a book you read 6 months ago and see how much of it you can still remember. It's scary.
Learning something new in programming is no different. Maybe even worse. But there's good news, because in programming learning by practicing is very easy. You just need a computer and that's it! And hey, now we're in the cloud era. If you need more, go and get what you need with a couple of clicks! It's crazy how much programmers can do these days while sitting on a couch with a cup of coffee. You just need some time and passion. The rest is simply there available for you to grab.
Hackathons are a great way of learning by doing and we at NIPO Software have started making this a company tradition for a year or so, thanks to my colleague Qa'id Jacobs who took the first initiative and continues to put effort into organizing them. Below are some pictures from our last hackathon around summer of 2015.
One of the ideas during this hackathon was building a "Hackathon Planner". It didn't get enough love, so was never picked up. Currently all ideas and team compositions are kept and maintained in an Excel file - the best and the worst tool of all times in computing history. So how about building a planner that can help people capturing ideas and forming teams around those ideas in a fun way?
A Hackathon Planner - MVP
A minimum viable hackathon planner;
- should be open source (not only NIPO Software, anyone or any company should be able to make use of it if they want to do so).
- should allow capturing of ideas in a modern way (I hear SPAs, Markdown, subtle animations, web sockets, responsive design).
- should allow simple ways of reacting to those ideas (i.e sending likes and possibly comments in the future).
- should be simple to sign up and login (built in GitHub authentication?).
- should allow a simple way of forming teams (mark the idea/team that you want to join and done!).
- should allow live monitoring of teams as they form and evolve. It makes the team formation process more exciting to follow. Watching as ideas live and die (signalR, socket.io ?).
Based on these thoughts above I've created a very basic sketch that can give a general idea:
I saw @jbogard putting it nicely:
one thing i try very hard to do is to not promote any tool/language/framework/platform/pattern until i've had to support it in production— Jimmy Bogard (@jbogard) January 26, 2016
I recently have this theory: How cool a platform, framework, database or a language is directly proportional to the amount of pain one will get during production support.
So we’ll see how this one goes with the choices that I made.. if I can stop slacking off and get to finish the MVP of course.