So, anyone do code katas and like/recommend them? If so, what does it teach you? Do you do the same problem over and over, or tackle different problems?
So, anyone do code katas and like/recommend them? If so, what does it teach you? Do you do the same problem over and over, or tackle different problems?
When it comes to teaching it, the biggest hurdle is that you need to build a lot of small, unique exercises. This is still drilling, just now focusing on making the techniques flexible to different problems. I use the analogy of drilling technique in martial arts, but you could consider that training with a different partner to understand how the technique works with a new body type. The trick I've found useful is to collect a number of textbooks to review when thinking up practice ideas. If the textbook is good, it typically has "real world" examples modeled with the topic - for example, one I built the other day looked at creating bigrams from a list of words.
There's a SaaS that let's you do this https://typing.io/
Either way, yes, practicing code writing without solving coding problems does help learn CS concepts. I conceptualize it as some of the issues with CS/coding comes from "analysis paralysis" where you don't know what to do and even though you were told "use a loop", you don't really know what that means or are still struggling to know how to implement a loop. Drilling these lower level practices helps reduce that by saying "let's not worry about problem solving for a second, let's just focus on you getting comfortable with implementation". Then, there is less hesitation because the student knows "use a loop" means write out the syntax for the loop, THEN figure out what you want to loop.
And from my own work and Edwards, students enjoy these types of practices. They seem trivial to us experts, but they are appreciated by novices.
Leetcode solutions seem to be regularly "golfed" into being unreadable and intractable. Don't practice that!
At least in my experience, well-defined and functionally isolated coding challenges rarely happen at work, though.
Another skill you'll need to hone is listening to your userbase/business partners and translating what they're saying into actual specifications.
Doing this adequately is a prerequisite to success.
Doing this well (hearing what they need, separating the "need" from the "how", and being imaginative in what a clean implementation would look like) can both reduce what work is needed now, and set up future success to be more likely.
AMEN!