Use these handy memes to explain to your friends and coworkers just what it is you do all day. Here's the text-only version of this post.

Writing Code

Writing code is like putting windshield wipers on your car, except that if you fail to install them in the right order the engine falls out.

Writing code is like working in a robot factory, only sometimes the entire line stops because one robot has to tell you about the size, shape, and color of an out-place bolt, all while holding a severed finger.
Image is modified from KUKA Industrial Robots IR.jpg, and used under license.

Refactoring code is like sweeping the floor: only when all the debris is gone can you be sure you did a good job
Image is modified from Hair pile dust pan broom hair salon, used under license

Getting your code reviewed is like getting a root canal: it sucks while it's happening, but after taking some time and some pain medication you'll be glad you did it.
Image is modified from HI I'M GETTING A ROOT CANAL (which is clearly the best name ever) and is used under license.

Debugging

Debugging code is like getting lost in the desert: you'll see the fix right in front of you, but 99% of the time it's only a mirage.
Image is modified from Desert mirage, used under license.

Debugging your own code is like having a mental illness.  You spend a lot of time talking to yourself about a problem that only exists in your head, and nobody believes you when you tell them about it.

Debugging someone else's code is like trying to solve a puzzle: eventually you're be trying to fit the last piece in place but can't until you realize that you've been holding it upside down the entire time.
Image is modified from Puzzle black white missing, used under license.

Paying down technical debt is like flossing: it's easy to ignore, but if you don't do it you will eventually have to seek a professional's help.
Image is modified from Oral hygiene, used under license.

Testing

Writing tests is like having sex: the more you do it, the better you get at it and the better it feels.

Testing your own code is like eating healthy: you know you should do it, but it's very easy to keep putting it off until it's painful to start and you have to get a trainer to help you.
Image is modified from Colorfull, used under license.

Testing someone else's code is like trying to flatten a car with a sledgehammer: you smash the obvious weak points first, and then hit it repeatedly until something breaks.  More experience will tell you where other, less obvious weak points probably are, and you can smash the car faster each time.

Tech Support

Getting asked to fix someone else's computer is like being an elite race car driver who gets asked to fix his car's transmission simply because "hey, you know cars, right?"
Image is modified from BuschSeriesFieldAtTexasApril2007 and used under license, conforming to that license's terms.

Actually FIXING someone else's computer is like being a magician: no matter how simple the trick is, the other person will be amazed, simply because you know something they don't.
Image is modified from Zan Zig performing with rabbit and roses, magician poster, 1899-2, and used under license

Planning

Attending a planning meeting is like trying to play a team sport where nobody agrees on what the rules are.

Starting a new project is like being an artist; your client tells you "I don't know what I want, I'll know it when I see it, but it has to be done in five days and for less than $100."  And then when you, against all odds, manage to do this, she'll tell you "Eh, it's not really what I was looking for..."
Image is modified from Josh Rosenthal artist actor, used under license and conforming to that license's terms.

Designing a software application is like designing a boat: you spend countless hours locating the ideal materials and testing the engine to the customer's exact specifications, only when you're done the customer tells you, "Great job, we love it, just one little thing: we need it to fly."

Personalities

Working solo on a non-technical team is like baking a cake: you mix all the ingredients together, throw it in the oven and hope it comes out right.  If it doesn't, you can use sugar to cover up the bad parts; it's not like anyone will know the difference anyway.
Image has been modified from 1-2-3-4 cake and used under license

Being a cowboy developer is like being a house cat: you're fast and unpredictable and nobody knows what you're up to until they hear the racket you've caused.
Image modified from Large Siamese cat tosses a mouse, used under license and conforming to that license's terms.

Being a blogger is like being a street preacher: you're constantly shouting to the rooftops about your ideas and thoughts, but the only people who listen either loathe you, adore you, or stumbled across you by accident.

Work Environment

Working for startups is like being a baby sea turtle: 99% of the time something will eat you before you reach maturity.
Image modified from a source found on Flickr and used under license.

Working for big corporations is like being a professional cyclist in an uphill race: it takes a lot of effort to get anything done, the road is terribly maintained, you weren't given adequate supplies, and when you've finally reached the top your sponsors (having already flown there in a helicopter) wonder aloud what took you so long?

Working for yourself is like going fishing but forgetting to bring food: you get to do everything at your own pace and in your own time, but you'd better land a big one or you'll be starving tonight.

Did I miss any analogies that you've found useful, or did you find a better image for one of the analogies above? Let me know! Share in the comments!

Happy Coding!