10x developers are the mythical creatures of our times.
What are they? What do they do to be so special?
What does 10x even mean? A 10x developer is someone who is (thought to be) as productive as 10 others. He/She would, therefore, be able to produce 10 times the outcome of their colleagues.
What are we really talking about?
Of course a Senior Engineer might be 10 times more productive than an intern but would it really be possible among colleagues with the same years of experience and at least on paper the same level of skills?
Often when reading about Performance and Productivity in Teams you will find stuff like the Pareto Law and the Gaussian Curve. (also referenced as Power Law and Bell Curve).
Pareto law is the famous 80-20 rule, valid for almost everything: from wealth distribution and global inequity to time management and productivity.
When talking about Team Performance it results in :
80% of the developers do only 20% of the job. This means that the remaining 20%, the Top Performers, are able to complete 80% of all the tasks.
The Bell curve is often used to describe the distribution of employees ability to perform, stating that around 80% of the employees are positioned around the average while the rest are either top performers or bad performers.
However we might look at those graphs and numbers, the difference between the best performer and the worst performer in a team can be huge. Maybe we are just referring to that when we talk about a 10x dev? Or we should just consider the difference against the average of the other dev. Whether such a thing would be statistically possible or not we can´t deny some developer are in fact way more performant than others.
So where is this awesomeness coming from?
Is it because of years of experience? Not really.
10 years of experience could simply mean a 1-year experience repeated 10 times.
If you are stuck in the same job doing the same task every day, every year and if you don´t feel the urge of stepping up and learn new things, you may be surprised when a regular dev with only 3 years on his resume is blazing fast and knows more than you ( not only on the latest coolest tech stack).
Is it because they work till late and don´t have a life? Not really.
A 10x dev is not grinding long hours. It does not mean work longer. It definitely means work harder but mostly in a smarter way.
I am far from being a 10x dev, but in my career, I had the luck of meeting and working with at least a couple of such amazing individuals, and i can tell these are some of the traits/qualities they had in common:
Effectiveness and efficiency:
Being effective is about doing the right things while being efficient is about doing things right.
Well, 10x devs normally do both. They don´t waste time doing unnecessary things in the most perfect way. They get the right things done, in the (enough) right way.
This can be achieved by:
Sometimes bad requirements, unclear specifications, and wrong assumptions can make you waste hours of developing time. Not only you will have to readjust your estimates or squeeze in the rework, but it can also be very frustrating having to throw away all the amazing code you just created.
If you are stuck, if you need help, ask for help. don´t ask for a solution, ask for a hint, for guidance, for a tip that can lead you to find out the solution on your own. don´t be afraid. you are not supposed to know everything and it´s good that you show you are eager to learn.
How much time do we really spend watching youtube, checking our phone, replying to friends on WhatsApp or Snapchat, or simply scrolling Facebook wall?
what if I tell you, you spend 1 to 2 hours a day on them? check the usage of those apps on your phone. you will be scared. (you can use apps like this to prove it).
We don't necessarily have to quit on all that. Just recognizing how much time is wasted on these things, when we are supposed to be productive is the first step and then we can use tools like Pomodoro technique to help us stay away from social networks and smartphone and keep the FLOW for at least the entire duration of a Pomodoro timer.
I am not even saying we should not take a break, it´s more being really aware of where our precious time is being drained. (even though definitely it´s better to stand up, have a walk, a chat with a colleague, go and play kicker or table-tennis for 10 minutes, rather than checking Facebook. Give your eyes and brain some rest off any screen!).
Having a break, slack off for a little while can actually increase your productivity
What we do mostly is typing and clicking, it seems crazy but you can really become superfast if you start using shortcuts in your IDE and if you use the Terminal / CommandLine extensively. Running
grep version package.json is much faster than going to the Finder, click on package.json open and then read the version parameter.
git stash git pull git checkout -b my_new_feature git stash pop
is waaaay faster than doing the same thing with any visual tool.
You may think that´s just shaving off seconds, but to become a 10X dev every second matters (and anyway staying away from the mouse is good to prevent Carpal Tunnel Syndrome)
Here you can read about some tools and tips that help me writing and debugging code better and faster.
The amount of information out there is huge. Sometimes you have to pay for it, most of the time is free. There are no excuses to not spend some time in personal development. Read articles, listen to podcasts, watch tutorials and follow online courses. It does not even have to be always about coding - otherwise one could argue that indeed a 10x dev spends his entire day "working" - ( for example I find Getting Smarter Every Day and You are not so smart very mind tickling).
It is more an attitude, a state of mind. The curiosity, the thirst of knowledge sets the difference from the average.
Being the fastest, smartest, most skilled developer in your team might be good for your ego, but it is not for your growth. As comfortable and fulfilling it might be, try to never be the smartest person in the room, and always look out for people that are very good at what they do, that are better than you and stick to them.
As soon as you learn something, try to help someone else, teach other colleagues, share your learnings.
It can be giving some advice after your daily standup, making a short presentation to your team, writing a blog post or becoming a mentor on an online coding platform.
Never be arrogant or irritated to someone that knows less than you.
If we consider all this, of course a very good developer has solid strong programming skills, but what can really make the difference are passion, attitude and some soft skills.
The colleague to whom I looked in awe and inspired me the most in improving myself were highly motivated and skilled, and of course super fast in their tasks: nothing seemed to stop or scare them, if they didn´t know something, they researched it for a couple of hours and then felt confident enough to take ownership of the bug fix or feature. And on top of that, they wrote documentation, organized workshops or mini presentations as soon as they found or learned something that could be beneficial to any other team members. They loved to share.
And in the end, I believe that this could be the real multiplying factor. Sharing knowledge, fostering growth, being an example of passion and hard work, is what really can have an incredibly positive impact on other people and raise the bar in the performance of a team ( even if made of just "average" developers).