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 (33)
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.
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
. Butgood + 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.
Meh
Sure
Kinda yeah
Probably more than the average engineer
Sure
Yes
Nah
Not really
Actually, yes.
Sure
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.