You might have heard of the 10,000-hour rule. It supposedly takes 10,000 hours of practice to become a master at something. This number will, of course, vary depending on what you are trying to master- some skills have a much higher bar than that, others may be easier. What is also important is the quality of that practice. In this blog post I will look at different ways you can carry out a deliberate practice as a developer.
You will not become an amazing developer by constantly doing the same easy things. Let’s be honest here- no one becomes a master driver by simply driving a car for 10,000 hours. To become an amazing driver you need to push your limits- on a race track, in difficult weather conditions, receiving critique (or timing yourself). It is somewhat similar for developers. Many have worked 40 hours a week (which would give you 10,000 hours in about 5 years), yet not everyone around us is a master!
What makes some practice special?
For he purpose of this article, we can characterise deliberate practice as:
- Practice requiring focus
- Practice that has a goal of improving performance
- Practice where we receive feedback on our efforts
So how does that apply to software development? Can we incorporate deliberate practice in our normal work-day or does it have to be done after-hours? The good news is- there are many ways you can do it during and after your standard work day. Let’s have a look at my favourite practices.
Start pair programming more!
One unexpected way to incorporate deliberate practice in our working life is by doing more pair programming.
Let’s think about this for a second- when you are programming with someone else, you focus more, you are trying to elevate either your programming skill or help your partner, you constantly provide feedback to each other.
Pair programming is a proven technique for achieving higher productivity. The fact that it is making you a better programmer is an added benefit!
Create and review merge requests
Making use of merge requests is yet another simple way to incorporate some deliberate practice in our work.
When you put your work up for merge request review, you are seeking a quality feedback. Make sure to act on that feedback and try herder next time- make your merge request as good as possible.
The same goes for reviewing merge requests. Take time, think the code through and make sure that you understand definitely everything that is contain in that code. This is a good reason why reviewing more experience developers code can be very helpful.
Don’t shy away from the challenge
Another obvious way to push yourself more in your development job is… to push yourself more! Make sure that you are not always picking the same easy tasks and features that you know how to develop.
If you are a seasoned back-end developer- take the hardest tasks available related to your domain, or even- try something new. Put yourself out of your comfort zone. Maybe even work on a front-end story. Just do something that is not going to be easy for you
If you are not writing enough high quality tests- make sure that you start and that you do these in an exemplary fashion.
The point here is not to tell you exactly what to do, but to let you know that you need to challenge yourself and make yourself a little uncomfortable. This, together with pair programming and merge requests, will make you better.
But wait, there is more…
The following ideas may be more suited for an after-work practice… but who said that you can’t do them during lunch? Or maybe you have dedicated learning time at work? If there is a will there is a way!
Try some coding challenges
Completing different coding challenges is close to as pure deliberate practice as you can get. You pick a difficult challenge, you can time yourself and you get to see if you managed to complete it. Focus, improving your performance, learning, feedback.
If you don’t know how to get started with coding challenges, don’t worry. There range from very simple to near impossible, so I am sure you can find some that will match your level.
I have written an article about Keeping your skills sharp with HackerRank if this topic interests you.
Learn a new language, framework, technique etc.
This is pretty straightforward- pick something new to learn. Let’s say that you decided to learn Python; how do you turn that into a deliberate practice? By building something with it as soon as possible!
When you build things and share them with the world (either by showing your colleagues, open sourcing it or writing blog posts about it) you are exposing yourself to the oh so important feedback and critique.
Build things, release projects
You should balance the time between simply learning new things and mastering things that you already know. One thing that many developers don’t do enough (yours truly included) is building and releasing our own project.
There is a lot of value and learning in building something difficult, using the tools we know to completion.
Just writing software for 10,000 hours will not make you a “master” developer. Like with any other discipline, the key here is deliberate practice. As you can see, you can do it at work and at your own time. See you in 10,000 hours!