DEV Community

Cover image for Being average in > 1 things is easier and more valuable than being excellent at 1 thing.

Posted on

Being average in > 1 things is easier and more valuable than being excellent at 1 thing.

Note - This guideline is most useful for the bottom 99% of the practising software engineers. So if you are part of the remaining 1% - you can safely skip the this post.

There is a surprisingly easy hack that you can apply to increase your value generally in life. Pick up more skills. It sounds obvious when put on paper but there is one subtlety which makes it a “hack” in my opinion.

For this point we turn to the excellent Scott Adams’ book - “How to fail at almost everything and still win big”. Speaking about being successful, he says -

“… I tell them there’s a formula for it. You can manipulate your odds of success by how you choose to fill out the variables in the formula. The formula, roughly speaking, is that every skill you acquire doubles your odds of success.”

He goes on to mention that the level of proficiency for a skill is not mentioned because -

“… you can raise your market value by being merely good - not extraordinary - at more than one skill.”

“To put the success formula into its simplest form: Good + Good > Excellent

This subtlety makes it very easy to execute. You don’t need to be extraordinary, you just have to be ordinary/average. Hence, if you are an average software engineer and you have any of the skills mentioned below -

  • Good at drawing
  • Public speaking
  • Managing people
  • Have a knack to pick up people’s emotions
  • An eye for design in product
  • Spot problems in operational processes
  • Shoot, edit and/or make videos
  • Make original music
  • Sing
  • Writing essays/blog posts
  • Or anything else

You are immediately more valuable to yourself and your organisation vs someone is who is a very good software engineer only. So if you are a software engineer who can think of product ideas and execute independently (remember you only have to be of an average skill in it) - you have more than doubled your value.

Leverage that skill.

This is a short excerpt from a book I am writing - self.debug. Its about using emotions and mindfulness to become a better software engineer. Please download it (has a free option!), and help make it better by providing feedback.

Photo by Alice Achterhof on Unsplash

Top comments (35)

ben profile image
Ben Halpern

I'd say this sums up what I bring to the table pretty well. And I really believed this in myself from early on. I had plenty of imposter syndrome about code, but was confident that I truly did have a good broad skillset in general and used that to jump in to tasks and opportunities I could have put off.

datagrl profile image
Julie Totsch

That's it. That's what I have been feeling - imposter syndrome. I am a SQL Developer with 20 years of experience and I have been moved into a new role. Now, I'm learning QlikView and QlikSense, and 3 months ago, I started learning Python. I've created some scripts to do data formating and my boss keeps telling me how great I'm doing. But, I don't feel like I have a good grasp on Python. I can't just sit and code off the top of my head, like I can in SQL. There's a lot going on at work, so I'm not using Python every day or even once a week. Thank you for giving me a phrase that describes how I'm feeling to a t.

juanfrank77 profile image
Juan F Gonzalez

It takes quite some time to code off the top of the head in any language. I still can't do it in Java and I've been using it for the past 3 years.
Now I'm doing all things JavaScript and I am definitely not able to do it but I don't expect it to happen, and I don't that makes me or someone else a "bad" programmer so the whole imposter syndrome thing I personally think it's really unfounded for many people nowadays.

kayis profile image
K • Edited

This is very true.

I often feel bad when I see all the good engineers on Twitter and GitHub, but then I realize I don't want to work at a big corp and I don't want to do only one thing etc, so my goals alread determined that I need to do multiple things and I can't become excellent at only one.

kip13 profile image
kip • Edited

I think the same, sometimes I wish have the same level of knowledge but if I follow the 'multiple things way' is really hard and maybe impossible because I'm not a robot and I need sleep (maybe nobody isn't a robot or no?)... But is great read and practice a lot of things and sometimes so tired, the advantage in any moment is that one thing can you help or clarify another thing and EUREKA !

ihavenokia profile image
Maxim Stratan

