Done with your first two projects? Great! What we are going to discuss today is the one fundamental skill that is guaranteed to take your skills to the next level.
I am sure you already guessed it, that is practise.
Before proceeding its important to clarify what practise is NOT working on a project for a client is not practise, that is work. In fact if thats what you do, please open up a new tab and quickly fire an apology to all the clients whose money you have been wasting!
Practise is an entirely different beast, Geoff Colvin in his book Talent is overrated talks of the following characteristics of practise or deliberate practise as he calls it.
Its designed specifically to improve performance.
Keyword here is designed, this requires knowledge about how performance is developed and improved.
This means that you likely need a teacher to help you in your practise sessions. However it is essential that with time you become good enough to design your own practise.
If you are looking for a nice school to join try Moringa (Disclaimer: I train at this school)
It can be repeated a lot
Unfortunately humans are not Write Once. To get better at any task you need to repeat it a lot. This means that the tasks carried out in the practise routine must be inherently repeatable safely.
It is highly demanding
If you find yourself in flow, you are probably not practising. In fact it is physically impossible to carry out practise for more than 5 hours a day and for more that 1 hour a time. This can act as a useful guideline to know if what you are doing really is practise.
It is not fun
Unfortunately practise is no going to be a pleasurable activity. I will let Emeka Mbadiwe explain the concept
Practising like a chess master
It’s not always possible to get a teacher, but thats no excuse to not practise, we can borrow a leaf from the world of chess.
Professional chess players practise by studying positions of pieces for different games played in the past.
The positions are organized by various themes including
- End games
They then compare the move that they would make in this position vs the move that the master made.
We can modify the process to use in our own profession.
- Look into requirements specification, an implemented RFC or popular algorithm. Check this book by Dr. Sedgewick Algorithms for inspiration
- Write out your own implementation of the algorithm
- Look for an implementation of the algorithm, if you are using Sedgewick’s book, you will find code samples.
- Evaluate the proposed solution against your own
- Note the differences between what you did and what the authors did
- Rinse and repeat
You can use this method to analyze other aspects of software development as well including:
- Design patterns
- Specification drafting
Point is to identify gaps in your existing skillset and subject them to the rigors of practise.
How have you designed your own practise? Talk to us in the comment section.