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

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

karan profile image Karan ・2 min read

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

Posted on by:

karan profile

Karan

@karan

Currently all about using mindfulness/emotions to improve as a software engineer. CTO/Co founder - doctorc.in, Previous - Employee @ Funzio (acquired for $210M), M Eng in CS from Cornell

Discussion

pic
Editor guide
 

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.

 

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.

 

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.

 

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.

 

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 !

 

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!

 

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.

 

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.

 

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.

 

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.

 

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.

 

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

 

Very excellent point.

 

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

 

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.

 

Good at drawing

Meh

Public speaking

Sure

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

Sure

Spot problems in operational processes

Yes

Shoot, edit and/or make videos

Nah

Make original music

Not really

Sing

Actually, yes.

Writing essays/blog posts

Sure

Or anything else

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

 

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.

 

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

 

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.

 

"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.

 

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.

 

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!

 

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.

 

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 :-)

 

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".

 

Hmmm.

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.

 

Just to add one thing: It's much much easier to go from being a jack of all trades to a master of one, than to go from being highly specialized to a true generalist.

 

That is easy to explain from economical point of view. Presently there is just more demand for services requiring average skill set. Majority of software development tasks doesn't require extra deep knowledge or extraordinary skills.

 

I often hear that you have to specialize in one thing. Why? Because that makes money - become an expert in some outdated/obscure technology like fortran and you'll have a great salary... in exchange for your soul. You'll be doing the same horrible tasks nobody else wants to do for the rest of your life.

I prefer having a broad knowledge even if it means I won't be drowning in money. Honestly, I'm better than the average "specialist" in a few fields, but somebody who is actually good in a specific field beats me.

Best of all, I'm having fun learning and trying out new stuff, and I love when people ask for assistance (although I complain about it :D)

Nine women can’t make a baby in a month.

That's what we were saying how managers think software development works...

 

+1 just cuz I can't recall the last time I saw someone quote Heinlein in a comment section. :-)

 

nice post! trying to be good in some things and excellent in one.