November 2011 Archives

Don't Forget to Optimize

| Comments

muscle_engine.jpg

Avoid premature optimization” is a popular and effective mantra. It’s a defense against the temptation to worry about speed and performance before you even have a working feature. Sadly, this often ends up interpreted as “forget about optimization”, and that’s a big honking mistake.

Speed matters. The magic number has changed over time, but the basic rule hasn’t: the longer a page takes to load, the less likely people are to use it.

Too often programmers quote The Mantra and then neglect to ever optimize. The idea is to avoid focusing on speed too soon, but not forever.

The best way to avoid forgetting about performance is to make it a feature. When building your backlog, pop in a story that goes like this:

As a user I want the homepage to load in under two seconds so I can quickly view the upcoming concert schedule

That way, everyone understands the value of speed, and it doesn’t get sacrificed for more easily visible features.

Image by Mike L Photo’s Attribution Some rights reserved

Tool Thrash

| Comments

tools.jpg

At work we’re looking for a new tool to manage workflow, tasks, and status. We haven’t been thrilled with our current system, but decided to live with it until it became to painful and/or costly to keep around.

I think living with the bad tool has been instrumental in learning what we want in a great system.

There’s always a strong temptation to discard something that pisses you off and try something new ASAP. When you do this, you learn what you hate, but very little about what you value. You might go through three or four tools before you get a handle on the core features that mean the most.

Living in pain, on the other hand, cultivates wisdom. You start learning why you can’t stand the lack of a quality workflow system, how important project setup is, and if you care about how fast it is.

With a list of grievances, there’s little room for “well, that’s just, like, your opinion, man”, and more experience-based decisions emerge naturally: “Remember how much you hate that tiny text field?”. It’s much clearer when a good choice presents itself.

Once you learn these things, you can pick your next (and hopefully last) tool. Fingers crossed.

AttributionNoncommercial Photo by Noel C. Hankamer ;Some rights reserved