What do software engineers even do?

This entry comes from this common sentiment that I get pretty often: people outside of tech don’t know what software engineers actually do. It’s too often that I get this sentiment and I really don’t know how to answer. Maybe I’ll say something like “I write code”, “I deliver shareholder value”, or even that “I create features”. None of this means anything to someone outside of tech. It’s not that it’s beyond most folks’ understanding, but instead, frankly, these descriptions are boring. The way that software is built isn’t linked to anything in the real world, so it’s hard to listen to.

I think that a software engineer’s job is to work with people to get things done in an efficient manner. What sets this apart from other jobs is that “things” is usually intangible, and “efficient” means different things at different times to different involved parties.

There’s probably a contrived analogy to be made. Something like working for a company that builds bridges, and the bridges are all different shapes and sizes, and everyone’s working on different bridges and sometimes the same bridges. And sometimes one team will build a tool to help them build a certain type of bridge more easily, and another team sees that tool and wants to borrow it, but now they’re both in charge of making sure it doesn’t fall apart. As dozens and hundreds of bridges are made, they all need to be maintained, and they can all fall apart at any time, and some of the bridges are built on top of other bridges.

The main challenge after a certain point isn’t actually building the bridges, or maintaining them, or fixing them when they fail. After all, the company must’ve gotten pretty good at working with bridges after a few thousand of them have been built.

Instead, the main challenge becomes making sure that the several, dozens, hundreds, or thousands of engineers working on all these bridges are able to do so efficiently. Which bridge needs to be built next? Which bridge is holding up all the others and is about to collapse? Which bridge just broke and who do we need to bring in to help fix it? How do we build the next big bridge by the deadline?

In the end, the company’s goal is to just make customers happy by giving them the ability to use these bridges to cross whatever gap they come across.

I think what’s missing from my discussions with family and friends about what I do is just the enormous amount of communication and coordination, and yet that’s probably the most relatable thing and most commonplace thing about my job.

An engineer’s value comes from their ability to work with people

Knowing how to work well with people is key to being a good software engineer. Software engineering doesn’t occur in a vacuum. Someone can be more technically skilled than someone else at something, but that skill difference doesn’t matter as much if things like deadlines, external dependencies, blockers and such, can’t be worked through.