For the past 48 hours, my girlfriend and I have been traveling back and forth from the city to our new home about 15 minutes west in Oak Park, IL (home to some well known folks like architect Frank Lloyd Wright and author Ernest Hemingway — nerd points). In preparation for our move, we decided it would be best to paint the new place before we moved in so we could avoid shuffling furniture and the requisite domestic strife that would follow.
Starting early Saturday morning, we unraveled about 120 yards of ScotchBlue Painter’s Tape in what will soon be our new living room. To say the least: it was frustrating. The living room’s doorway’s are framed by wood, original from the building’s construction. In an effort to ease the building owner’s anxiety, we tediously covered every exposed edge that a brush or roller could bump into while we were working. The experience certainly wasn’t thrilling, but in the process it struck up an analogy.
Albeit agitating, laying down all of the tape had a point. That process would mean that we wouldn’t have to deal with the headache of scraping paint off the wood later, but it also saved us the back and forth with the septuagenarian that controlled our access to the building. In short: all of that work up front saved us a lot of trouble later.
In parallel with this is my own work. I’m a stickler for preparation and taking the requisite time up front to get all of my ducks in a row. Whether a new business process or a chunk of code, though irksome, taking your time in the early stages always saves you time and trouble later on. The reason it’s difficult to bake in this attitude toward preparation is that it feels like you’re screwing around.
I’ve worked on a handful of teams (as well as on projects by myself) where an eagerness to tackle the work led to skipping calisthenics. Much like an Olympic sprinter, failing to stretch before bolting down a 400m track can lead to serious injuries. Luckily (laughably?) design and development projects don’t see too many physical injuries. But they do, when poorly managed and organized, rack up a whole boatload of emotional weight in the form of stress and resentment.
A developer decides to fudge it on some code early on in favor of “shipping” sooner causing bottlenecks on feature development. A designer doesn’t finesse the details or leaves the polish off something a customer will use often leading to an overflowing support queue. Whatever is neglected and whoever is doing the neglecting, problems always arise.
“Can we add a profile photo feature to user accounts? Seems like it wouldn’t take us long.” In response, “No…the module for storing photos on S3 is a mess. It’s coupled pretty tightly to the image uploader for the news feed feature. Not to mention the interface isn’t very flexible, so we’d have to rope in design too. It will take us at least a week to get to it, after we fix the bugs from the latest framework updates.”
Three months later, the feature hasn’t shipped. Why? Messiness. Lack of preparation. Chasing the dragon of “shipping” instead of taking a few extra days or weeks up front to organize a proper structure. Many will fight this and chirp the Facebook siren song “move fast and break things” (which, ironically, was updated last year to be “Move Fast With Stable Infra”). Zuckerberg suggests the downside to Facebook’s rock and roll attitude of the past:
“What we realized over time is that it wasn’t helping us to move faster because we had to slow down to fix these bugs and it wasn’t improving our speed.”
Moving fast is sexy. Breaking stuff early on seems trivial. But the deeper you get into the cave, the more important it is to keep you and your team organized and your tools working properly. The canaries need to collapse on cue when the air is growing thin. The wiring for the lights needs to be solid to illuminate the pitch black. Shit needs to be in order, thought out, and flexible. Without these things, paint gets all over the walls. The wood is stained. You just sent a man enjoying his retirement into the retirement home.
The moral of the story? Don’t be careless. Take the time to do things correctly the first time. If that means you’re a few weeks behind the artificial deadline you set in a meeting: so be it. The time you feel like you’re wasting up front will make you look like a damn wizard later on. To echo Uncle Bob Martin:
“Whenever you rush, you make a mess.”
Take a deep breath and spend an extra hour laying down some masking tape. You won’t regret it.