One of the most valuable skills in our economy is becoming increasingly rare. If you master this skill, you’ll achieve extraordinary results.
– Cal Newport
During the early 70's we were in an industrial economy where low-skilled workers impacted the economic growth by mass production. The industrial revolution led to the industrial society, which was driven by the use of technology to enable mass production by the large population.
But after sometime due to the digital revolution, there came a period of the post-industrial economy where the main reason for economic growth shifted from manufacturing at the mass scale to the information technology services and research.
Right now we are living in a knowledge economy. Our economic growth is heavily driven by the information. Unlike in industrial society, only highly skilled people can thrive in this information society.
Every developer out there has some sort of skills. But if you feel that you have to be valued more than your peers at your work. You need to find out what rare values you can bring to your work. It's a simple supply demand.
If you want something valuable from your work, you need something valuable to offer in return!
So, how to develop rare and valuable skills?, One way to do that is to become so good in what you claim to do. To improve your skills you need practice. But to become rare and valuable you need something more, deliberate practice.
What is deliberate practice?
An expert breaks down the skills that are required to be expert and focuses on improving those skill chunks during practice or day-to-day activities, often paired with immediate coaching feedback.
– K. Anders Ericsson
According to the psychologist K. Anders Ericsson, deliberate practice is one which an individual spends time in repeating(practising) the same task daily with high concentration beyond one's comfort zone and getting immediate feedback on it.
Deliberate practice is a well-researched subject. Research papers show that it is one of the key factors to become an expert at something.
The term deliberate practice might be new to developers. But if you notice, the research paper I mentioned was published during 1990's. This shows that deliberate practice is something which exists for a long time.
People who already practice deliberately
Athletes practice daily. If you are an athlete, each and every day you have to get out and practice until the race day or the big event. And it doesn't stop with the race day. After that, you have to continue practising harder than previous sessions to get even better.
Another well-known set of people who practice deliberately are musicians. To become the best performer you need more practice. It took at least 10 years for the great musicians like Mozart to produce something significant.
This is often called 10,000-hour rule. It simply says that in order to become a master something and to create a great work, it takes 10,000 hours of practice. This rule has been well researched and proved multiple times by the researchers like Anders Ericsson.
Usain Bolt became the fastest man in the world in 2008 at the age of 21. But, he has been running(practising) since the age of 14.
Why athletes and musicians practice deliberately?
You cannot see a successful athlete or a musician who ignores practising daily. Usain Bolt practices 4 years to get the best out of him for just 30 seconds in the international Olympics.
If you take their field: sports and music, they are winner take all market. That is, everyone aims to do just one thing. Be the best at what they do. If they perform even 1% lesser than the other person, there is going to be a drastic difference in what they gain.
Imagine Usain Bolt performs 0.1% lesser than his opponent during the race, he is going to miss all the sponsors, fame and his record which would cost billions if not millions.
Deliberate practice for developers, why and how
Programming is more or less like a winner take all market. The more you are good at what you do, the more incentive you will get. For example, in other markets like agriculture, the incentives are absolute, not relative. A farmer's incentive depends on the amount of crop he produces and doesn't much depend on what other farmers produce.
But if we take our market, our incentives are heavily relative. If your code is always good, elegant and user-friendly compared to others even by few percent, your rewards will be a lot more.
We know many developers with 10+ years of experience. They would have practised programming all the years. We also notice only a few of them are so good at what they do. But what about others? As per 10,000 hours rule, they too have spent enough time practising.
It's because the people who became so good, did not just practice, they practised deliberately!
Deliberate practice involves in 3 steps.
The very first step is stretching beyond your comforts. If you take athletes, during their daily practice they try to beat their yesterday. The more uncomfortable they get today, the easier it will become for them to perform in their comfort zone tomorrow.
Athletes stretch their efforts by doing the things that their body is not comfortable with. As developers, we need to stretch ourselves by doing the things that our mind is not comfortable with.
Developers practice programming to become good at it. But just doing it in a manner that we are comfortable with is not going to take us anywhere. I will talk about one deliberate practice I introduced in my habits which makes me the better developer.
We always have to go through the code base of a large project at some point in time in our developer life. And trust me, going through the code written by others is not going to be something you would love to do at first place. To get used to this situation, I daily sit and go through some open source code.
The first time it will be very daunting, my brain plays all sorts of tricks to make me stay inside my comfort zone. But I just sit before the code, even if I don't understand the code, I just go through it. At one point in time, you will be able to tame your mind and focus on what you wanted to do.
Find some valuable thing that you want to become good at. Set a time. Show up and practice. When you are practising, push harder than yesterday. Read that code which you feel it's difficult. Use that programming construct that you're not comfortable with, write more quality code than yesterday.
The second step is getting continuous feedback. You are an astronaut driving a spacecraft. Now you have set the destination, decided to push yourself daily towards the destination. But there is a high chance that you will be getting off your trajectory.
In order to put you back into the right trajectory to your destination, you need a continuous course correction. Here the course correction is the continuous feedback you are going to get after every action you take.
Remember, athletes and musicians who practice regularly will get feedback from their coaches and masters respectively. Based on the feedback, they will correct their action in the next training session. This is something very usual. You cannot see a good athlete without a coach. But what about developers, who is going to provide feedback to us?
The easiest way to get feedback is from your peers. If you are practising something daily, show your work to your peers often and ask for their honest feedback. Based on their feedback, you can correct your course of action. Don't worry if you don't have peers to give you feedback, the best part of being a developer is the community.
Reach out to people in online and show your work to get their feedback. Trust me, most of them will be willing to help you.
The next thing you could do is, get yourself a mentor. Most of the good developers out there ended up being a good developer by becoming a good mentee. There are many people who deliberately help others by mentoring them. But if you don't get such people, you can always follow someone who inspired you with their best practices.
If you ask me, I would say this is kind of the hardest part. You know what to practice deliberately, you have a set of people to give feedback on your work. But as per the 10,000 hours rule, it's going to take a pretty long time to become an expert at something.
There is a strong possibility that you are going to lose motivation and go off the track. Trust me, this happens to everyone. If it hasn't happened to you, well and good. But what if it happens? how to get back your motivation?
The practice you are doing will be interesting for some time. After that, you start thinking why should you do this. You try to do other small things like checking your social media to escape from it. Then the procrastination begins.
First, you will break the streak for few hours, then it becomes few days and once it becomes a week, you will think that you already broke the streak for weeks and there is no point in going back. It will be so hard to get that mindset back.
I have experienced this in many of my practices. Be it from my workouts I do daily morning to my side projects. From all that failures and falling off the track, I have learnt one thing.
Willpower is costly. Embrace boredom!
Willpower needs more energy. It's difficult to get your willpower back and focus on something. But it's rather easy to get used to the boredom. I am not going to touch on how to embrace boredom. There are gazillions of articles out there. A quick googling will give you many ideas.
Before you expect valuable incentives from your work, you have to bring in more rare and valuable skills to your work. It took at least 10,000 hours for all the experts out there to become such experts. In order improve your skills, you need to practice. In order to be rare and valuable, you need deliberate practice.
Good developers are not born, They are created.
If you enjoyed this article and want more like this, scroll down and subscribe to my mailing list. I will send you one article per week which will help you to achieve a greater version of yourself as a developer.