A month ago today I decided I would practice my coding skills, code was the sole requirement (test driven, of course). So reading or writing would not count towards reaching the goal. I haven’t been able to push it to this extreme as there are days when I barely created a new repository and went to bed, however, the experiment has been very interesting so far, this is what I want to talk about here. I’m logging this journey on my GitHub.
Up until this point I have only picked up random Kata’s from the most famous lists and executed them on my own terms and pace. There’s no absolute goal, such as finishing it in a time frame. Instead, I encouraged myself to try new things at every new challenge such as changing my naming style or the order I write the tests or even how deep refactorings should be. While practicing, I’m free from concern, something I would have never be able to reach at work.
You may be thinking that this is superficial and that if you follow best practices at work you’re probably covering the “get better every day” thing. While it’s true that you may be improving constantly, the knowledge you get is affected by external forces you may not be able to control, such as pressure, distractions or dealing with other people. When you’re able to control those, it’s easier to keep what you learn and to reflect on your flaws.
I experienced a few surprises along the way. I had a bunch of frustrating moments where I thought I would easily be able to provide a good solution right away or that I would finish a problem without using any conditional logic. I even tried pretending that I was being interviewed by someplace and I had to do things fast and nice. This was when imposters syndrome knocked on my door. At times I got shocked by my inability to perform how I wanted or how I figured I would and this is not because my ego was hurt or anything like that like I mentioned before, I was totally free from every concern, all I wanted was to learn.
What I learned and why I think you should try it
By practicing decision making every day, my ability to spot flaws in my train of thoughts improved slightly. I also noticed some expansion of my TDD abilities since I could take smaller/bigger steps at my will, examining the side effects of each and colliding my findings with my previous beliefs. I don’t usually deal with the sort of problems that a Kata is set to solve, it was good to confront some of the challenges, it definitely brought me out of my comfort zone.
I always struggled with doing frequent commits, this is something I have substantially improved at.
Whatever level you believe to be at this moment, I’m very positive that you would get a thing or two from doing this, for any period of time you want. Especially if you find that you’re weak at something, you can always bend a Kata to deal with your weakness and constant twist it to make it either easier or harder.
I’m definitely curious to see what will happen in 3 months, 6 months, a year. I want to shift away from Katas at some point and try some specific problems, maybe even try new languages. As long as I do it on a consistent basis, I can only get better.
Today is a sad day. Our industry lost one of the greatest, may you rest in peace Jerry Weinberg. It’s very unfortunate that I will never get to meet you, but I’ll carry your teachings for the rest of my life. Thank you so much!