The 10X developer
A "10X Developer" is
An individual who is thought to be as productive as 10 others in his or her field.
The 10x developer would produce 10 times the outcomes of other colleagues.
But in the field of software development its hard to define what *10 times the outcomes* means.
How can we measure one's productivity?
- 10X more LOC (lines of code) - Many times huge code blocks can be replaced by smaller elegant solution.
- 10X more efficient code - But at what cost? Over/pre-optimization has its shortcomings.
- 10X more bug fixes - Lots of minor bugs are not the same as one major bug.
- 10X more experience - I would rather team up with a competent junior developer over a 10 year incompetent veteran any day.
- 10X more work hours - No one can maintain such pace for long.
Therefore, one may argue the there is no such thing as 10X developer at all - its a myth!
On the other hand, others may say there is such thing. Even better, there are 100X monsters among us!
But we all can agree there is such thing as an efficient developer.
Pareto principle states that 80% of the effects come from 20% of the causes.
I believe that a 10X developer is simply an efficient individual. Its a person who provides 80% of the value, and 20% of the effort.
I believe anyone can become an efficient worker.
Moreover, I believe such individuals under the right care, make any group a 10X team.
10X is not a unicorn, it's a work culture with two pillars - communication & autodidacticism,
and one nemesis - perfectionism.
Understand the task
An efficient developer knows to prioritize tasks, and break them into sub tasks.
In order to do so, we must be able to separate the wheat from the chaff.
At any time, for any task, we must see the big picture and be able to answer the big W.W.W.
- What needs to be done.
- Why it is needed.
- When should it be done.
With those answers, we can set goals and define milestones for any process.
We can define what is our "must have" feature and what is a "nice to have".
For example, lets say the client request us to build a landing page with a login.
That is the what in our equation, or at least part of it.
Before diving in - communicate. Make sure you understand where the value is.
Why & when is the feature needed?
- Maybe the client has a big presentation in a week
- Maybe the login doesn't need to work at all, but its extremely important that the design would be responsive and work cross device/browser.
- Maybe all he cares about is passing a security review, and needs the login logic to be robust.
An efficient developer knows to manage his/her quality time.
Some are early risers, some are night owls.
Some get to the office and get cracking right away, others would would zombie-walk till the coffee dose kicks in.
Know yourself. When is the best time for you to be focused? What part of the day is your work quality the best?
Protect those hours jealously.
- Reduce interruptions. Get the phone out of reach. The dancing kitty clip gramma just sent will be hilarious in an hour too.
- Push back meetings. Mark busy hours on your calender.
- Know when & what is good enough. In many cases the "perfect solution" is worse then the "bad solution".
Know the basics
An efficient developer knows to avoid common pitfalls that would need to be fixed later on.
You don't have to be an expert full of theoretical knowledge, but you should be
able to architect a solution and explain its reasoning.
- Be able to analyze basic time complexity. Is your code O(n)? O(n^2)?.
- Be familiar with data structures basics.
- Plan the solution in your head or on paper before you do so in code.
- Write effective unit tests.
Use tools and automation
An efficient developer knows to use his tools.
An efficient developer is lazy. He doesn't waste time on mundane tasks.
- If you find yourself repeating a manual operation too many times, write a script for it.
- Define custom snippets.
An efficient developer stays updated.
Progress waits for no one. If you're not catching up, you'll be left behind.
Make it a habit to learn something new every day.
You don't need to be an expert on every new framework that pops out.
Just know enough to handle small talks without appearing clueless.
- Have a pet project once in a while.
- Check out the community trends
Share & support
An efficient developer shares his/hers knowledge.
- Encourage (but don't pressure) team members to follow the above principles.
- Be a giver, not a taker.
Being an efficient developer is great, but working in an efficient team...