The Opinionated Software Engineer

Note: I wrote this when my primary job was writing software. It still reflects my views, more or less.

Here at VU, we aim to hire opinionated software engineers.

This is not the Dark Side of being “opinionated” as you may expect. No, this is the Light Side and is about using your opinions for good.

Rather than spend time providing more context, I’m appealing to the engineer in me by jumping right into the details.

The opinionated software engineer…


…has a strong opinion about their tools

A software engineer who is indifferent to their tools is a bad software engineer.

As a software engineer, your tools consist of the languages, frameworks, services, hardware and software you use to do your job.

You have to care about your tools. It’s not optional.

If you don’t care, why not?

Do you not understand your tools well enough to have a strong opinion about them? Fix that by learning. Where do your tools excel? Where do they suck? What tools are they competing with and what’s it like to build software in them?

If you deeply understand the tools you use, then what else is keeping you from caring?

Do you not feel enough ownership of the code you and your team write to have a strong opinion about your tools? Fix that by getting clear on what drives you, owning your authority, and committing to yourself, your team, and the company (or client).

And if you have a strong negative opinion about the languages, frameworks and software you use, fight to get them changed. If that doesn’t work, find another job that uses the languages, frameworks, and software you love.

Life is too short to wield a hammer all day that’s as likely to drive the nail as it is to knock out your front teeth (metaphorically speaking).

With that out of the way, the opinionated software engineer…


…cares about their team

A software engineer who is indifferent to their team is not a software engineer you want on your team.

As a software engineer, your team consists of your fellow devs, your team lead, your QAs, and your product owners.

You depend on these people and they depend on you, so caring about your team is also not optional.

You must care about the quality of your team. It’s your job to help your team improve by learning, by teaching, and by acting as a defender of the quality of your team.

How do we defend our team’s quality here at VU? For one, we have a rigorous hiring process including interviews with leadership and team members as well as a live, extensive coding evaluation.

We actively work to improve this process to ensure that only the smartest, nicest, and most capable make it onto our teams.

Finally, a great opinionated software engineer…


…is open to being wrong

A software engineer who is unwilling to be wrong is a bad software engineer.

A software design shown to be flawed is a gift. It allows us to reevaluate and grow, as long as we can remove our ego and avoid taking it personally.

And we must never take anything personally. A design review is about the design. No one is there for your ego. Your team is there to produce quality software and, so, you must be.

What other qualities does an opinionated software engineer possess?