Action Items for Developing Your Toolbox

Understand Before Typing

  • Don’t copy-paste solutions. Understand the reasoning behind each line of code.

Pre-requisites

  • Make sure you have the prerequisite knowledge before attempting to solve problems.

First Attempt

  1. Pick a coding problem.
  2. Timebox your attempt to one hour.
  3. If stuck, refer to solutions and understand them.

Self-Questioning

  1. Ask yourself a set of predefined questions to understand your thought process and weaknesses.
  2. Note down your answers for review.

Data Structures

  1. Familiarize yourself with essential data structures like stack, queue, tree, graph, etc.
  2. Understand the pros and cons of each.

Building Skills

  1. Address gaps in your knowledge.
  2. Prioritize quality over quantity.

Problem Solving Strategies

  • Understand and practice key problem-solving strategies like Divide and Conquer, Dynamic Programming, etc.

Compare Solutions

  1. After solving a problem, compare your solution with others.
  2. Note down strengths, weaknesses, and insights.

Follow-up Questions

  • Prepare answers for potential follow-up questions related to test cases, time complexity, etc.

Approach

  1. Understand the problem.
  2. Tackle it on paper first.
  3. Test your solution.
  4. Reflect and iterate.

Quality of Work

  1. Focus on the depth of understanding.
  2. Keep track of mistakes and learn from them.

Note-taking

  1. Write down your thoughts during problem-solving.
  2. Review these notes regularly.

Refine Thinking

  1. Develop the skill of asking good questions.
  2. Write down these questions to clarify your thoughts.

First Principles Thinking

  1. Break down problems to their most basic elements.
  2. Question assumptions and innovate.

Reflection and Review

  1. Regularly review your progress.
  2. Reflect on your understanding and fill in knowledge gaps.

Each of these action items serves as a stepping stone for building a comprehensive toolbox for coding problem-solving. The toolbox is not just the technical skills but also includes soft skills like problem understanding, self-reflection, and quality assurance.