A few months back, I realized that I will learn deep learning better by working on real world projects as opposed to just doing exercises from a book. Then, when I wanted to go deeper into distributed systems, I decided to implement the algorithms to make them stick.
That wasn’t a bad idea. For example, I implemented consistent hashing and hierarchical timing wheels and it was a great way to learn. However, coding takes effort and I kept putting off more stuff, such as rate limiting or consensus algorithms, because of the heavy cognitive effort. In such situations, I get rigid about how I want to do something. When that idea stops working, I continue to stick to it at the cost of making further progress.
While it’s good to have a plan, I shouldn’t stick to them rigidly. Instead, focus more on making progress and ditch plans when they stop working. Moreover, on learning, it may be more important to actively engage with the material as opposed to code everything. For example, I could take notes, give a tech talk or explain to someone else.