Hacker News new | past | comments | ask | show | jobs | submit login

What about code katas?

I have five or so software designs that I've implemented several times for practice. A database, a bytecode VM, a serverside web framework etc.

I'm not so much porting them, rather trying my best to reimagine them in a new context. It helps me see similarities and differences between languages/platforms and find better ways to solve problems.

I've been practicing software for 35 years, martial arts for 25; every day I become more convinced that mastery is a journey, not a goal.




I don't have 35 years of experience in software development, yet, so I may be totally out of depth here.

In this case, I think it's not the re-implementation that matters; rather, you have learned some new things and you applied the new knowledge into practice. You're actively comparing different contexts and tools. That's kinda different from what the original comment said about doing it the Karate Kid way.

Secondly, implementing a database/VM/frame work is not something I'd call practicing a skill. It's a pretty sizeable project, at least one semester worth for an undergraduate course. It takes a multitude of skills and knowledge to complete it.

Personally, I think my software development has benefit mostly from solving (real, not hypothetical) problems and reading how others have solved problems. I've hardly used repetition intentionally, except when I'm learning a new language/framework and need to get over the unfamiliarity.

I also practice the violin every day, but it's so much more than repeating of a few exercises. I can say confidently that no one can learn the violin by rote, to any level of success.


I've played some guitar, it's not so much rote learning I'm trying to describe as spontaneously playing riffs; whatever that means on a violin...

I enjoy every step of the way and I'll switch or drop any project without missing a beat as soon as they become boring for whatever reasons. I think a big part of the fear of starting projects is really issues with dropping things.

In a way my katas are the problems I'm currently grappling with, and have for some time; they're sort of where you end up when you've tried writing most kinds of code. And seeing them from different angles and starting over and over again is the most effective way I've found to figure them out.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: