Stand Out and Dare to Disagree

16 May 2024 · 4,519 views · Updated 19 May 2024

As someone who’s been in the tech industry for more than 15 years, I’ve come to recognize a fundamental truth about being a software dev: the key to failure is trying to please everybody. Most of the engineers that I’ve met are risk-averse and tend to be agreeable rather than firm in their beliefs. This is good if your goal is to climb the ladder by being the yes-man to your managers.

But this is not really sustainable for long-term success and won’t make you a great developer, it will just make you a tool.

The fear of polarization is pervasive. It stems from a natural desire to be liked by everyone. This fear, however, leads many to settle for mediocrity. It allows you to avoid any form of criticism — you sacrifice uniqueness and your ability to stand out by being average. If you have no opinions, you can be whatever people expect you to be, except great.

✅ If you won’t speak up and state confidently which development path is better, there won’t be people with opposing views. There will be no conflict, no criticism, and everyone will be pleased.

To be great, you need to be polarizing. Just by being a developer who thinks that functional programming language is superior, you’re already polarizing all of those who think object-oriented programming is the way to go. Have opinions, say those opinions out loud.

Of course those opinions need to be fact-based, and reasonable. Just saying something stupid is not going to propel your career forward.

Update 16 May, after a great comment from Mr.Johz on Reddit:

I appreciate the perspectives and debates that arise from this discussion. Before even posting this I knew it would be controversial. It's important to clarify that while this article states you should be polarizing, the ultimate goal is not polarization for its own sake.

The true value lies in experienced developers accumulating opinions and being confident enough in expressing them. I agree that, good leaders, and skilled developers, don't chase controversy, for the controversy sake. Instead, they build their opinions on practical experience, which may naturally lead to views that are outside the mainstream, which can lead to controversy.

The intention should always be to foster a discussion, not to create unnecessary controversy.

The best developers are those who can present their unique perspectives in ways that inspire and persuade, rather than antagonize.

As we discuss polarization in the next sections, let's remember that our primary aim is thoughtful, effective decision-making that moves our projects—and our teams—forward.

You will fail without polarization:

  1. You will fail if you develop a product that tries to appeal to too many users. You need to make decisions that will alienate SOME of the users.
  2. You will fail as a software engineer if you don’t accumulate opinions of the years that make you exceptional. Some of those opinions will alienate others.
  3. You will fail as a leader if you allow your culture to be everything at once without opinionated rules that embrace the culture that you need. You need to build a culture that suits your business.

By default, being great means that there are people who consider you great. But we should not forget that it equally means there will be people who consider you wrong.

Being great means being controversial. Everyone who has ever been great was controversial. Even if we take such people as Linus Torvalds, Steve Wozniak, or Steve Jobs, there are people who will feverishly defend them and those who will feverishly deny them.

Being polarizing can alienate some, but it also has the power to engage others very, very deeply. This is where the 1,000 true fans concept comes in — those who love you for what you do and are passionate advocates of yours. These fans are polarized, loving followers who will support your product/books/concepts/views through its ups and downs because it resonates deeply with them. They will recommend you as the expert to their friends because they see the expertise that you present and your views match theirs.

There are billions of people on the earth, you won’t meet most of them, you don't even care about most of them. But you can be vocal enough that you gather 1’000 true fans around yourself that will carry you through life — references, mentorships, gigs, work, discussions, recommendations. You don’t need all the billions of people in your life, you need a very small subset, the ones who resonate with you the most. And you find those who resonate by being polarizing — stating your opinions and being vocal about what you represent.

Many of you, especially those new to the field, might fear stating your opinions openly. For example, I think Javascript is the worst language, period. Some of you will think, “ah, not again, Vadim knows nothing about programming, it’s the most popular language on the web”. I will also tell you that I think we should hold software developers accountable for downtime. And bam, some of you immediately closed the article.

You’re afraid of turning away all the people who think otherwise.

Yet, this is a natural part of becoming someone of value. Being polarizing is not only inevitable but also beneficial. It's not the best side effect of accumulating years of experience, but it's definitely a good one. As you become more senior, you form opinions and beliefs. Rigid ways of working that make you, and only you, efficient and good.

For example, some developers scream, “SCRUM is the only way to develop software,” and others scream, “WATERFALL is the only way to go.” There’s a massive discussion between these groups, and neither group has come to any conclusion. However, those who discuss are already in the minority and are not afraid of voicing their opinion.

However, the alternative — people who don’t have any opinions, who no one dislikes but also no one loves — leads only to obscurity, mediocrity. You attract those who share your values and vision by daring to express strong, clear, valuable opinions.

Remember that your goal isn't to be someone everyone likes but someone that the right people love. It's about being “that guy, for that thing” — a highly specialized expert rather than just another developer in the crowd.

Examples

Let's look at some examples within our developer community. Consider the developers behind tools like Vim and Emacs. These text editors have passionate followings because they offer distinct, highly different experiences. They were built with specific opinions of their authors that went against the standard tooling. Their users often swear by them, defending their choice. This isn't because these tools are good, per se, but because they serve their specific, comparably small user base exceptionally well.

Another example is Linux. It stands out because it isn't for everyone. It targets users who want deep control over their computing environments. Linux has survived and thrived by polarizing the tech world into those who want customization at the expense of ease and those who prefer a more controlled, straightforward experience offered by Windows/Mac.

Develop the software how YOU see fit, with your unique opinionated view

The key takeaway is simple: it’s better to be indispensable to a few than just another option for many. When you polarize, you stand out. You become memorable. That’s far more valuable than indifference. Aim to be the go-to person for your particular expertise or product niche. This doesn’t mean ignoring constructive criticism or shunning potential growth into broader markets, but it does mean starting with a robust and opinionated foundation.

