CodeKata
codekata.com · Personal blog · on HN since 2016
CodeKata is Dave Thomas's site of programming exercises that encourage deliberate practice, with essays on kata, kumite, and the Dreyfus skill model.
What HN saysCommenters suggest it as a way to learn programming by solving problems independently, and as an example of deliberate practice.
16HN people shared it
11linked it in comments
5stories submitted
7story points
9 months agolast shared
2016people per year2026
Most-shared posts
- 1CodeKata14 people · 6 points · first shared 2016 · discussion on HN
- 2Kata, Kumite, Koan, and Dreyfus1 people · 1 points · first shared 2023 · discussion on HN
- 3Kata04 data munging1 people · first shared 2021
What HN people wrote when they linked it
tedmiston · 2016-08-12
Personally I think you would learn more from solving algorithm puzzle problems independently than taking algorithms and analysis courses.
A couple that come to mind are Project Euler [1] and CodeKata [2].
The problem with most courses is that they teach the very basic types of data structures, a couple search algorithms, etc but not enough. They didn't give me the intuition I was looking for.
Alternatively, the most recommended books I've seen for your use case are _Programming Interviews Exposed_ (PIE) [3] and _Cracking the Coding Interview_ [4].
[1]: https://projecteuler.net/
[2]: http://codekata.com/
[3]: https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/…
[4]: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions…
xg15 · 2026-02-13
What do you mean with "how all this works"? Do you want to know how program code works, or how LLMs turn natural language into code?
For the former, I think some hand coding will get the best results.
A large part of "thinking like a programmer" is thinking about the sort of invisible structures that code will produce in a computer's memory when it runs - which is not the same as what's literally written in the code file. IMO, the best way to get a feel for that is to write code yourself, run it, examine the results, etc.
But writing code can be a rather dry activity if you don't have motivation for what to write. The usual vibe coded projects are probably too complex to hand code without experience. I think two good starting points could be Code Katas [1] or the Pico8 game engine [2] (and of course any good "intro to Python" or "intro to JavaScript" tutorial on the web)
--
For the latter, you could maybe start with the history of generative text models (like markov chains) and neural networks. Both technologies are several decades old and sort of form the very basic building blocks that made development of LLMs possible.
In particular, neural networks made use of the gradient descent and backpropagation algorithms that are still the basis of most LLM training processes - even if they might now run for months and take exabytes of training data.
Then there is of course the "Attention is all you need" paper that introduced the Transformer architecture - the kind of…
haasted · 2022-09-14
One approach would be picking a problem from a list of code katas, eg. http://codekata.com/
igouy · 2021-08-06
> Okay, I don't know the authors exact history here, but I seriously doubt that they've had anything that's even close to 10k hours of deliberate practice of programming.
Yes.
10,000 hours of code kata might be "10,000 hours of deliberate practice".
http://codekata.com/
And in-any-case "Malcolm Gladwell got us wrong: Our research was key to the 10,000-hour rule, but here's what got oversimplified"
https://www.salon.com/2016/04/10/malcolm_gladwell_got_us_wrong_our_res…
danesparza · 2021-03-31
Do you want to be a software developer still? (That isn't clear from your summary). If so, you need to learn better habits.
I suggest picking up a book on the subject, like "Code Complete" (at Amazon or wherever books are sold. Pretty sure it's at the library if you'd rather read it for free -- but it'll do better as a reference book on your desk for a few years). Use it and start practicing with personal projects hosted out of Github.
I also suggest using a daily practice like a code kata: http://codekata.com/
edimaudo · 2020-08-02
It will be a combination of things. Make sure you are getting enough sleep and exercise.
Pretty mind boggling that they are still asking brain teasers in interviews. If that is the type of question they are asking you can practice brain teaser and consulting type questions before an interview to.
Have a good grasp of the fundamentals of any subject matter before an interview. Practice is key.
Outside of that apply the concept of katas daily (http://codekata.com)
maplebed · 2018-09-26
There are a number of articles on this topic coming from the perspective of martial arts rather than music. Start at http://codekata.com and you’ll find good articles. (Note - I am not associated with codekata; just find the idea neat.)
metasean · 2017-06-27
This is similiar to goals of http://codekata.com/ except, this focuses on design, while Code Katas are more focused on algorithms.
ThatOtherPerson · 2016-10-06
How you do in technical interviews often has little to do with how good of a programmer you are. Modern technical interviews (in Silicon Valley, at least) tend to focus on a certain category of computer science and mathematical questions, rather than skills that would actually benefit an employer.
On the bright side, something of an industry has been built up around preparing people for tech company interviews (similar to the SAT prep industry). Check out Gayle McDowell's Cracking the Coding Interview[0], CodeKata[1], or Interview Cake[2].
[0] https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions…
[1] http://codekata.com/
[2] https://www.interviewcake.com/
mod · 2016-01-18
There's some similar things out there:
http://codekata.com/
Google "(language) koans"
Kinrany · 2021-08-13
I started a similar, though much less advanced project in the past. Here's a CLI that solves http://codekata.com/kata/kata04-data-munging/ written in Clojure, TypeScript, C# and Rust. The LoC are 36, 47, 88, 50.
https://github.com/Kinrany/katas/tree/main/kata02_codekata_data_mungin…