That's me too! I love to discover new things to do, most of them are very simple to build, but you can tbuild amazing stuff with just the basics. I like to discover how to do something in a specific language/framework using google and other resources, the informations is all around us, we just need to curate that info and use what have a real value (i guess this last part is the hardest one). Happy coding everybody!

cjbrooks12 profile image
Casey Brooks

I really like the phrase "a jack of all trades, but a master of one". As a consultant by day, I would absolutely agree that it's better to have a broad range of skills rather than pigeonhole yourself into one. But amidst that range, I think you should still pick one to invest in more heavily, to be excellent in one area, but flexible and able to work effectively in many.

ganeshtata profile image
Tata Ganesh

Absolutely! I believe that it is that one skill that would dictate where a person's career is headed. I also believe that approaching a subject with the intent of mastering it, ensures that you go through the obstacles that actually help you master the subject. Thus, whenever you decide that "Hey. I think this skill is extremely important too, and I should definitely learn", you already have a decent idea about how much effort you should put in to actually become a master at it, since I you have already experienced the grind while mastering a previous subject.

sandordargo profile image
Sandor Dargo

I'm not sure what to think. In the header, Karan writes about average, later again. But at another point, Karan says that good + good trumps excellent. With the latter, I agree. With the former, I strongly disagree.

The average is not good, the average knowledge is pretty poor in my opinion. With a lot of average/mediocre/poor skills, you will not get far.

On the other hand, to be good, you don't have to excellent, but you have to be above average. Those who make here comments are most probably already above average or they will be pretty soon because they are motivated to get better. The average just sits in the moss and don't give a damn about educating themselves.

ben profile image
Ben Halpern

The average is not good, the average knowledge is pretty poor in my opinion. With a lot of average/mediocre/poor skills, you will not get far.

I'd agree with this, but I sort of automatically translated this to an average among a subset who are above some really low threshold. Literal average is a pretty low bar, as you pointed out, but I still think the point gets across. Perhaps "solid" is a better word than average.

karan profile image

I totally see your point and agree on a certain level.

My interpretation of Scott Adam's "good" is that its closer to the "average" than "excellent". Hence my use of the word average. The core of the idea is that you don't need to be excellent - which most people get.

henryjw profile image
Henry Williams • Edited

Definitely agree. Average + average < excellent. But good + good > excellent (in most cases).

datagrl profile image
Julie Totsch

Very excellent point.

michaelgv profile image

I do agree with the principle, however, it’s important to note that for example, if your primary field is doing SharePoint (for example), spend the time becoming excellent in it along with your other N skills

kip13 profile image

Yes, always you have a thing that you're good over others and always you have your "Achilles' heel", be excellent in the good thing but dont forget the bad thing and train to be better in it.

shelbyspees profile image
shelby spees (she/her)

Good at drawing


Public speaking


Managing people

Kinda yeah

Have a knack to pick up people’s emotions

Probably more than the average engineer

An eye for design in product


Spot problems in operational processes


Shoot, edit and/or make videos


Make original music

Not really


Actually, yes.

Writing essays/blog posts


Or anything else

Welp I guess 7/10 isn't too bad. I'll keep that in mind next time I negotiate my salary.

dougaws profile image

For many of us, the #1 skill we need to work on is EQ (emotional intelligence). Take a typical interaction from me to my boss:

Boss: We need to port this Python tutorial to Ruby
Me: That's a stupid idea, because blah, blah, blah, no time, blah, blah, blah

Oops, the boss now thinks I'm a jerk.

Instead, try:

Boss: We need to port this Python tutorial to Ruby
Me: Sure, which of these other four projects should I put on hold?

See? Now my boss realizes I'm a team player and not a selfish/lazy jerk.

vkongv profile image
Kong Ka Weng

Yeah, I would agree on this. Being a software engineer that has basic understanding on design, product, business, finance, people relationship, and many more can help you make better decision with the consideration of making great impact to the product compare to software engineer who knows only about coding. This is very true if you want to go into higher position as you need to see broader aspect :D

slavius profile image
Slavius • Edited

I have to say:

Being good at many things and excellent in few made myself always just troubles in my life.

