DEV Community

Cover image for 5 Software Development Skills That Will Put You In The Top 3% Of Software Developers
Dragos Nedelcu
Dragos Nedelcu

Posted on • Edited on

5 Software Development Skills That Will Put You In The Top 3% Of Software Developers

You sometimes ask yourself...

What does it take to excel in software development?

I asked myself this a few dozens of times in my career. Whenever I had the pleasure to meet an exceptional software developer. And if being excellent at what you do gets you excited, you probably asked yourself the same.

Success in software development is highly predictable.

As with any discipline, success in software development is highly predictable. In the following lines, I tried to break down the commonalities I’ve seen in top software engineers.

This list is not written in stone, but rather a recommendation if what you want is to increase your probabilities of success when climbing the ladder.

1) Strive for technical excellence

This is the backbone of a successful career. It is crucial when starting out in your first junior job, and as you move up the ladder. Top software engineers aim to develop both a strong technology-agnostic understanding of software development as well as proficiency in their particular domain.

Experience is not enough because there is literally not enough time in your life for you to make all the mistakes possible. Complement that experience with existing literature on best practices.

Continuously seek opportunities for improvement at your current job.

This doesn't mean using the latest shiny framework in your projects because the gurus say so. It means taking on additional assignments that will give you the possibility to touch some new tech(extending a deployment pipeline, writing those extra unit tests no one wants to do).

2) Be obsessed with continuous improvement

Going in line with technical excellence, a healthy obsession for improvement is a key skill for long term success in the software industry. We assume that as software engineers we are already doing this because of the nature of our profession.

Imagine what you would achieve if you would practice daily for a whole year.

Your job will not always give you the chance to improve your skills. It is easy to fall into comfort. Learning after work is challenging because you are exhausted and you need to spend time with your family. You must fit this in your current routine. It can be every day before the daily, take 30 minutes of your time and practice a skill you want to get better at. And stick to it.

3) Document what you do like your life depends on it

A critical skill in any profession, but particularly important in software development. Documenting what you do, in code or in writing, will probably make you ten times more effective.

Documenting will expose parts of the system that are not fully optimised or interfaces that might not be clear yet. It will force you to take a look at what you have just built through the eyes of a newcomer. It can be a REST API, a React app or just a bash script, whatever you are building, get in the habit of documenting it for your future self.


If you’d like me to coach you to achieve the same amazing results our mentees are achieving in their software engineering careers, click here and book a 45 minutes FREE initial consultation with me.


4) Think like a CTO

In other words, assess your tech choices from a risk management perspective. Can this be a critical point of failure? Is the software extendable? Is it documented? Is that open-source framework that we use widely supported?

What is the compatibility with other parts of the system? How can we scale this? How is the team going to manage it? Do this exercise again and again and you will be surprised by the insights.

Think like the CTO because you are one, you are the CTO of your own career.

5) Be visible - at all time

Yes, I know as a developer, you are probably an introvert. But talent without visibility goes nowhere. And when I say visibility, I mean inside and outside of the company. Try to help everyone you come in touch with. Take part in that extra initiative, help your UX person, help you PO, help your Agile Coach.

Talent without visibility goes nowhere.

What goes around comes around, and you will go places. Outside the company, keep your social media (particularly LinkedIn) up to date all the time. Interact with other developers, ask them how they solve the challenges they face in their current company. Funny enough, helping people out is the best way to market your expertise :)

Helping other people is the best way to market your expertise.

There it goes.

Follow these guidelines and you will for sure be in the top 3% software developers.

For more content like this, follow me on LinkedIn.

And if you are truly interested to realise the full potential of your developer career, then click on the link below and schedule a FREE initial consultation call with me. Together we will build a step by step plan to help you get to that top 3%.

Click here to apply now!

I look forward to consult you personally soon.

Together we will analyze your situation and build a step-by-step plan to help you get that developer job you dream of.

We usually get in touch with you within 24 hours.

Dragos Nedelcu

Expert Software Coach at CodeWithDragos

Top comments (22)

Collapse
 
hasnaindev profile image
Muhammad Hasnain • Edited

After being in the tech field for two years I've noticed that the software engineering industry is elitist. A person who had 20 years of experience building enterprise level applications was rejected from jobs because he failed to solve the useless whiteboard problems, something that you'd never use any way, they just want to see, "How you solve problems."

If you have a preference, you are bashed. Your package is 200 KBs instead of 199 KBs, that's bad. Use Svelte and not React because Svelte does not include a library/framework in the bundle, as if in 2021 a mere few KBs matter. This was not just a rant. You will never amount to any "senior" developer's expectations because he prefer a certain way of doing things. They have a problem for every solution. This wasn't just a rant, there are a lot of "senior" and "experienced" developers who simply just want to appear smart.

