A few years ago, I changed my Twitter bio from Software Engineer to Software Shepherd for a number of reasons. I couldn't fit these reasons into a tweet so I wrote an entire blog post.


There are many different titles for very similar jobs and everyone has different ideas about which titles are more prestigious than others. Titles aren't standardized, so the same title could mean two different things at two different organizations. Here are some of the common titles I've seen in the wild:

  • Coder
  • Programmer
  • Developer
  • Engineer
  • Technologist

And those are just the nouns...slap a few adjectives in front and you get Senior Software Engineer, Full-Stack Developer, and even Principal Technologist.

Do these titles have different meanings? Sometimes. But often they're the same position. Do people people treat these titles differently? I think so. They probably even come with different salaries. But more than the money, some of these titles are better known outside of the industry.

Take for instance, meeting someone new. When you meet someone new, they typically ask two questions, "What's your name?" followed by "What do you do?" which really means "What's your job title so I can evaluate if you are interesting or wealthy enough to be worth talking to?"

I remember getting very different reactions when I could finally change my response from "I'm a cashier at BigCorp1" to "I'm a Software Engineer at BigCorp2". The former would usually stop the conversation or at least change the topic. The latter opened new social engagement and carried a higher status.

All that to say, I found that titles affected how I treated people and how others treated me. So I wanted to invent a title no one had ever heard before so it wouldn't have a good (or bad) connotation associated with it.


In my infinite creativity I came up with Shepherd, a word that doesn't hold the same connotation as Engineer. I admit, I was influenced by the term Software Gardener, a title that implies software starts as a seed that evolves and grows over time. This feels more like the software I've worked on.

Contrast Software Engineering with Civil Engineering where a bridge is engineered to remain steady, durable, constant, and basically "feature complete". Flexibility is designed into the structure itself so it can withstand changes around it, but the structure itself doesn't change.

Software Gardener is a clever title that captures this difference, but it implies a slow evolution over a long time. It doesn't capture the real-time chaos of Software. That's why I prefer Software Shepherd.

Software Shepherd implies a fast, autonomous livestock that might break if left unmaintained. Sheep without a shepherd can make poor decisions so there is an active role for the shepherd.

Why is software autonomous? Doesn't it only do what we tell it to do?

Well yes, but when you have many people working on the same code with slightly different intentions distributed in many different time zones, the code doesn't remain the same. It's constantly changing one day to the next. And not just code, but upstream services that your code relies on can change or go down causing unexpected behavior.

Shepherd is also a title that is not usually considered prestigious. Sometimes they don't even own the sheep, they're just hired hands. They might even live with the livestock. Shepherds sometimes work in groups to keep watch and guide the sheep. They work as a team towards a common goal.

Finally, Jesus calls himself the good shepherd, someone who lays down his life for his sheep. This is where my metaphor breaks down a bit, but the idea is that great leaders will set aside their own pride to help others.


I made a fun title to be unique and remind myself how to work together with others, making sure to capture the complexities of both software and people.