Letting Perfect Get in the Way

I’ve been contemplating a phrase for a few days now. It applies to writing code, as I do for a living, as well as a whole host of other things… from relationships, to home life, life goals and endeavors… the list goes on.

Don’t let perfection stand in the way of progress.

I know what some people are immediately going to think when they read that. You’re asking me to settle for less than the best, Aaron? Let me say, emphatically, no. In fact, settling is the opposite of what I’m suggesting.

You may have heard of the Lean Startup concept of building a new business or product. I’ve talked about it before. The basic idea is you don’t wait to be feature perfect… you build, iterate, gather feedback, iterate on that feedback and continue the process. That philosophy hedges your bets around building something nobody wants by not waiting for the final, polished product before launching into the world. It relies on the concept that you don’t have to have something perfect in order to release into the wild.

Too often when making engineering decisions in a product, the risk is that you will want to make sure everything is perfect right now. Make sure the classes are all structured perfectly. Perfect object oriented methodologies are in place. Every edge case considered. An entire code-base unit tested.

All of these are extremely important, but they are also things that can be iterated on. Sometimes you can’t write code that relies on code you haven’t yet written yet! So you write shitty code that does the job in order to get ahead, and then return to that shitty code to refactor later.

Sometimes in your personal life, you may find yourself in a relationship that doesn’t have all the ideology of “The One” (Note: What the fuck does “The One” even mean?). That person is perfect in every way. They get your hearts. Understand your twitches. Empathize and support you through all your difficulties and struggles. Yet there’s just a couple things you just can’t stand. Do you give up and move on to the next, expecting next time that you’ll find perfection? Or do you buckle down and realize what you have is pretty damn good and it will be even better than that later on?

Do you let perfection get in the way of progress?

You shouldn’t. You should release, iterate, get feedback and release again. In code. In life.

If I Had to do it All Again

As I sit here tonight, at a bar, typing on the WordPress app (which will undoubtedly make my fingers cramp typing long form), I’m thinking about my life. What has made me a man, a developer, a friend, and lover (I can even get in Oxford commas on the app!)

In exactly five hundred and fifty six days, I will be 40. FORTY!

I don’t look like an old man.

I don’t (usually) feel like an old man.

I don’t even behave like an old man.

Note: what follows may sound like I’m saying “Get off my lawn!”

Where were we? Oh yes, FORTY.

I just finished my first week on a new job. I’ve been doing WordPress stuff since 2004. I was learning PHP in 2000. I was developing coding chops in 1987 on an Apple IIc!

I’ve been married. Divorced. Had a kid. Owned a house. Chased the rabbit hole that is the American Dream™.

I’ve loved and I’ve lost. I’ve had dear friends pass away from cancer and heart attacks. I’ve watched national tragedy and personal tragedy, and even suffered my own.

My perspective has evolved. Sometimes willingly, sometimes not.

Take weekends and evenings. You may be single. You may not be. It doesn’t matter. Don’t work at all hours of the day and night. You’ll be less productive, because you’ll be less rested. You’ll also be better socially adjusted.

Get up early. Don’t sleep in until 11am. Your body wasn’t meant to do this. Don’t force it to. It will rebel. Related to this, and the last point, get to bed before midnight.

The man who cooks is the man who gets the woman. I’m happily involved, but my girlfriend and I both love to cook. And you know what? It got me ahead when I was single. No woman wants your idea for dinner at your place to be frozen dinners or delivery (there’s a time and place for delivery!).

Find passion that you aren’t aware of. Later in my adult life, I bought a camera and started learning how to shoot… How to visualize and see a photo. Do something, try something. Get outside your comfort zone and challenge yourself. Volunteer!

Always learn. When I started on WordPress, I was hungry. I was curious. I started learning the ins and outs. I admit that in more recent years, I’ve allowed myself to get comfortable. I’m working on some other interesting things that will stretch me even more. If you’re in tech, you have no choice but to move forward. If you don’t learn, you’ll be left behind.

Don’t take the world literally. Seriously, stop. I’m looking at you, political nerds. Stop parsing everything that politicians do. They do it because it’s politics and all the crazy is a vast, orchestrated act to get you worked up and supply them with power. Live your life. Change what you can and accept what you can’t.

Read. Everything. I’m not a book guy, but if you are, have at them. Spend less time on Facebook and Reddit and more time on sites with content that is written at a college level with an informed, intellectual audience. Read The Atlantic, Ars Technica and the huge variety of other excellent sources. Stretch your intellect.

You’re not right. At least some of the time. Give grace to others, even if you “know” you’re right.

That’s it! Or at least all I can think of after 14h of work and several beers. My hands aren’t even cramped!

Update: The dress is white and gold, you morons.

Perceptions

A friend of mine (in real life!) recently made a late night trip to a local diner to grab a bite to eat. He felt like ordering an omelette, but wasn’t sure which kind of omelette. As he looked at the menu, he noticed a Spanish Omelette and a Spinach Omelette. Unsure what was in the Spanish Omelette, he asked the waitress who described it in great detail. It included tomato, onions, green peppers. The works. Not feeling like onions at that late hour, he instead ordered a Spinach omelette.

When the waitress brought out a Spanish omelette, he was confused. Turns out, the waitress assumed he was going to order a Spanish omelette after he asked her, so when he ordered the Spinach omelette instead, it didn’t register in her mind.

Yesterday, I took the family for a Sunday afternoon dinner where my four year old boy bided his time by coloring on the placemat. His drawing is below.

SCAN0022.jpg

I looked at his drawings and asked what they were. He told me about a dinosaur, a rocket ship and a yellow jacket (which is apparently different than a bee!). I noticed that his drawing of a bee had a very long stinger (can you spot the bee in the picture?). I thought about how small the stinger on a bee actually is, but how the perception of that small but potentially deadly apparatus can be – especially in the mind of a little guy.

Kids like to exaggerate everything, and you can tell in their crayon drawn pictures. Daddy is bigger than a house. Dinosaurs have massive teeth bigger than their face. Bees Yellowjackets have stingers longer than their bodies.

Funny how perceptions of reality are often different than reality itself.

As bloggers, we tend to make a bigger deal out of things than we have to. Funny how perceptions are like that. Funny how my perception of a bee is much different than the perception of my little boy.

Chances are, if you breathe and have a pulse, that things seem wrong somewhere. Mortgages are hard to pay. Gas prices are nuts. The A-list exists. Seesmic arguments. Blog arguments. Do I own my comments or not? Copyright, trademark, content scrapers. Conservatives. Liberals. Presidential Candidates. Videos on the web. iPhones and priorities. Blackberries and productivity.

Get some perspective folks. I’m just saying.