Once they realize you can do other stuff as well - over some time expect them to give you tasks totally unrelated to the position you were originally hired for.

A bonus is, if you get tasks from multiple managers ignoring the others, thinking you are capable of working 200% or 300% on all tasks from all areas because their tasks have higher priority then the other's. And then comes the CEO directly ignoring all resource planning and orders you to have a look at this until the end of the week...

The only exception is Germans. They do not tolerate you doing someone else's job even if you're probably better at it.

Another thing I would like to share is:

You don't need to be excellent. You need to be good + you need to know how and where to look for information that make you look excellent.

I am excellent in some areas but that's just because I have spent many years planning, assembling, installing, configuring, running, patching, maintaning and debugging these systems so I came across all possible configuration corner cases and weird bugs that happened during the lifecycle of that system (I am developing for, deploying and DBA-ing MSSQL Server since MSSQL 2000 until today including MSSQL 2017 on Linux in Docker).

I feel I'm an expert in this area but nobody ever cared in any of my jobs. They were always looking for ordinary DBA. In case there is a weird problem or situation - they unknowingly rely on product support, shared company knowledge and Google.

And that's exactly how it is.

I am managing tens of Exchange Servers. I'm in no means an Exchange specialist. When there is an Exchange problem I know that I need to consult Microsoft documentation, Look at available Exchange Powershell commands, search Experts Exchange eventually craft a advanced Google search query to find a blog decribing a solution to my problem in 2-3 clicks.

And it just works. I'm being treated and percieved as an Exchange specialist.

dandevri profile image
Danny de Vries

"Jack of all trades, master of none"

Trying to learn many things, you give up mastery of other skills which is totally fine. You can already see how valuable it is a developer to know the basics of design. Soft skills are really important.

ashleyjsheridan profile image
Ashley Sheridan

A Jack of all trades is a master of none, but oftentimes better than a master of one.

I only found out the full original phrase a few months back, but I think it perfectly sums up what you're saying.

juanfrank77 profile image
Juan F Gonzalez

Hmmm I don't particularly like the word "average" though I totally know than I'm not really a good software engineer, I have spent most of my time doing other things and becoming above average at them.

Maybe it was because I never wanted to be pigeonholed as the "computer nerd" so I tried a lot of different things to see if I like some of them better, but then I realized that none of those things can replace my calling of being in the tech community.
This is what I love and can't stop loving.

Great post, thanks for sharing!

alanmbarr profile image
Alan Barr

I agree it is important to develop a suite of skills. However, i think it's important to learn to be humble and aware what strengths one has and especially what our weaknesses are and avoid those. We often stumble when we think we are good at something we're not.

mvaragnat profile image
Matthieu Varagnat

This is a great insight @karankurani, very effective but also very "relaxing". When you realize you don't need to be in the top 1% of your domain to be very effective, it changes the dynamics and relieves a lot of self-defeating stress. Allowing your curiosity to roam free in another area of interest can be more effective, in addition to being better for your mental health.

A few years ago @patio11 made the same point, under a different angle. If you are competing with others on a 1-dimensional axis, you struggle to be in the top 1% of a LOT of people. When you add a second dimension, the subset of people you are competing against, is much smaller. And even smaller after a third skill is added to the equation, and so on.

I am not a great coder. But I am the best coder that also wants to be in a room to learn about insurance contracts and also enjoys picking up the phone collecting feedback from customers. That's it, imposter syndrom solved :-)

h4ckz3r profile image

Not sure if I agree with the title cuz I'm the stereotypical jack-of-all-trades and several across college I've been that I have to get really good at something instead of jumping from thing to thing.

I'm average at several things, even some that are completely unrelated to programming and computer science, but for pretty much everyone I know that is a sign of me being disperse and "hyperactive".

karan profile image


As you rightly mentioned, there are of course downsides to not focusing on one thing. The point of this post is that if your primary job is a software engineer then being good or average at other things increases your value and odds of success. I don't know if you have experienced it in your workplace or not.