Building A Second Brain is a methodology for saving and systematically reminding us of the ideas, inspirations, insights, and connections we’ve gained through our experience. It expands our memory and our intellect using the modern tools of technology and networks. (source)
— Tiago Forte
The Challenge
Have you felt the following challenges?
- Where do I start the preparation of an interview?
- When am I done with the preparation and ready for the interview?
- What do I review the night before the interview?
Below I’ll show you how you can systematically prepare for interviews with the help of “Building a Second Brain” methodology and walk in to the interviews with ease and confidence.
The Strategies
#1: Use a Sharp Tool for the Hard Job
Building a Second Brain: Interviews cover a much broader scope of knowledge and experience than what you need during daily work. Using the right tool to help you organize the preparation will dramatically boost your efficiency. “Building a Second Brain” is a general tool for knowledge management. We can tailor that and create your interview specific “Second Brain”. The core idea of this powerful method is that you externalize your knowledge graph from your brain to external tools that maintain the graph like interconnection that is native to human brain’s model. This will free up your brain to do more high level strategic thinking.
The Tooling: You can use any of your favorite note taking tools like EverNote, OneNote, Google Site, Roam Research, etc., as long as it provides great search and linking capabilities. The choice of specific tool doesn’t matter match. It’s the way you organize your information that matters.
Weaving Like a Spider: So you picked your note taking tool. Where do you start building your “Second Brain” for interview preparation in the tool? Find some great interview experience blog posts and interview question lists. Add them in a special page in your “second brain” as the “queue”. Then you will act like a search engine spider (aka “crawler”). Read the first item on the top of the “queue”. If you find a small unit of info (e.g., a particular interview question, a particular concept/terminology, a particular coding problem, etc.), either create a new page/section (if not already existed) or add to an existing page/section of the same category, and write up your answers and analysis. If you find a link to another great blog post or web page that has lots of useful information that you can’t process in an hour or two, add that link to the bottom of the “queue” (you can also insert in the middle of the queue if you want to do more advanced prioritization). If you have a high quality set of initial blog posts or interview question lists as the seeds, your “crawler” system will efficiently cover the search space and build up your “Second Brain” notes system.
#2: Dive Deep
A personal story during my high school life: I grew up in a super competitive education system in China, where the overall college (including all colleges) admission rate was only 36% and top 150 colleges’ admission rate is only 4%. Perfecting test taking and nailing top scores becomes “sports”. Students spent ridiculous amount of hours practicing problem sets. Lots of them complete on the number of practice books they went through. I did it too initially and quickly found I was out-practiced left and right in terms of the quantity of problem sets completed. One reason is I felt the itch of the urge to understand the underlying principles and connection between different problem sets. I did a month of experiment of going on the opposite direction as my fellow students. Each morning, they bragged about 100, 200, 300 problems they completed. I did exactly 2 problem only, but I wrote 10 pages of notes and reflections about the 2 problems. Despite my fear of adopting the wrong strategy, I ended up improving my score in some mock test. So I continued the journey of going the opposite direction as my fellow students. At the end of the semester, instead of a huge pile of completed practice books, I had a big pile of deep dive notes on a small number of problems. The amazing things just got started. I found it less and less manageable to go through all those notes during reviews. So I started summarizing these notes. And then I further summarized the summaries. And in the end, I found myself just a couple pages highly condensed notes for each science subject like math, physical, and chemistry. The most beautiful note is the chemistry notes which just contains 2 diagrams connecting all elements and compounds. I redrew these 2 diagrams so many times to make the placement of each node and vertices perfect with the lease overlapping and best symmetry. The most brief note is the physics note which only contains 5 rules and a couple other bullet points. However, these were so powerful so that just by looking at these cheatsheet, 98% of the problems in the tests becomes so obvious and easy. That was my first time stumbling upon and experiencing the power of “deep dive thinking“.
After you created the “Second Brain” notes system, you are set to start preparing as you fill up the notes. In order to perform well at the interview, one important thing to do on top of the regular notes is “deep dive” notes that go beyond the solutions/answers and drill down to the underlying connections and principles of the topics.
Based on the “Fail Early Strategy“, after each interview, reflect on what went well and not so well, and incorporate richer learnings into your deep dive notes. This is the best way to minimize the repeating of the same mistakes over and over again and increase your chance to nail the interviews.
Project Retrospective Interviews: You will be asked to walk through a previous project in detail and the interviewer will drill down on specific areas. Write up the regular key points of the project using STAR (Situation, Task, Action, and Result) model. Then you can add the follow deep dive sections with concrete examples/stories for each of them:
- You specific roles in the project. Describe not only your activity, but also your accountability and goals. How did you set direction and mitigate risks?
- Key challenges in the project and the deep context and root cause of them. This helps you articulate why you think certain solutions work while others won’t.
- Main leadership principles you used and developed during this project. For Product Manager, Senior Engineer, and Engineering Manager roles, this is a must-have quality interviewers look for. For junior and mid-level engineers, this is a nice to have quality too.
- Your key behaviors that made you effective in this project. This cross reference the behavior questions in the next section below.
- Main learnings and takeaways you got from the project. It is super important to demonstrate growth mindset and the ability to learn fast. Anything you have done, especially the failures, is point of learnings.
- Reflection on what you’d do differently in future projects. Always look out for opportunity of improvement. Be specific and actionable in your articulation.
Behavior Interviews: You will be given either a hypothetical scenario or be asked to pick one of your previous projects to answer how you handle certain type of situations. This type of questions can be pretty wide spread out, so you can start with some nice list of top behavior questions and prepare for them. For example, this top 10 question list has sample answers to give you an idea of the answer, but you need to adapt with your own concrete examples. This is just an example and you need to collect more and spend a lot of time to write up, iterate, and practice.
You will notice this section will likely have overlapping with the project retrospective questions above, because those projects provide examples for behavior questions. You just need to have the write up in one place and link from the other place to avoid duplication.
Technical Interviews: You will be asked to explain a technical concept, solve a coding problem, or perform a system design. For technical concept problems, there is not much special interview techniques except for reading and deeply understanding how the thing works, why it is needed, what problem it solves, and what limitation it has. Use strategy #3 below to optimize memorization of these basics.
For coding problems, leetcode.com problem sets grew from a couple hundred to the north of 1800 as of now. For most people, it is not feasible to practice all of these problems in a high quality fashion. If you do leetcode practice full time 10 hours continuously per day, 7 days a week, at a speed of 2 problems per hour, it will take you 3 months to complete all the problems. Even if you managed to do that, you will likely find the actual interview question is a variant of leetcode problem, so you may still trip on it.
A more effective way is to organize problems into categories and deep dive the essence of solving the whole category of problems. For example, for DP (Dynamic Programming) problems, you can start with a couple classic problems to practice and get to optimal solutions. Then you analyze the commonalities in these problems and the solutions. You will notice “defining state that breaks down the problem into sub-problems of the same kind” is the key. You will also notice there are 2 patterns to implement the algorithm, namely top down and bottom up.
Don’t stop here. Deep dive further into the relationship among greedy, DP, and search algorithms. Compare the pros and cons of each and a decision framework how to pick the best for the particular problem.
At this point, you can go through the next set of 20 or so DP related problems and do the following light weight practice, reflect, update your “Second Brain” notes, and move on to other categories of problems util the next rotation.
- Analyze whether you should use DP or greedy or search? Why?
- If this is DP, define “state” and “sub-problems”.
- Write fast pseudo code for most of them.
- Only write actual code for 1 or 2 of them.
For system design problems, you will be asked to design either an end to end product or a scalable distributed backend service. I’ll not cover this wide topic here, except to point out a couple key deep dive strategy. This type of interview requires you to have deep system understanding and experience. Leverage some learning resources (e.g., Grokking the System Design Interview is a good class to take) to have a head start on the main technical knowledge points and the pattern to solve the problem.
The most important part is for you to deep dive into understanding the classes of patterns of problems and the right component to solve them. For example, the topic of “cache” is worth you spend 3+ hours to deep dive into the types of caches, the types of problem it best solve, recipe of end to end design from requirements to capacity estimate to operational readiness. Use your detailed notes against system design that involves caching to validate the effectiveness and completeness of your notes/framework and augment it as you reflect and collect new learning points.
For other types of interviews (e.g., product design for PM roles, estimation, code review), the way to apply deep dive with the help of “Second Brain” notes system is similar, so I’ll not go through all of them. The key is to spend quality time on deep understanding and identify patterns and solutions for a class of problems instead of individual ones.
#3: Utilize the Ebbinghaus Memory Curve for Your Advantage
The Memory Curve: Regardless of the roles you are interviewing for, there is certain portion of the expected memorization. Because unlike everyday work life, interviews will touch on very wide scope of knowledge within just a few hours where you don’t have access to reference materials (e.g., books, notes, Internet) in most cases, you will need to something specific about interview preparation. One of the best tools for memorization intensive part of the interview prep is the Ebbinghaus Memory Curve below.
Spaced Learning: The Ebbinghaus Memory Curve tells us the biggest drop in retention happens soon after learning, so if something you don’t use frequently at work but is likely covered by the interview, you only need to start the memorization practice during the last couple months before the interviews and you can use Spaced Learning method to maximize the retention of memory while minimizing the effort. The following diagram shows how you use Spaced Learning schedule to review something right away the next day, then 2 days later, then a week later, and then a month later, etc.
A Sample Spaced Learning Implementation: If you use flash cards to help your memorization, you can get a bunch of used big envelops to organize the batch. After you review a batch of flash cards, put them in an envelope, write down tomorrow’s date on the envelop for the 1st review, e.g., “1st Rev 6/1/2021”. Each day, you pull out the envelop with today’s date, review a batch, put them back in the envelop, cross off the date label (e.g., “1st Rev 6/1/2021”) and write down a new label (e.g., “2nd Rev 6/8/2021”). Then repeat this process. This is just an example and you can adapt it to digital organization system too.
Conclusion
Setup a sharp tool like “Second Brain” and practice “Deep Dive Thinking” while building up your interview preparation system. Once your “queue” of topics wind down and you feel you have cleared most of the mistakes using the “Fail Early and Cheaply” strategy, you can feel confident that you are ready for the interviews.
I’m curious how you think about the “deep thinking” method. Please leave your comment or questions below.