I have been reading a lot over the the few months. Mostly books revolving around programming principles and patterns as I figured they would help improve myself. Most recently I read “The clean coder” from Robert “Uncle Bob” Martin. It is basically a compilation of his life experiences and lessons he learned from them. And there is a lot of things to take away from that book. It is a very hard book to put down once started but you should be the judge of that.
As I was reading something stroke me as a revelation, he used an analogy linking martial arts and coding. I remember when I was practicing Judo a few years ago, we would do kata to work on moves. What is a kata you will ask? Basically, a kata is a set of training exercises in martial arts. He mentions writing a “Hello, world” as a kata. Later on he went on writing a bowling game one.
The thing is that to me, writing these sort of short programs never felt important in any way. They are just things when we get started with a language because the tutorial said so. The main advantage of practicing he mentions is what one would call muscle memory. You repeat moves to the point where your focus is not about the moves anymore. Your focus is set on the problem you are facing and the solution you are writing.
I never thought about writing little bits of code as a way to master my craft. Yet it does make sense. Look at Cristiano Ronaldo, the reason he has been going so strong year after year is not pure skill. It is practice and hard work. Indeed, his professionalism is praised by his peers. Yet we would not necessarily have the same dedication to improve our reflexes. To improve our productivity.
Practicing a suite of katas is a good way to learn hot keys and navigation idioms. It is also a good way to learn disciplines such as TDD and CI. But most importantly, it is a good way to drive common problem/solution pairs into your subconscious, so that you simply know how to solve them when facing them in real programming.
Robert Cecil “Uncle Bob” Martin
I like to think of myself as a decent programmer, developer, software engineer. Also, I do yearn to get better at what I do day after day. I read blog posts, books and listen to podcasts. I have even been exercising on a regular basis. Maybe the last bit in my continuous improvement is practicing kata. I am going to pick a kata. One that I will do everyday with the IDE and language I would be using at the time.
Since I joined my first consultancy a few months ago it feels like it will be beneficial to my growth. I will pick something easy enough that I can within an hour but complex enough to build an interesting solution. You can find your coding kata on the coding dojo and similar places. Have fun and see you next time.