This post is a sequel to “The Polyglot Developer“, another blog post I recently wrote. If you haven’t read it yet, I can recommend reading it first. It will give you a better insight in my way of thinking.
It’s not that I don’t like code katas. On the contrary, there are two scenarios for which I really like to use code katas:
- When learning a new language
- To take my language skills to a higher level, most of the time, in a very particular area.
But that doesn’t mean code katas are a panacea.
What bothers me about code katas is that I’ve seen people spending all their extra energy on them. Don’t get me wrong; it’s good to have in-depth language skills. But what if you have spent days on optimising the code of a backend method to get latency down by eight milliseconds? What is the value of that achievement? Especially, if you could have achieved a tenfold of that number with less effort by just putting a CDN in front of your application!? The solution is not always in code, sometimes it's more about architecture or maybe tweaking the write concern of a database...
Instead of taking a deep dive, it could be better to gain broader knowledge first.
If all you know is a single language and a single architecture, then I would advise against sorting out every nitty-gritty detail of that langue. At that point, I think there’s more value in gathering information about other architectures, get familial wit Microservices,(Immutable) infrastructure, Chaos engineering, .... or just another language 😄.
The danger of knowing a single thing is tunnel vision or making yourself guilty to over-usage. Or Like Abraham Maslow said: "I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail”.
It’s not a bad thing to use code katas to become a specialist but don’t forget to broaden your horizon in the meantime.
Enjoy and until next time!