2021 Goal: Investing in Becoming a Better Programmer
I have a couple principles in life.
- Compound Interest
- Overtime, investing in yourself, assets, and others will generate astronomical value in the long run.
- You must be disciplined to do this every day.
- Compounding only works if you generate a little bit of value everyday and sustain to the long run.
- “The Person who works on the right problem at the right time in the right way is what counts and nothing else” - Richard Hamming.
- This is a hard truth, but doing big things is incredibly difficult and very difficult to succeed.
- 5 Year Plans.
- Since outsized success is incredibly hard, give yourself multiple opportunity to dive deep into a subject and swing for the fences. People will remember your home runs and forget your failures. 5 years is a balance between deep commitment and breaking up your life to have several dozens of opportunity to succeed.
Programming, at the end of the day is a tool to solve a problem. It’s a hammer, just an extremely complicated one. The best way to become better is to program a lot more, spend hours to learn to use this hammer. I’ve been talking to multiple of the best programmers I know, and they all program a lot: years on years, weeks on weeks, hours on hours a day, in the flow for up to 6 hours of deep focus.
I’m going to have to program a lot in my career, so investing in becoming a stellar programming will pay huge dividends in the long run. For 2021, my goal is to learn to become a better programmer.
I’ve created an mdbook: 2021 Learn Programming Notes and anyone can see what I am doing! I am planning to program a lot and have planned a topic I am interested for each of the 12 months.
- Svelte [Fun]
- Web Design
- Elixir [Fun]
- Project Estimation Skills
- Clojure [Fun]
- Being a CTO/Engineer Manager
- Recovery Oriented Computing
Additionally, I will spend a week each month to dive deep into AWS.
Having spent time talking to the best programmers I know, debugging, iteration speed, flow, and tooling were big things they talked about. Clojure seems like the best fit for these to invest into for the long run.
- Most of your time will be spend debugging. If perhaps 80% of your time is going to be spent debugging, this is the main bottleneck to optimize. Debugging is like a science experiment, you have to ask yourself, “Why is my program not working?” The best way to do this is to provide yourself a lot of evidence. Clojure is designed to be used interactively with quick feedback loops using it’s REPL (Real Eval Print Loop), where you are able to take segments of code and run them and gather evidence about what’s working and not working in your program. Additionally, it is functional and immutable first meaning you can often independently investigate one component of your project and run experiments without there being side effects in other components of your project.
- Iteration Speed
- Building quickly lets you learn quickly and experiment a lot. Successful projects have to go through several iterations of features before becoming successful and they are constantly updated and never finished. Clojure is dynamic and very concise, often letting you write and ship much faster than in other languages.
- The Truth is, to get good, you are going to have to program a lot and for long stretches of times. The best thing to do is to make this an enjoyable interactive craft and enter the flow state when time passes and the task is a fun challenging puzzle that makes you happy. Clojure helps keep you in this state by making the most frustrating part of debugging easier and more interactive, as well as feeling productive as you can create and release products quickly and easily.
- A trait of very effective engineers is they invest a lot into their tooling to become much faster over their career and often create their own tooling and automate repetitive tasks. The most common editor for Clojure is Emacs and CIDER, which will make me more efficient as a programmer. On the frontend, re-frame-10x gives you a lot of interactivity in development.
For those interested, here’s a good video demonstrating the interactivity and power of Clojure.
- EDIT 20-12-31. Initially I was gung ho on Clojure. Realistically, there are business needs that are more important than the language you use. PHP can get a website up in one file and gets the job done. It powers Facebook, Slack, Etsy, and they focus on business value, succeeding at their job. I still want to become a great programmer, but as Mark Slee puts it, he became really good when he started doing it 8+ hours a day.
Overall, I wish to spend time in 2021 to invest in becoming a more effective engineer. Both starting early and small changes in your compounding rate cause massive differences in the long run.Post by: Brian T. Liao