XKCDs I send a lot

Brian Olson
CodeX
Published in
5 min readApr 2, 2022

--

Disclaimer: All opinions are my own

Disclaimer: See the XKCD license here

Image credit: xkcd.com

If you don’t regularly read XKCD you’re missing out. It’s a webcomic about technology, science, and general nerdery.

It’s mostly humor, but it also has nuggets of useful wisdom represented in light-hearted visual form. There are a handful of XKCDs I wind up sending frequently (once a month might be a slight exaggeration) and I figured I’d share my top ones and the principles they help communicate.

Git

https://xkcd.com/1597/

When you’re first getting started as a software engineer the idea of version control is pretty foreign. In code, you have to track every change to every character to be able to explain any problems and dynamics of the code base you’re working on. That’s not something you have to do for the rest of your life.

I regularly have an exchange with new software engineers that goes something like

New engineer: I….my repo is….well I think I messed it up

Me: Let’s take a look…..oh my.

New engineer: What…..what do I do? How did it get this way?

We spend some time working through the problems and then I send them this comic to tell them that

  • Git is hard and you shouldn’t feel bad for finding it confusing
  • You do get used to the patterns and how to use them after a while

Also from the alt text, my git expert’s name is Rob.

Dependency

https://xkcd.com/2347/

A few months ago this XKCD got a lot of views because it was referenced in the commit that fixed a major vulnerability in Log4j, but it’s relevant for other less dire situations too.

If you’re new to software engineering you may not be familiar yet, but all software depends on other software that depends on other software. It’s a mind-bending chain of requirements. Literally, no engineer is aware of all of the dependencies used by a piece of software of any complexity.

And a shocking (I truly mean shocking) amount of that software is open source and maintained by engineers who don’t get paid and rarely get thanked.

This XKCD highlights

  • Don’t get arrogant, realize you don’t know all of your dependencies
  • If you’re using open-source software for free don’t be too hard on the volunteers maintaining it
  • All software is at least a little fragile

Is it worth the time?

https://xkcd.com/1205/

This one is just practical. As engineers, we want to automate everything, but it isn’t always worth it. Sometimes it really is better to leave a process manual rather than trying to make it super cool and automatic.

If you’re ever wondering if it’s a good idea to automate something glance at this one quickly to get an idea of if it’s worth trying or not.

Communicating poorly

https://xkcd.com/169/

This one requires a little caution, but it’s incredibly relevant. Engineers talk about complicated things and some engineers get the mistaken impression that talking over other people’s heads makes them sound smarter and will get them paid more.

I can’t say I’ve ever sent this one to an individual who was actually communicating poorly because it would typically just make them more frustrated than anything else. But it is a little cathartic to pull up and read after someone has treated you this way.

Machine learning

https://xkcd.com/1838/

I believe most fields have the “buzzword” problem, but technology has to be one of the worst offenders of overused buzzwords. Some of the best ones

  • DevOps
  • Microservices
  • Machine learning
  • Big data
  • CICD

If you work in any kind of data science, machine learning, or AI oriented role you’ll undoubtedly encounter people making broad assumptions about how data and machine learning interact.

Use this a little cautiously too — you don’t want to belittle anyone and their knowledge, but once you’ve built up rapport and respect with the individual this can help add some humor to misunderstandings about how data works.

Connoisseur

https://xkcd.com/915/

For whatever reason Engineers develop very strong opinions about very minor things.

  • Tabs vs spaces
  • vim vs emacs
  • Dynamic vs strongly typed
  • Mac vs Windows
  • iOS vs Android
  • Curly braces on the same line like method() {} vs the first curly brace on the next line

If ever someone is taking a specific issue too seriously it can be helpful to remind them that you can develop in-depth opinions about nearly anything, including a photo series of Joe Biden eating a sandwich.

Abstraction

https://xkcd.com/676/

If ever you get bored as a software engineer and tired of what you’re doing pause yourself and read this comic.

What we do is pretty incredible and a lot of borderline magical things have to work together to make it happen.

Thanks for reading! If you like my content please consider supporting me by subscribing to medium through this link: https://devblabs.medium.com/membership

--

--

Brian Olson
CodeX

Engineer, formerly at Amazon, currently at Google. All opinions are my own. Consider supporting here: https://devblabs.medium.com/membership