Focus and Deep Work : This great article summarizes Cal Newport’s Deep Work lessons as well as teaches how to apply the Pomodoro Technique to level up one’s skills
Great article on long time perspective
Here is a great article that reminds me to make sure my short term actions align with my long term goals: Setting Priorities
How I Memorize with Understanding
Here are the steps I have been using to learn new algorithms, which is basically the same strategy as this.
- Pick a problem that shows up frequently in interviews from LeetCode
- Attempt to solve it
- After being stuck for too long, learn the ideal solution by doing the following steps
- Watch videos, i.e. Tushar Roy, Geeks for Geeks
- Read solutions from LeetCode especially the highest voted solutions
- Pick a solution and type it out. Add comments, change the variable names to names that are meaningful to me
- Attempt to solve this problem every day. What this really means is type out the solution every day until I either have it memorized and/or understand it so well that I don’t need to have it memorized, or some combination. Typing the code out every day is great because I am gaining exposure to the code feeling (typing), seeing, and hearing. I think this multi-sensory exposure also gets the information to my subconscious mind so it can spot patterns.
Doing this is key for certain common algorithms such as level-order traversal, iterative in pre and post order binary tree traversals, and also for understanding how to use recursion with base cases and recursive cases.
Object Oriented Design Resources
Here are some resources on Object Oriented Design:
- Principles of Object-Oriented Systems
- Learn Object-Oriented Design
- Object Oriented Design
- Practical Object-Oriented Design in Ruby by Sandi Metz
My current goal setting system
In the past I have tried many ways of keeping track of my goals including writing them down daily, using a mind map, Post It Notes, even trying out index cards and recording them and listening to them while exercising.
I don’t think there is a best system because I think the ideal goal system for each person will have to be built via try, fail, learn, and improve. Also what works today might not be optimal in the future.
My current system is to every day email myself my goals and to dos. To make them stick and to gain more commitment I paraphrase every goal and I also add due dates. I also add easy to dos to feel good and to take steps towards my goals.
I think the paraphrasing is beneficial to me because if I just read the goals I don’t really have to think about them, but if I try to force myself to write them by hand every day that would be too much work and I would quit after a few days. I feel like paraphrasing is a nice balance between commitment, work, and usefulness 🙂
Random communication tips
Here are a few communication tips that have benefited me:
- Ask 1. Who is my audience/listener? 2. What do I want him/her to think and/or feel? Based on these answers tailor my message/website/software etc.
- Be very meticulous about the requirements and goals of the software of system. This means asking many questions about the use cases or work flow.
- Use pen and paper to think, plan, brainstorm. Think on paper. Using just a pen and paper and jotting down 2-5 ideas can help me organize and plan better. The extreme version is something like the 20 Idea Method
Design Patterns Resources
Here are a few links that have helped me gain exposure to design patterns:
- Design Patterns Video Tutorial
- Design Patterns Tutorial
- Java Design Patterns
- Head First Design Patterns
I recently started learning from kudvenkat and he is a great teacher who provides clear, simple, and detailed explanations and examples. I am sure his series Design Patterns Videos are great as well.
Random Motivational Tips
Here are a few tips that have helped me on my journey
- Remember my purpose and long-term goal(s).
- Forget about my long-term purpose and goal(s). Instead focus on the next step, or even just doing a few seconds of the next step.
- Write, read, and paraphrase my to dos and goals regularly. I currently email myself my goals and to dos every day.
- When I feel overwhelmed thinking that there is too much to learn, that technology moves fast, I remind myself that is a great thing. The opposite is an industry or a job that never changes, which is mind-numbing and boring. Also new technology is constantly being created to solve problems better, faster, more easily (in theory 🙂
- When I watch an educational video and think to myself, “How can she/he possibly know all of this?” I remind myself, “It is great that she/he knows this and is teaching me. I can cut down on the learning curve by learning from this teacher.”
System Design Resources
Here are some great resources for learning System Design:
- System Design Primer
- Grokking the System Design Interview (PAID)
- Tushar Roy
- Hired In Tech
- Interview Bit
- High Scalability
- System design interview
To learn these I recommend: Learning by repetition and paraphrasing
Learning by repetition and paraphrasing
I have been learning material by using a combination of repetition and my variation of The Feynman Technique.
My strategy is to repeat the material in chunks, i.e. section 1, then section 1 and 2, then sections 1 through 3, sections 1 through 4, etc.
I try to paraphrase every sentence. Sometimes it’s I just reverse the sentences, sometimes I change them into a question and answer, and sometimes I just use synonyms for a word or for multiple words in the sentence.
I think this has been working for me because of the sheer number of repetitions, but also because I am actively engaging with the material, and I am jamming the information into my working memory. Furthermore, I am exposing myself to the material in many different ways because I probably paraphrase things slight differently each time.
I think if I get comfortable with the earlier sections, I might start reviewing from the later sections. For instance, if there are 10 sections, I might review section 10, then section 9 through 10, then 8 through 10, etc.
I think I can certain material into long term memory by using flash card software. Also for things that just have to be memorized, I can create pictures, patterns, stories, rhymes, or use memory techniques such as The Link Method.