This is a side note that I carved out of Agronomic Software Development. I’m a stream-of-consciousness writer, and this… ended up being a slightly longer stream. It was cut from the portion about software factories.

What is a software engineer, anyway?

I’ve been trying to remember where exactly I read this sentiment about how ridiculous software engineering hiring is[^1], but it has stuck in my head for years:

QUOTE

The technical interview for a junior software engineering position is like being asked to prepare a Michelin star meal for your interview at Chipotle

At a large company, a junior engineering position truly is line-worker style. The general process is:

  1. You get a ticket to fix a bug
  2. You investigate the bug; you write a fix
  3. You submit a pull request
  4. You get a ticket to fix a bug…

Don’t get me wrong: I’m not trying to understate how much intellectual work can go into charting a path between the problem and the solution. I’m also not here to claim that it’s easy, especially when you don’t have an effective manager to simplify that “get a ticket” bit. Being a junior engineer without an effective manager is like being expected to roll a burrito for a customer while the kitchen is burning behind you, none of the kitchenware is clean, the card reader isn’t working, and the customer is telling you that they never would’ve had to deal with this mediocrity when they were VP of Vice Presidents at Metabook in the 2010s.

What I am claiming, though, is that the factory-style ticket assembly line is hardly an act of intellectual or creative expression. It isn’t the brooding dorm-room hacking of The Social Network or the rag-tag star coder faux-prestige of Silicon Valley. It’s not a work of art or a stroke of genius; it’s a ping at 4:45pm on a Thursday:

Hey, could you take another look at my PR? I changed those variable names, so I need a new review.

That burrito analog isn’t necessarily the case, though. I’ve only worked at a couple of those factory line-style positions in my life; the rest of them have been at companies that are just a little bit too small that are a little bit on fire all of the time. Those are the types of jobs where everything that comes at you down the pipeline is the highest possible priority, so you get to choose which dumpster fire looks like the most fun that day, and nobody above you will look too closely at how you did it because they’re focused on the other dumpsters on fire in front of them.

They come with a tradeoff — at the burrito job, there’s clean metrics that show how much work you’ve done, and whether you’ve earned your lot that month. At the dumpster fire job, after awhile, you can either stretch yourself too thin trying to put out too many fires or let the fires burn; either way, that little bit of freedom comes at a cost to either your job security or satisfaction.

Either way, as a junior engineer, you’re in a position where you’d like security, satisfaction, and sanity, and all three seem out of reach.