- Build Knowledge Structures
- Deliberate Practice
- 5 to 7 times every question and expand
- Constant Feedback
- By Topics and Review
- Listen and Clarification
- Example (big, non-special cases)
- Brute Force Solutions
- Optimize
- Improve Step by Step
- Think up all possible Solutions
- Walk through the solution
- Explain clearly
- Time and Space Complexity
- Code
- White board or computer
- Coding Style
- indentation, naming, variable naming
- Modularization
- Test Cases
- small and fast cases first
- edge case
- big test cases
- Naming - "Naming and Cache Failure"
- Camel Style Naming
- Python, Java
- snake_case
- C++
- Camel Style Naming
- Indentation
- Comments
- file comment at head
- TO DO
- parameter specification, function header
- type hint
- Test Habit
- function test
- do test case in mind
- edge case test
- stack overflow
- out of range situation
- negative case test
- invalid inputs
- function test
- Error Handling
- Use Return Value
- Use Global Variable
- Throw Error
- Robustness
- Defensive Programing
Suggestions
- leave blank lines (~20%)