I've been living in the Bay Area for two years now. One of the main reasons why I wanted to move over here is the large population of tech people that exist in this area. From Computer Science students in U.C. Berkeley, to developers in San Francisco who are working on the latest website / app that everyone will be using a year from now, to the super-smart engineers who work on some of the world's largest companies in Silicon Valley, there's a lot of people who are just like me.
Of course, it's pretty cool to be able to meet people who are like-minded and enthusiastic (sometimes too enthusiastic, but that's another story for another day), with a broad range of tech interests. It's fun to hear what others do for a living, and most tech people just love to tell you all about what they're working on. I have learned so much in my two years living in California than I had for the rest of my 29 years living elsewhere, which is pretty awesome.
However, something became apparent to me in my first few months living here - I really didn't want to hang out with tech people all the time. Not that most of people I met were dull or socially awkward (usually, I always think that's what people think about me when they meet me). But I'm the type of person who enjoys the company of people who think very differently than I do. It sort of gives me a chance to study others, if you will, and get a better sense of perspective in my life. Because of this, it had been quite a while since I hung out with others and talk tech, outside of work.
That brings me to a couple of weeks ago. A co-worker - who's not a developer - told me that a few of his programmer buddies were getting together for a weekend of hacking up something in hopes of being able to get a working website or app out there in 48 hours. Although I've been in California for so long, I had never gotten together with anyone just to build something for fun. I wasn't going to do anything that specific weekend, so I agreed. It was an interesting and really fun weekend, but since it was everyone's first hackathon, there were a few things that we could have done better, which I wanted to write about.
Have an idea before the weekend
I was informed of the hackathon on the Sunday before we were going to build the app. The guys who were planning to participate had been shuffling emails back and forth with app ideas so we could decide on one to work on. By Friday evening, we had a list of a lot of solid ideas. So we decided to get together and pick one that was feasible to build in two days. We spent more than two hours on Friday night going through the ideas and by the end of it, we still had no idea. So on Saturday morning we went into the hackathon without knowing what to do.
I think this set us back at least 3-4 hours of real work that day. If we had picked an idea and decided to work on it before hand, we could have done a bit of work beforehand to get some stuff up and running, like setting up the services we were going to use and make sure everyone's development environment was set up for whatever we were going to build (which surprisingly, for a few, it wasn't).
Clearly define what needs to be done, who will do it, and make it visible
Because we had no idea what we were going to build going into the weekend, we didn't really know what the scope of the project was going to be like. Our plan was to have a minimum viable product ready to go on Sunday evening. However, we only were able to define what would be the minimum amount of work on Saturday afternoon, so it was just a lot of broad strokes and nothing clearly defined. Everyone chose what they were most comfortable working on, or what they wanted to work on, and we took off.
The problem with this was that at any given point, I had no idea where everyone was at with their work, and that made it difficult to know what I should have been focusing on next. For example, I had been tasked with building classes on the back-end to connect to different APIs and pass that data on to the front-end. By the time I was done, I didn't know if the front-end was ready to go or not. So I had to basically interrupt everyone and ask what they were doing and how far along they were, and also ask what needed to be done next. Had we defined our tasks earlier and more clearly, and people were good with updating the status of these tasks regularly, I think we could have wasted less time and done more.
Bring more variety to the team
At the end of Saturday night, I quickly realized what was going to be the part that held us back - the user interface. In our group, all of us were solid developers, but no one had any decent design chops. So that left us with one of the guys hacking together an interface that, in all honesty, didn't look good at all. A lot of the back-end stuff that we planned to have was more or less wrapped up on Sunday, but the design was sorely lacking a ton of polish, meaning that we couldn't release our app.
I thought that at least one person in the team would be able to slice and dice any layout into usable designs for development, but we didn't have one. Next time, I'll try to get a designer on board for this task only. And if not, there's always places like Theme Forest where we could get up and running rather quickly with a template, which we thought about too late.
Have people who can be there
One thing that really killed us was the fact that out of seven people who had agreed to be part of the weekend hackathon, five showed up on Saturday morning. And on Sunday, one of the five had to bail, leaving us at four people - one of them being my non-developer co-worker who couldn't really do much outside of doing wireframes and helping with project management. And to top it off, everyone called it an early night both days because of prior engagements. All of this set us back quite a bit, for obvious reasons. I think we could have finished our app in a usable state had we been at full strength for both days, and we had hacked until the wee hours of the morning, which is what I expected. I mean, come on - it's a hackathon! I was fully expecting to barely sleep during those 48 hours, but it wasn't to be.
Despite some things not going as smoothly as planned, and that we technically 'failed' reaching our goal, which was to release a working app by the time Sunday wrapped up, I personally considered it a success. Not only was I able to meet new people and expand my network (one of my goals in 2012), I also came out of that weekend reinvigorated, and with a very strong desire to spend more time developing and learning code in my spare time again. Since I had somewhat tired on tech and started filling my time with other non-technical interests, as I wrote a few months ago, I really hadn't been doing any coding or learning more about the new hotness in my spare time. After the weekend hackathon, I've been wanting to code all night long after getting out of work. I even started planning another hackathon for another app I want to build, too.
It's amazing how taking something you do on a daily basis and doing it in a different setting can reignite your passion once again.