In our continuing tradition of asking past winners to write something about what it takes to build a winning app in 48 hours, we’ve asked Kelli Shaver, the 2013 Solo Winner, to give us some insight on competing solo. Gather ‘round!
A few days ago, Nick contacted me and asked if I would write an article about what it’s like to complete in Rails Rumble when going solo, if I had any tips I could offer, and what sorts of insights I had gained about going it alone for a 48hr programming competition. I’ve been participating in Rails Rumble for many years, both individually and on teams. For last year’s Rumble, I created Itemize (http://itemize.cc), which won the solo entry category and competing solo definitely has a different feel than participating as part of a larger team.
Here are a few things I’ve learned over the years that I hope will be helpful for all participants, but especially for solo competitors.
Be Laser Focused
You’re one person and you only have 48 hours. Accept the fact now that you won’t be able to turn out an app of the same scale as a 4-person team. That’s perfectly OK. No one expects you to build the next Facebook in one weekend. Instead, focus on perfecting a singular idea and really driving home the execution. Your goal should be a small app that does one thing very well.
Of course, to be this focused, you need an idea that’s simple and easy to communicate. I started making lists of ideas quite a while before the competition. About a month before time to code, I went through that list and narrowed down the ideas. If I couldn’t explain what I wanted the app to do in one sentence, it wasn’t a good fit. Sure, maybe the idea would have been simple, but if I couldn’t communicate it concisely, I couldn’t build it in 48 hours. In the end, “simple invoicing for small jobs” won out over “an app that allows you to upload video files and images for….”
Plan for Atomic Features
Start planning the features you want to include in your app as early as possible. The more time you have to plan and prepare, the better. Once you have your features outlined, take a good hard look at the list.
But don’t start cutting out features! Instead, start a whole new list and add in only the core features you need as you get to them. Plan to build your app in layers, with the most vital pieces first and rest only as you have time.
The goal here is to layer on functionality so that you could theoretically stop after the addition of any feature and have a functional, polished application - even if the feature set is limited. This will let you stop development at any time without having to worry about broken links, half-baked functionality, or unfinished pages. Maybe you didn’t get to implement Feature X that you really wanted to include, but the beauty of this approach is that no one else will know that Feature X was ever in the cards.
Use Open Source Sensibly
We all know how useful open source libraries, gems, and plug-ins can be, but when you’re working alone and only have two days to build your app from concept to completion, this is especially important. While you’re doing all of that planning, take some time to track down and compile a list of the gems, libraries, and resources you can leverage to build your app.
Remember, you can’t write any code ahead of time or re-use code you’ve written previously, but you can certainly take some time beforehand to learn how to use a gem, or test out an API, or read documentation. It’s best not to go into the competition relying heavily on a library you’ve never used before and are unfamiliar with. do your research ahead of time and develop a plan for how you will use open source code in your application.
Your Health Is Important
It’s tempting to go into a 48 hour competition with plans of not sleeping and consuming large quantities of Mt. Dew and Funyuns to fuel your 2-day codeathon. I’ll admit, when I first started Rails Rumble, I could do that, but these days, it’s simply not an option.
Schedule sufficient sleep into your weekend. When I built Itemize, I probably only spent 34-36 of those 48 hours programming. The result was a much better application and a much more enjoyable experience on my part. Frustration due to over-tiredness can ruin the entire weekend.
Diet also has a big impact on mental and physical health. These days, I stock up on water, fruit, nuts, raw vegetables, and foods that I know won’t make me feel sluggish, tired, or uncomfortable. Save the pizza and beer for a Sunday night celebration of having made it through the weekend.
When soloing your build, it’s easy to feel isolated and far removed from the other competitors and what’s going on throughout the rest of the Rumble. There will be a lot of time over the weekend where you will need to be head-down in code, but whenever possible, poke your head up and look around.
Each year, the IRC channel is filled with people popping in to ask for help, encourage each other, and just joke around and have a good time between frantic periods of coding. Being a part of this really makes you feel connected to the community and it’s honestly one of the best things about the entire weekend. I’ve made some great connections and friends through the Rails Rumble IRC channel over the years.
Yes, we’re competing against each other, but there’s also a sort of shared camaraderie among a group of like-minded developers getting together to enjoy their craft and have fun building something they love over the course of a weekend. Take time to allow yourself to be a part of that.
I hope this gives you some insight into some of the unique qualities of doing Rails Rumble solo and how to get the most out of the weekend. Above all, remember that the goal of the competition is to celebrate the community and to have fun.
If you’d like some great general tips on building an app in 48 hours, check out last year’s great article by Darcy Laycock.
Bio: Kelli Shaver has been participating in Rails Rumble since 2007. She is the lead developer at StickyAlbums.com and co-hosts a weekly tech podcast with Jonathan Stark, who she’ll be teaming up with for this year’s competition. You can find her on twitter @kellishaver.