How to become a better programmer?
I would like to become a better programmer. By that I mean I would like to learn to write programs that solve more problems, give strong guarantees of correctness and are easier to understand. I know this is not what the market values the most and that’s ok. It’s more of a personal thing.
Ok but solving more problems, giving strong guarantees of correctness and being easy to understand aren’t precise enough to be goals. So first, what does it mean to solve more problems? Well if I can use the same code in many different situations then I would say it’s solving more problems. Now what does it mean to give strong guarantees of correctness? I mean explaining precisely what the code does and why it behaves like that in all cases. Also, given enough time, being able to write a machine-checked proof of this. Lastly if I can show my code to someone and have them tell me what it does, I would say that the code is easy to understand. Especially if a beginner could do it.
Derek from Veritasium uploaded a convincing video on what it takes to become an expert. He says that I need 4 things:
- Repeated attempts with feedback
- Valid environment
- Timely feedback
- Don’t get too confortable
No mystery in the first item. I just have to program a lot. To get the feedback I’ll use the criteria given in the second paragraph.
The second one is more subtle. It’s important because software doesn’t change, but the world changes out from under it. Nowadays it changes so fast that learning feels like running in a treadmill for my fellow programmers that chose to chase the hot new thing™. Of course that’s a decision that makes sense for them, but in my case it would be silly. For what I’m doing to make any sense, I have to build on top of something that changes very little. Like old standards and math.
To get feedback faster I’ll learn in public. To keep things challenging I’ll keep notes of how hard things feel.
So I think this is a good plan, let’s see how it goes :D