Blitzweekend : Don’t do it!

This post is cross-posted on Blitzweekend’s blog

When Heri asked me to write a post on Blitzweekend’s blog to share some of my tips on building an app in one weekend I thought only of this one:

Don’t do it!

Truth is, if your manager and boss finds out you can do in 2 days what takes us 4 months at work, we’d all be screwed! So keep it quiet and pretend it was an old project you’ve been working on for a long time (months, even years if your boss is not that bright).

See the true story bellow:
Dilbert

If you’re still reading, maybe you don’t care about being labelled as a fast worker. Perhaps you just like creating new things so much, you can help yourself but build stuff again and again! But for most people the problem is: how to turn this into something other people can use. Not only you. Here are 3 tips I’d like to share with you on how to get that damn weekend project out the door, fast, without any pain (until you get labelled a fast worker) while having fun (for now! wait ’till you get labelled!).

1. Focus

Handle FindrKeep everything simple, as simple as it can get. Don’t try to solve all the problems in the world all at once. Find one problem, for example: greasy door handles, and solve that single problem: a web site for locating clean door handles in a specific building.
But hey, it would be cool to also share pictures of the greasy door handle with your friends! That’s when you start loosing focus. Choose only one idea and keep it simple and atomic. It should be impossible to split your project into smaller ones.

2. Remove, don’t add stuff

Here’s a quote I quote way to often:

Perfection is reached not when there’s nothing left to add, but when there’s nothing left to remove
– Antoine de St. Exupery

Don’t think of new features you could add to make it more cool. Think of which one are just too much or don’t add that much to your project. If you need to add features to make your project interesting it’s because your original idea sucks.

3 legs chicken, miam!It’s like a 3 legs chicken, if you pull on the features leg, you’re gonna need more resources and time. But if your time and resources are restricted, your only option is to cut off the features leg (who wants a 3 legs chicken anyway?).

If you think you’re going the wrong direction, start over. That’s why it’s important to put your code under source control from the beginning, revert is your friend when everything goes wrong!

3. Make it work already!

Don’t go big bang approach! Build sometime small, simple (even stupid) and release, rinse and repeat.
Most people don’t take the time to automate parts of their development because they think: it’s just a small project. Bullshit! Because it’s a small project, you’ll be making lots of small changes fast. So you wanna make sure you can deploy in one step, test in one step and restart, stop, cleanup, backup, eat, sleep in one step.

In the case of a web application, deployment can be time consuming if your not used to it. The Internet is full of guides on how to do it. Make sure you deploy a small version before your project gets too much dependencies. If something fails, it will be harder to find out which of the 10 libs you depend on is bogus rather the just making a bare-bone app work. I would also recommend automating your deployment with tools such as Capistrano, Vlad or Paste deployment.

Now that we’re all labelled as fast workers I think blitzweekend should be shrunk to 2 hours.

Have you built an app in 2 days yourself? Share some tips with us! (but don’t tell our bosses)

6 Comments

Filed under montreal, rails, tips

6 responses to “Blitzweekend : Don’t do it!

  1. This post totally rocks! I had to mention it.

    Keep them coming.

    I’m sure it will be of great help to everyone who have ideas of projects but don’t know where to start nor when to stop.

  2. Thanks a lot Frank!

    You’re right, when to stop is the toughest.
    What was your experience w/ TimmyOnTime ?

    See you next week at democamp🙂

  3. With ToT, we could have decided to delay the release forever.

    – Oh yeah Data exporting is important… it’s a must. Let’s extend the release date.
    – We cannot launch until we add a data exporting component. Let’s code it and we’ll lauch after
    – Ahh but it would be cool if people could add tags to their projects/tasks! let’s push back the release date until we’re done with that.
    – and so on

    But we didn’t take this avenue. On the other hand, there is the danger of getting over-excited and to release the product too fast. With ToT, Dan was a little bit more on the “wait” side and I was more on the “release, now!” side. I think we were wise to listen to each other on this issue. I wanted to release the product while there was crucial aspects of the app that just weren’t there yet. At other times, I felt that Dan concentrated too much on everything being perfect before we launch. Overall I think we were pretty good at finding the middle ground.

  4. You seem to make a great team together!

    It’s hard to know which features will be important in fact. Also it’s not the same when it’s a personal project or your work. The worst thing that could happen w/ your personal project is that it’s not used.

    Thx for sharing this Frank!

  5. katniendorf

    Nice post. I also have the feeling that a project built in one weekend would have some serious holes. Maybe that’s okay, depending on what you need it to be, but inevitably you are going to have to finish, re-work, etc..

  6. Hi katniendorf,

    Almost all of my personnal projects were started in one weekend. Most didn’t had hole. I think it’s just a matter of setting the scope of your project correcly.

    I think a good weekend project would be fully working at the end of the 2 days but could get better over time.

    Did you build any weekend project yourself?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s