A little background:I wrote a rails app over the weekend with two friends, as a part of Rails Rumble. I had thought about entering both RR and Node Knockout in the past but this was the first time actually competing. Considering each of us thought we could contribute about 8 hours (but probably did more like 12), it went quite well, and it was a lot of stress-free fun as well.
Deciding on an idea:ElephantUp was our second choice project. Our first choice was iPhoto replacement with a DropBox like native/web interface, but we scrapped it when we realized:
- it wasn't going to get done with 3 people * 8 hours
- Amazon S3/Glacier were not allowed in the rules because they are paid services
Another idea was an exchange board for McDonald's Monopoly game pieces, but turns out McDonald's specifically forbids this type of thing.
ElephantUp was essentially a place to collect bookmarks, where you can search for items. Half way through the design process we realized EverNote does something similar though a browser extension, AND their logo is an elephant. Please don't sue us, EverNote.
What went right:
A LOT of this went fairly smoothly actually. None of us really stayed up coding the night away, and a lot of work was done asynchronously with everyone 50 miles from one another.
- Division of labor: Gerad with his product management background was able to lay out a fairly detailed workflow of things to get done, Bert was able to set up the server quickly and keep things from breaking, and I decided to get more frontend-y. Since all of us were really devs, we outsourced design and layout work to Bootstrap, and got art/icons from free cliparts. Having each team member specialize on a particular technology at the beginning turned out to be a great decision for us.
- Communication: Bert was in south bay, Gerad in SF, and I live in east bay, so everything had to be online, and we decided to keep things light in terms of communication tools:
- Flowdock for group chat
- Google chat for individual chat (though we didn't really use this)
- Github issues for product/project management
- Github issues for bug tracking
- Not re-inventing wheels (well we did try to reinvent bookmarking): No big surprises here, but relying on a lot of third-party tools and libraries helped cut down on development time tremendously. A sample of great products we used:
- Railswizard - good starting point to get a new rails app going with script templates
- Bootstrap and Bootswatch - I'm guessing more than half the entries this year are using Bootstrap.
- Thinking Sphinx - for fast indexing of large amount of text
- And a slew of your standard tools: haml, sass, omniauth, etc.
What went wrong:
Not a whole lot went wrong really, but there definitely were a few things I would do differently.
- Not testing in Windows: nothing really works in IE8/9, though I'm told it works in IE10. Not a big issue, but we probably should have left a message about that.
- Not having a link to vote in RailsRumble: nothing huge, but seems like a low-hanging fruit that we missed.
- Not doing a full QA test until the last minute: we caught a bug with 5 minutes left, and had to do some tag deletion/force-pushes to get it out the door. I think the last deploy happened right at 11:58pm UTC. Having some sort of a "test suite" steps that we performed a few times a day would have ameliorated this.
- Not having any analytics plugged in: it would have been nice to know when people go and sign up or add links through Google analytics or GoSquared that was offered to teams. We do have airbrake hooked up, so at least we'll get notified when things break...
- Not doing TDD: probably not a huge deal in a 48-hour hackathon, but there were definitely times where we were re-fixing some methods because another commit changed the return value or something like that. Some basic tests with automated testing would have been helpful.
Overall a very positive experience, and can't wait til Node.js Knockout in November!