Recently, I started a few open-source projects and I got a lot of attention from colleagues, including my boss. It just blew my mind, no one cares how good or bad you are, it's all about the image you develop of yourself.

I'm still learning and growing. What I shared might change in future but new developers should be mindful of how toxic a surprisingly large number of developers are. I remember when I was learning JS, I shared an Express.js project where senior developers literally bashed me.

I hope your experience is different and I'm constantly learning things. Soon, when I spend more time in the industry and I can articulate my thoughts, I'll write about the toxic aspect. Thank you.

Collapse
 
leob profile image
leob • Edited

Great comment ... this mindset is not just elitist, it's also incredibly biased and narrow minded. I think a goal like "you need to be in the top 3 percent" (whatever that is) also contributes greatly to this elitist mindset.

And, the whole idea of diversity and inclusiveness goes out of the window like this - we all need to be "rockstars" or "ninjas", as if we're movie stars in Hollywood, rather than people writing code and fixing bugs.

I don't think real world companies need ninjas, rock stars, geeks, nerds or 3 percenters, they just need real normal people with empathy and communication skills!

Collapse
 
hasnaindev profile image
Muhammad Hasnain

This!

Collapse
 
rajaasyraf profile image
Raja Asyraf

Agreed 👍

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️ • Edited

My 2 cents: the most important thing if you want to be productive is to develop an intuition for reducing both problems and their solutions into their building blocks.

I see so many programmers write the same code again and again only to figure out during refactoring that there might be some common aspect, when that should have been obvious by just looking at what the code does.

Don't write code that solves the current problem; find your solution, then analyse your solution and see if there's some core aspect to it that can be generalised. This takes some practise, but after a while, you'll get to the point where you have an idea, then just naturally see how the idea leads into more generalised building blocks.

A simple example that most of you will be familiar with:

I need a function that takes an array of strings and turns them all into uppercase

should quickly become

I need a function that takes an array of elements and applies some other function to them

And voilà: you've arrived at map :D

Why is this important? Because it naturally leads you to write more extensible code by putting interfaces not only around your solution, but inside it as well. If your requirement changes to making the strings lowercase, you can just change the function you pass into map instead of having to find a line of code inside a loop.

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
Sloan, the sloth mascot
Comment deleted
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
houssem12ai profile image
Houssem12-ai

such an amazing advice !
i like the part of generalizing => very good trick
thanks for sharing !

Collapse
 
leob profile image
leob • Edited

Some good points, e.g. about documenting (which you could, for instance, achieve by blogging) ... I'm just puzzled by the infamous "three percent" - what's that about, how do you define it, and why would you even want or need to be part of it? Seems a highly artificial goal ... just be yourself & believe in yourself would be my advice - don't get crazy about what others say you "should" do.

Collapse
 
gureisu profile image
Grace

"just be yourself & believe in yourself would be my advice - don't get crazy about what others say you "should" do." - As a junior developer, I needed these words today 🥺

Collapse
 
leob profile image
leob

Cool! yeah it's good to be passionate, and some of the advice that I'm reading left and right is fine, but don't take every piece of advise as an absolute truth - more often than not "it depends", so do your own critical thinking and ultimately make your own choices

Collapse
 
mwrpwr profile image
Joseph Maurer

“ But talent without visibility goes nowhere. And when I say visibility, I mean inside and outside of the company.” <—- can’t emphasize that enough! Nicely put!

Collapse
 
amaben2020 profile image
amaben2020

Great post. SWE is not a easy profession. We'll keep grinding.

Collapse
 
sandordargo profile image
Sandor Dargo

Learning after work is challenging because you are exhausted and you need to spend time with your family.

No, no, no... You don't need to spend time with your family. But I guess you want to spend time with your loved ones. Otherwise, why the heck should we have a family?

Collapse
 
abragred profile image
abragred • Edited

Those are true, but a bit far-fetched. It depends on a lot more than just following some rules that are obviously make you appear more pleasant in front of customers. Also, of course the quality of your portofolio is in the end the thing that might make the differnece. When I chose a software research and development company to work on my app I can't remember the exact thing that made me be attracted to develux.com/r-d-center and their services, it was a mix of everything thye offered.

Collapse
 
ash_bergs profile image
Ash

Thought provoking stuff, thank you for the insight!

Collapse
 
steelwolf180 profile image
Max Ong Zong Bao

This is a awesome article i like the part of thinking like a CTO , I think another is more towards delegation and time managment is a key.

Collapse
 
mahmoudessam profile image
Mahmoud EL-kariouny

Thanks for your effort.