On Having Opinions

After applying for my first software engineer role, I recieved some unexpected feedback. The hiring manager called me and said that one of the main critiques the interview team had for me was that I was not “opinionated enough”. At first I was confused, and even offeded by this. Even my current manager thought that was a strange reason to not hire someone.

In hindsight, I agree with that feedback and they were right. Since then, my views on opinions have changed. Here’s why.

I thought I was above all those other developers who were overly opinionated about things and argued online about trivial and petty things. If most popular programming languages and frameworks essentially do the same things, who can say that one is measurably better than the other? They’re popular for a reason, so if you don’t like one, it’s probably just because it’s different from what you’re used to.

I thought I was being wise beyond my years to see that. 🙄

Since then, my views on this have changed, and I have had to work to develop opinions of my own. Now, that being said, you can certainly go too far with opinions, and bikeshedding about trivial issues is no good, but it’s still important to have a guiding philosophy when it comes to development.

So without further ado, here are my three reasons why it’s important to have strong opinions as a developer:

  1. Opinions indicate experience.
  2. Competing opinions drive innovation.
  3. There are wrong (or at least less good) opinions.

Opinions Indicate Experience

Opinions naturally come with time as you gain experinece. This is what the interview team was looking for. They weren’t looking that I would have the right opinions or share their opinions, they just wanted to make sure I had opinions.

I was too afraid about having the wrong opinions that I would try to weasel my way out of any questions about choosing one approach over another. I said things like “it’s ultimately just a preference whether you choose this framework or another” or “these lines of code do the same thing, so it doesn’t really matter which way you go as long as you are consistant”.

What these stements really revealed was that I didn’t have enough experience at the time to determine which way I would prefer to do it. Again, I don’t think it’s always important that engineers agree about opions, but it’s important to have them because it shows you’ve been programming long enough to have developed that personal preference. It’s a natural thing that happens over time as you have to make decisions and choose between tradeoffs and experience multiple competing ways of doing things.

So when the interview team saw that I wouldn’t commit to my answers, they rightly saw that I just needed more time and “seasoning” as a developer.

Competing Opinions Drive Innovation

Time and experince lead to having opinions, but still, anyone can have opinions. I think there is more to it than that. Opinions also indicate that you understand the “why” of a given problem.

For example there are any number of factors that could drive a certain decision. Could be buisness driven. For example, many non-technical companies choose Angular for their framework because it’s already an opinionated framework and it reduces the amount of decisions they have to make. In making this decision they are sacrificing developer autonomy and inovation in order to have lower mainanence costs for their software.

So, as a developer, I have to ask myself, do I want to work at a company where the individual decisions a developer can make are limited by the framework? It says more about the company and the organizational priorities than it does about the framework itself.

Or would I rather have more choices as a developer?

More choices, can be harder, yes. But it also opens the door to a lot of innovations and competition. There are so many open source React libraries it can be overwhelming. But the reason people continue to make new javascript libraries and frameworks is because developers see room for improvements and actively work to make something better. Over time, the better solutions win out or encouraging the existing solutions to change and improve.

So one guiding principle I’ve adopted is that competition is a good thing.

Yes, Angular is fine. It gets the job done. But it’s not going to make things better or drive innovation.

I can see why a company may go with a more stable, boring option. Boring business decisions are often good business decisions. But I’ve decided that’s not where I want to invest my time and skills. I would rather wrestle with the choices. I want to keep up with the latest and greatest open source projects. It doesn’t mean I’m going to use every new things in production, but it does help me stay informed about the different choices that are out there.

There Are Wrong (Or At Least Less Good) Opinions

Okay this one could be a little philosophical, but in a world where we tend to believe that everyone is entitled to their own beliefs we have to remember that at the end of the day its possible to make the wrong choice.

It takes time and experience for developers to develop some opinions. But those opinions are fragile. They can easily be swayed one way or another. That’s why it’s important to constantly challenge those opinions to see which ones win out. (See point number two). Once you have put different ideas head-to-head in the real world, you will be able to see that one option may actually be better than another.

Now, this isn’t the case for everything. There is still a place for personal preference. And different solutions work better for different situations. I think we all have to understand that equally well.

But I think it’s also okay to acknowledge that some things in life are objectively better than others.

The challenge is that many people are very loud about their wrong opinions. These people can even be well-known, successful, and influencial. If you are newer as a developer it’s hard to know who to listen to. It takes a more seasoned, experienced developer to be able to look at someone like that and disagree.

I’ll admit, I’m not fully there yet, but I’d like to be.