Dealing with criticism

Every time you share something openly — you’re going to have some percentage of people who resonate with what you say, but also some people who bring criticism and backlash. This can be tough, especially when you've poured your heart into a project/idea/vision/concept or whatever. However, handling criticism well can be one of the skills that you cultivate as a software developer.

Here’s how you can do it without compromising your values.

Firstly, learn to differentiate between noise and constructive criticism. Noise can be ignored — it’s often just people venting their own frustrations and biases. Some will be angry just to be angry, especially if you go to places like Reddit or Hacker News. There are a lot of smart people there, but there are also a lot of angry people.

Constructive criticism, however, is gold. When you receive negative feedback, take a step back and assess it objectively. Ask yourself: Is there a recurring theme in the feedback? Are the issues pointed out ones that you’ve maybe overlooked? I’m not talking about changing your views at the first sign of resistance but about being responsive to genuine concerns.

✅ Some of your opinions will be wrong. You might learn down the road that what you were stating 15 years ago is no longer what resonates with you. That’s fine. Nobody is saying you should hold your opinions even if you no longer think so.

Each piece of feedback that you get is a chance to refine and iterate on your ideas. Remember, the most beloved developers often dared to bring their opinions into the world, faced criticism head-on, and evolved because of it. Vim survives 30 years later, even though to this day, people don’t know how to exit it. The most viewed question on Stackoverflow is about how to exit Vim. Interesting, right?

Make bold decisions consciously. Brace yourself for backlash, but also prepare to be supported by those who share your vision. Over time, you will grow accustomed to it and learn to differentiate hate comments from authentic discussions.

Here’s a TL;DR for those that are eager to stand out:

  1. State your opinion, and be authentic with what you hate and love.
  2. Respond to criticism and refine your ideas based on genuine feedback.
  3. Accept the backlash and ignore the hate.
  4. Celebrate with those with whom your ideas resonate with.
  5. GOTO 1

Here's what I suggest: Embrace differing opinions. When someone challenges your idea, it's an opportunity to defend it, refine it, or even rethink it — not to dilute it.

Let’s not be the developers who faded into the background because we were too afraid to say that Javascript is bad.

I encourage you to be bold, curious, and, above all, vocal. The world needs your unique perspective, so never hesitate to express it. Even if people in the comments will tell you otherwise.

So, what do you think?


Other Newsletter Issues:

  • Andrew

    Well-articulated article.

    After 15 years of experience, I’ve found that having a detailed “brag document” (as described by Julia Evans) is incredibly useful for showcasing your value during discussions.

    Without such a document, communicating with non-technical managers can be challenging. In these situations, the “yes-man” approach often wins, typically from less experienced software engineers who don’t want to or don’t bother to learn the nuances and details of technology. Because of that, they often don’t have any strong opinions.

  • safetytrick

    > The intention should always be to foster a discussion, not to create unnecessary controversy.

    Discussion isn’t an end. The point should be to develop understanding. That probably involves discussion but discussion itself is pointless unless it leads to an understanding.

    I use vi, I have some passing interest in emacs, not because I think emacs will be better or that vi is superior. They are both just tools, I imagine that if I were to spend the time learning the emacs way I would learn a new strategy.

    1. Vadim Kravcenko

      You are right yes, but discussion leads to understanding and to some conclusion in the end.

  • Peshmerge

    Thanks for your writing and sharing.

    This is refreshing, and it’s a gentle reminder to stand out, especially for people like me who suffer from Imposter syndrome.

    And Btw, I like your non-ordinary looking WP theme 🙂

  • Kurt Guntheroth

    Managers *need* opinionated developers. They put up with them. But what they *reward^ is developers who put their heads down and turn out a reliable so-many-lines of code a month forever with no interaction required. The perfect employee would live in a box. The manager would slide an assignment under the door in January, and the finished article would appear in a slot in the door on schedule in June. When layoff time comes, the ones who don’t get laid off are the easy-to-manage ones.

    As a high-performance, opinionated developer, I came up with the nifty designs, I got the patents, I got the critical roles. But I also get laid off every time there was a business downturn. Having opinions is career-limiting.

  • SWILLE

    Yes, agreed. Definitely want opinionated people who can share and discuss their ideas over folks who go-along-to-get-along. The key is to be able to civilly discuss the merits, and not get bothered if passions flare. Let the merits fly and the best idea wins!

  • Bernard P Wlodarski

    here is my bold vocal perspective . it seems to me to be “that guy, for that thing” it is sufficient and necessary to be knowledgeable and logical . a mere “opinion” may be a declaration of ignorance . being controversial alone can hardly be a key to success . ask any flat Earther .
    https://mypaltrythoughts.blogspot.com/

    1. Vadim Kravcenko

      Even being a flat earther, they became vocal thay have found their group.

      We’re not part of their circle and we don’t want to be, but they don’t want us to be as well.

      I agree with being knowledgeable and logical, but that’s not always the case, there are many groups that have their own views of the world, we just don’t care about them, and they don’t care about us.

  • Anonymous

    bullshit articles like that are funny…

    you know why?

    people are too meek nowadays they think things like that are something revolutionary..

    while normal humans are comfortable to disagree and have different opinions

    but now..in this modern age with ** sub-** it’s considered an act of greatness to disagree, lol

    1. Vadim Kravcenko

      Oh I’m gonna leave your comment, just remove all the vulgar stuff. A good example of a person filled with hate.

  • Jeff

    This is gold! Thanks for posting.

    1. Jeff

      And yes, JavaScript IS the worst programming language.

    2. Joe B.

      Hey Jeff and Vadim, another dev here who despises JavaScript! Glad to be part of the “group”.

    3. Rem

      For me it’s Python