Learn for the long term
We live in a society today where every gain is targeted to be short term – this is obvious with apps like TikTok where you get instant gratification but the same is also true for learning (including software engineering skills). We are drowning in bootcamps to learn X, videos to become an expert of Y or articles teaching you everything about Z in a day.
The main issue with these intense classes/articles is that while you may learn something in the short term, very little will stick over time. Your brain needs time to process new information and deeply understand it – that’s also why learning by doing is more efficient than just reading articles, you naturally have more time to process information while performing actions.
For what it’s worth, this is pretty apparent in interviews in my experience. While I do not expect every candidate to be an expert in caching, network or any topic, it’s easy to separate those who just skimmed over an article and those who actually understand these domains. For example, candidates that had to deal with large scale systems relying on databases can talk clearly about when writes should be acknowledged, whether they need shards or replicas, or what happens when a replica goes down.
I personally recently had some issues with my remote dev machine (I’m dogfooding a new dev environment at Databricks) and had to recover some data from a borked machine. I haven’t tinkered with a linux machine for quite a while now (~10 years? I’m using a macbook now and at Google everything used to just work) but I could still remember how to use fdisk/mount/df/etc. to recover my data. This knowledge is something I learned while playing with Linux a long time ago that stayed around – if I had just read an article about how to mount a disk 10 years ago and never did it, I would not have been able to perform such operations today.
So rather than just reading many short articles on every possible domain, take the time to learn a few things well that will stay with you. For example codingchallenges.fyi (from John Crickett) is a pretty interesting place to learn for the long term – looking at the calculator question, you get to understand (and implement) parsing and interpreting expressions. If you actually implement it once, it will likely stick with you forever – I personally still remember very similar code patterns/implementations from 15 years ago.