Practice makes perfect
You may feel like me in that you know you need to keep learning and mastering to stay on top of your game, but are busy all the time and don't know where to find the time to keep learning. It is not enough to just do your day job to get better. But when you are rushed by deadlines, do you really learn enough about what you are doing? Or are you just trying to get the job done?
Musicians get the experience of playing in a live event. Sports people get the experience of competing in a tournament. Public presenters of all flavours gain experience of talking in public. But do these people leave it there? Are they masters of their craft purely based on experience of doing their thing? No, they practice. They practice every single day. They refine, they improve, they find better ways. It may not be sexy, but often they get good at something just through repetition. Should software/web development be any different?
Recently, I have been trying to improve my habits and regular practicing is a great candidate to turn into a good habit. I am in the process of setting up my practice routine and here are my basic rules:
1. Practice every week
In an ideal world, it would be a daily habit. I am super busy at the moment, so I am doing it every week. What ever timeframe works, it is best to make it regular and make it a habit. Once I am happy with doing it every single week, I'll try and increase the frequency.
2. Each practice session is time boxed to 1 hour
It would be very easy to get carried away with practicing. You could spend hours solving a problem. But the last thing you want is to experience practice burn out. If you practice for too long, you might end up breaking the first rule. I am starting off with time boxing my practice sessions to 1 hour. If you are practising once a day, you might want to time box to 30 min. The important thing is to keep it small and manageable.
3. Maintain a list of items to practice
When I start a 1 hour session, the last thing I want to do is have to come up with something to practice. That should be done in advance. Every week or so I will add to my list of items to practice.
4. Practice items are in isolation, and not part of project.
It would defeat the purpose of practicing if you are doing it as part of a project. Each practice item should be in isolation. You are practicing how to solve one particular problem and don't want to get caught up with issues caused by other parts of the project.
What do you practice?
Something small. Something that is a small step forward from where you are today. This does not just apply to learning new stuff. In fact, it is just as important, if not more important, to practice the tech you already know. Even if you know how to solve a particular problem, you could practice solving it in another way.
Finding practice items
Defining terms: Heard a technical term that you don't fully understand? Define it and practice an example of it.
Books: Books are a great way to learn. They are also a great resource for practice items. As you are reading, make notes and add items to your practice list.
Work with others: If you work in an office with other developers, talk about what you are learning and get their perspective. If you work alone, do you have people online you can chat with?
In the book, The Pragmatic Progammer, co-author Dave Thomas talks about Code Kata. Kata comes from karate where you repeat a form over and over again and making improvements as you go. Dave Thomas says, "How do you get to be an All-Star sports person? Obviously fitness and talent help. But the great athletes spend hours and hours every day, practicing."
The ideal practice under Code Kata includes:
- Time without interruption
- A simple thing to practice
- Look for feedback and improve each time
- Make it fun
- Keep practice sessions short, 30 minutes to one hour.
If you start to practice regularly (or do it already), let us know how you get on.