December 28, 2008

Design Lessions from Manual Labor

I've learned several important design lessons from my work in various non-design jobs. See the full introduction, here.

Job: Carpenter

I spent ten years restoring Victorian houses with my dad, from building porches to shingling roofs to remodeling bathrooms and building additions.
1 - Measure twice, cut once
In game development, it's easy to think of tuning mistakes as being free and very easy to correct. When building a house, with real materials, cutting a sheet of drywall one foot too short means that you have to find a place cut it down further and try to reuse it, or if you've really messed up you'll have to throw it away entirely.

The consequences for game development mistakes may not be so obvious, but they're there, and many "insignificant" problems can add up to the cancellation of your game or the failure of your company. Just because your work may be easy to iterate on doesn't mean you shouldn't try to get it right the first time. Death by papercuts is the most painful way to go.
2 - Know what standards your work will be held to
Building codes are an essential aspect to construction that most people have never even heard of. There is an exhaustive set of rules for every type of building project, and official inspectors must be sent out to approve a structure at various stages of development.

It's very important to know the rules before you start building a house, or making a game. Your work may look and play great, but it could be causing performance problems on the server, or your UI element may not be legible on a standard definition TV. Your beautiful fire effect may be using up five times its allotted particle budget.

It's much easier to find out what the rules are and then follow them than it is to retrofit a structure or game to those rules after the fact. Sometimes you might even have to tear everything down and start from scratch.
3 - If you touched it last, you're responsible
Another interesting aspect of building codes is that the legal responsibility for any problem falls on the shoulders of the last builder to have touched the structure. If you're reshingling a house, and you find rotten wood in the roof, it becomes your responsibility to make sure that wood is replaced. If the roof collapses later, you'll be the one held legally responsible.

The same is true for building videogames. If you inherit some data or a feature from another person, and they didn't do a very good job on it, who do you think will be held responsible when the game gets bad reviews? The guy who no longer works at your company, or you, who slapped some fresh paint onto rotten wood and tried to pretend nothing was wrong?
4 - Do your work in the right order
I've painted a lot of rooms. When you're building the room from scratch, painting is the easiest thing in the world, because you can do it before you've put down flooring, light fixtures, wood trim, or anything else that you'd normally have to avoid getting paint on. You can just do a whole room in an hour with a roller, and the only thing that gets messy is you.

Painting a room that is already floored, trimmed, and furnished is incredibly hard and time consuming. Taping off trim, covering carpets and moving around furniture make the task take forever, and if you mess up you're going to be buying the homeowner some expensive new carpet.

There isn't always a choice which order you do your work in, because you'll often be asked to go back and touch up a room or game feature that's already existed for awhile. However, when you do have the chance to start from scratch, make sure you're doing things in the right order.

Job: Landscaper

When I was a kid I'd cut the lawn for my dad, relatives, and people in our neighborhood. The summer before college I did some actual landscaping; I dug holes for holes for planting trees or for burying wires and sprinkler systems.
5 - Take a moment to make a plan
Nobody pays the neighborhood kid by the hour to do grunt work. People usually just offer a number for the job, say 20 dollars to mow all their lawns. Because of this, I learned that the less I planned, the more time I took, which meant making less money. If I could save enough time on the first 4 lawns to fit in a 5th lawn, I could make 20% more money that day.

Whether you get paid by the hour or not, being as efficient as possible is always a good thing. You'll get more work done and have more time to take on new responsibilities beyond your own job, which is the best way to get a promotion.
6 - Cutting corners always has consequences
Losing 20 minutes to go put on sunscreen may seem like a big waste, but it's not nearly as bad as the 4 days you'll spend lying in bed with blisters. That was a painful and obvious consequence, but every shortcut has consequences of some kind, even if they're harder to see.

There are times when skimping on quality has to happen in games, but you're kidding yourself if you think there aren't consequences. Your team may evaluate the consequences and decide they are ok with them, but it's beyond naive to just assume that everything will be fine.

No comments: