This year instead of making a resolution, I followed Tim Ferris’s advice and did a post-game analysis, and asked what’s the one piece of advice I would give to myself a year ago.
Write down what you learned.
The number one piece of advice I’d give to anyone trying to pick up programming skills is to maintain a good toolkit. As a programmer, I’ve killed too much time trying to find the code that contained the solution to a particular problem, or re-working a solution, or scouring stack exchange. Every time you find a solution to a problem, write it down. These chunks of code that solve problems are your tools. Test them, refine them, and know where they are. Never waste time looking for your hammer or building a new one from scratch.
Now I keep a ‘flight checklist’ that contains a list of common errors as well as a style guide. I’ve mostly stopped making the mistakes that are on my checklist, and one day I’ll fill the checklist out extensively enough to have a low error rate and be a strong programmer. I have a ‘useful shell commands’ document containing useful one-liners. I also now keep a ‘road map’ which has a description of recently written codes. It’s easy to get confused about different versions of codes, but a road map makes it so I don’t have to waste thought on it. Keeping these checklists, roadmaps, one-liner catalogs, etc. already seems to be resulting in improvements.
Writing down what you learn isn’t specific to writing code. Keeping a journal is often recommended by experts for solving problems, improving mood, etc. But it occurred to me that just writing down what you learned each day is a simplified bang for your buck journal entry. Each day you absorb tons of information, and you gotta know the wheat from the chaff. Keeping with the metaphor, writing important things down results in a good harvest over time. Instead of progressively forgetting, you can look back periodically on your growing harvest as a reminder, and appreciate each kernel from a new angle.
I didn’t realize it then, but this was the whole reason I started this blog. A smart person told me I should keep a blog in order to consolidate ideas and get feedback. I don’t often post because I fear that my thoughts are either too obvious to bother publicizing, or that they’re interesting but that I won’t really know what I’m talking about. But these fears contradict the purpose of this blog, which is to consolidate, share, and facilitate the exchange of ideas in order to learn something. If my thoughts sound obvious, or if I look like a fool, at least I learned from it. Worst case scenario nobody reads what I write and then there’s nobody to be embarrassed in front of anyway.
In conclusion, this year I’ll write stuff down and do a better job of maintaining my metaphorical toolkit.