Hacker News new | ask | show | jobs
by butt___hugger 1216 days ago
Reading that book a million times won't make you a master programmer. Reading it a few times will make you an intermediate (i.e. not a novice) programmer. But you become a master by solving many different problems many different ways, as opposed to solving the same problem the same way over and over.

I consider myself a master programmer because I have seen so many problems and solutions that there isn't a 1:1 connection between them. A diversity of problems and solutions means that you will see what underlying principles are common or contrasted between each approach. Then you can apply those basic axioms to make your own algorithms that are custom-suited to each problem.

I think a master programmer should have knowledge of the following areas:

- Something like Python (primarily dynamic types, primarily imperative)

- Something like Haskell (static types, purely functional)

- Something like Scheme (dynamic types, minimalism, lambda calculus)

- Something like Rust (static types, imperative, lower-level)

- Something like Prolog (logic programming, constraint-based)

- Something like Forth (stack and concatenative programming)

I would compare this to learning to be a chef. You can learn a lot of recipes from the best cookbook, but that just means you can cook a meal. To be an expert, you understand each component of the recipe and can mix-and-match, create substitutions, to create exactly what you want.

2 comments

First thing I thought after learning Haskell and Prolog was “where the hell is my enlightenment?”
As the Zen proverb goes, “Before enlightenment, chop wood and carry water. After enlightenment, chop wood and carry water.”
I don't think this applies. The proverb is a warning to those who haven't obtained enlightenment yet about how their daily, external life won't change once they do. The OP is saying they never obtained the promised enlightenment.

Edit: clarity

You didn't have any ? I'm still high on prolog and similar.
I recommend Rust as a day to day language, but for learning, I don't think Rust exposes you enough to the low level.