Use these analogies to explain to your friends and coworkers just what it is you do all day. Also check out the meme version of this post.

Writing Code

Writing code is like putting windshield wipers on your car, only if you fail to install them in just 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.

Refactoring code is like sweeping the floor: only when all the debris is gone can you be sure you did a good job.

Getting your code reviewed is like getting a root canal: it's painful while its happening, but after taking some time and pain medication you'll feel much better and be glad you did it.

Debugging

Debugging is like being lost in the desert: much of the time you'll see a fix in front of you, but nine times out of ten it's only a mirage.

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.

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.

Testing

Writing tests is like 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.

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?".

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.

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..."

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.

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.

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.

Employers

Working for startups is like being a newborn sea turtle: 99% of the time something will eat you before you reach maturity.

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: 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, funny, or both? Share in the comments!

Happy Coding!