gitextract_tfytohv_/ ├── .gitignore ├── .idea/ │ ├── .gitignore │ ├── HowToBeAProgrammer.iml │ ├── misc.xml │ ├── modules.xml │ └── vcs.xml ├── 2-Intermediate/ │ └── Judgment/ │ └── 09-Design Patterns.md ├── LANGS.md ├── README.md ├── en/ │ ├── 1-Beginner/ │ │ ├── Personal-Skills/ │ │ │ ├── 01-Learn-To-Debug.md │ │ │ ├── 02-How-to-Debug-by-Splitting-the-Problem-Space.md │ │ │ ├── 03-How-to-Remove-an-Error.md │ │ │ ├── 04-How-to-Debug-Using-a-Log.md │ │ │ ├── 05-How-to-Understand-Performance-Problems.md │ │ │ ├── 06-How-to-Fix-Performance-Problems.md │ │ │ ├── 07-How-to-Optimize-Loops.md │ │ │ ├── 08-How-to-Deal-with-IO-Expense.md │ │ │ ├── 09-How-to-Manage-Memory.md │ │ │ ├── 10-How-to-Deal-with-Intermittent-Bugs.md │ │ │ ├── 11-How-to-Learn-Design-Skills.md │ │ │ └── 12-How-to-Conduct-Experiments.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-Why-Estimation-is-Important.md │ │ ├── 02-How-to-Estimate-Programming-Time.md │ │ ├── 03-How-to-Find-Out-Information.md │ │ ├── 04-How-to-Utilize-People-as-Information-Sources.md │ │ ├── 05-How-to-Document-Wisely.md │ │ ├── 06-How-to-Work-with-Poor-Code.md │ │ ├── 07-How-to-Use-Source-Code-Control.md │ │ ├── 08-How-to-Unit-Test.md │ │ ├── 09-Take-Breaks-when-Stumped.md │ │ ├── 10-How-to-Recognize-When-to-Go-Home.md │ │ └── 11-How-to-Deal-with-Difficult-People.md │ ├── 2-Intermediate/ │ │ ├── Judgment/ │ │ │ ├── 01-How-to-Tradeoff-Quality-Against-Development-Time.md │ │ │ ├── 02-How-to-Manage-Software-System-Dependence.md │ │ │ ├── 03-How-to-Decide-if-Software-is-Too-Immature.md │ │ │ ├── 04-How-to-Make-a-Buy-vs-Build-Decision.md │ │ │ ├── 05-How-to-Grow-Professionally.md │ │ │ ├── 06-How-to-Evaluate-Interviewees.md │ │ │ ├── 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md │ │ │ └── 08-How-to-Talk-to-Non-Engineers.md │ │ ├── Mentoring/ │ │ │ ├── How-To-Be-Mentored.md │ │ │ └── How-to-Mentor-Others.md │ │ ├── Personal-Skills/ │ │ │ ├── 01-How-to-Stay-Motivated.md │ │ │ ├── 02-How-to-be-Widely-Trusted.md │ │ │ ├── 03-How-to-Tradeoff-Time-vs-Space.md │ │ │ ├── 04-How-to-Stress-Test.md │ │ │ ├── 05-How-to-Balance-Brevity-and-Abstraction.md │ │ │ ├── 06-How-to-Learn-New-Skills.md │ │ │ ├── 07-Learn-to-Type.md │ │ │ ├── 08-How-to-Do-Integration-Testing.md │ │ │ ├── 09-Communication-Languages.md │ │ │ ├── 10-Heavy-Tools.md │ │ │ └── 11-How-to-analyze-data.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-How-to-Manage-Development-Time.md │ │ ├── 02-How-to-Manage-Third-Party-Software-Risks.md │ │ ├── 03-How-to-Manage-Consultants.md │ │ ├── 04-How-to-Communicate-the-Right-Amount.md │ │ └── 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md │ ├── 3-Advanced/ │ │ ├── Compromising-Wisely/ │ │ │ ├── 01-How-to-Fight-Schedule-Pressure.md │ │ │ ├── 02-How-to-Understand-the-User.md │ │ │ └── 03-How-to-Get-a-Promotion.md │ │ ├── README.md │ │ ├── Serving-Your-Team/ │ │ │ ├── 01-How-to-Develop-Talent.md │ │ │ ├── 02-How-to-Choose-What-to-Work-On.md │ │ │ ├── 03-How-to-Get-the-Most-From-Your-Teammates.md │ │ │ ├── 04-How-to-Divide-Problems-Up.md │ │ │ ├── 05-How-to-Handle-Boring-Tasks.md │ │ │ ├── 06-How-to-Gather-Support-for-a-Project.md │ │ │ ├── 07-How-to-Grow-a-System.md │ │ │ ├── 08-How-to-Communicate-Well.md │ │ │ ├── 09-How-to-Tell-People-Things-They-Dont-Want-to-Hear.md │ │ │ ├── 10-How-to-Deal-with-Managerial-Myths.md │ │ │ └── 11-How-to-Deal-with-Organizational-Chaos.md │ │ └── Technical-Judgment/ │ │ ├── 01-How-to-Tell-the-Hard-From-the-Impossible.md │ │ ├── 02-How-to-Utilize-Embedded-Languages.md │ │ └── 03-Choosing-Languages.md │ ├── 5-Bibliography.md │ ├── 6-History.md │ ├── 7-Contributions.md │ ├── GLOSSARY.md │ ├── LICENSE.md │ ├── README.md │ └── SUMMARY.md ├── es/ │ ├── 1-Beginner/ │ │ ├── Personal-Skills/ │ │ │ ├── 01-Learn-To-Debug.md │ │ │ ├── 02-How-to-Debug-by-Splitting-the-Problem-Space.md │ │ │ ├── 03-How-to-Remove-an-Error.md │ │ │ ├── 04-How-to-Debug-Using-a-Log.md │ │ │ ├── 05-How-to-Understand-Performance-Problems.md │ │ │ ├── 06-How-to-Fix-Performance-Problems.md │ │ │ ├── 07-How-to-Optimize-Loops.md │ │ │ ├── 08-How-to-Deal-with-IO-Expense.md │ │ │ ├── 09-How-to-Manage-Memory.md │ │ │ ├── 10-How-to-Deal-with-Intermittent-Bugs.md │ │ │ ├── 11-How-to-Learn-Design-Skills.md │ │ │ └── 12-How-to-Conduct-Experiments.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-Why-Estimation-is-Important.md │ │ ├── 02-How-to-Estimate-Programming-Time.md │ │ ├── 03-How-to-Find-Out-Information.md │ │ ├── 04-How-to-Utilize-People-as-Information-Sources.md │ │ ├── 05-How-to-Document-Wisely.md │ │ ├── 06-How-to-Work-with-Poor-Code.md │ │ ├── 07-How-to-Use-Source-Code-Control.md │ │ ├── 08-How-to-Unit-Test.md │ │ ├── 09-Take-Breaks-when-Stumped.md │ │ ├── 10-How-to-Recognize-When-to-Go-Home.md │ │ └── 11-How-to-Deal-with-Difficult-People.md │ ├── 2-Intermediate/ │ │ ├── Judgment/ │ │ │ ├── 01-How-to-Tradeoff-Quality-Against-Development-Time.md │ │ │ ├── 02-How-to-Manage-Software-System-Dependence.md │ │ │ ├── 03-How-to-Decide-if-Software-is-Too-Immature.md │ │ │ ├── 04-How-to-Make-a-Buy-vs-Build-Decision.md │ │ │ ├── 05-How-to-Grow-Professionally.md │ │ │ ├── 06-How-to-Evaluate-Interviewees.md │ │ │ ├── 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md │ │ │ └── 08-How-to-Talk-to-Non-Engineers.md │ │ ├── Personal-Skills/ │ │ │ ├── 01-How-to-Stay-Motivated.md │ │ │ ├── 02-How-to-be-Widely-Trusted.md │ │ │ ├── 03-How-to-Tradeoff-Time-vs-Space.md │ │ │ ├── 04-How-to-Stress-Test.md │ │ │ ├── 05-How-to-Balance-Brevity-and-Abstraction.md │ │ │ ├── 06-How-to-Learn-New-Skills.md │ │ │ ├── 07-Learn-to-Type.md │ │ │ ├── 08-How-to-Do-Integration-Testing.md │ │ │ ├── 09-Communication-Languages.md │ │ │ ├── 10-Heavy-Tools.md │ │ │ └── 11-How-to-analyze-data.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-How-to-Manage-Development-Time.md │ │ ├── 02-How-to-Manage-Third-Party-Software-Risks.md │ │ ├── 03-How-to-Manage-Consultants.md │ │ ├── 04-How-to-Communicate-the-Right-Amount.md │ │ └── 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md │ ├── 3-Advanced/ │ │ ├── Compromising-Wisely/ │ │ │ ├── 01-How-to-Fight-Schedule-Pressure.md │ │ │ ├── 02-How-to-Understand-the-User.md │ │ │ └── 03-How-to-Get-a-Promotion.md │ │ ├── README.md │ │ ├── Serving-Your-Team/ │ │ │ ├── 01-How-to-Develop-Talent.md │ │ │ ├── 02-How-to-Choose-What-to-Work-On.md │ │ │ ├── 03-How-to-Get-the-Most-From-Your-Teammates.md │ │ │ ├── 04-How-to-Divide-Problems-Up.md │ │ │ ├── 05-How-to-Handle-Boring-Tasks.md │ │ │ ├── 06-How-to-Gather-Support-for-a-Project.md │ │ │ ├── 07-How-to-Grow-a-System.md │ │ │ ├── 08-How-to-Communicate-Well.md │ │ │ ├── 09-How-to-Tell-People-Things-They-Dont-Want-to-Hear.md │ │ │ ├── 10-How-to-Deal-with-Managerial-Myths.md │ │ │ └── 11-How-to-Deal-with-Organizational-Chaos.md │ │ └── Technical-Judgment/ │ │ ├── 01-How-to-Tell-the-Hard-From-the-Impossible.md │ │ ├── 02-How-to-Utilize-Embedded-Languages.md │ │ └── 03-Choosing-Languages.md │ ├── 5-Bibliography.md │ ├── 6-History.md │ ├── 7-Contributions.md │ ├── GLOSSARY.md │ ├── LICENSE.md │ ├── README.md │ └── SUMMARY.md ├── jp/ │ ├── 1-Beginner/ │ │ ├── Personal-Skills/ │ │ │ ├── 01-Learn-To-Debug.md │ │ │ ├── 02-How-to-Debug-by-Splitting-the-Problem-Space.md │ │ │ ├── 03-How-to-Remove-an-Error.md │ │ │ ├── 04-How-to-Debug-Using-a-Log.md │ │ │ ├── 05-How-to-Understand-Performance-Problems.md │ │ │ ├── 06-How-to-Fix-Performance-Problems.md │ │ │ ├── 07-How-to-Optimize-Loops.md │ │ │ ├── 08-How-to-Deal-with-IO-Expense.md │ │ │ ├── 09-How-to-Manage-Memory.md │ │ │ ├── 10-How-to-Deal-with-Intermittent-Bugs.md │ │ │ ├── 11-How-to-Learn-Design-Skills.md │ │ │ └── 12-How-to-Conduct-Experiments.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-Why-Estimation-is-Important.md │ │ ├── 02-How-to-Estimate-Programming-Time.md │ │ ├── 03-How-to-Find-Out-Information.md │ │ ├── 04-How-to-Utilize-People-as-Information-Sources.md │ │ ├── 05-How-to-Document-Wisely.md │ │ ├── 06-How-to-Work-with-Poor-Code.md │ │ ├── 07-How-to-Use-Source-Code-Control.md │ │ ├── 08-How-to-Unit-Test.md │ │ ├── 09-Take-Breaks-when-Stumped.md │ │ ├── 10-How-to-Recognize-When-to-Go-Home.md │ │ └── 11-How-to-Deal-with-Difficult-People.md │ ├── 2-Intermediate/ │ │ ├── Judgment/ │ │ │ ├── 01-How-to-Tradeoff-Quality-Against-Development-Time.md │ │ │ ├── 02-How-to-Manage-Software-System-Dependence.md │ │ │ ├── 03-How-to-Decide-if-Software-is-Too-Immature.md │ │ │ ├── 04-How-to-Make-a-Buy-vs-Build-Decision.md │ │ │ ├── 05-How-to-Grow-Professionally.md │ │ │ ├── 06-How-to-Evaluate-Interviewees.md │ │ │ ├── 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md │ │ │ └── 08-How-to-Talk-to-Non-Engineers.md │ │ ├── Personal-Skills/ │ │ │ ├── 01-How-to-Stay-Motivated.md │ │ │ ├── 02-How-to-be-Widely-Trusted.md │ │ │ ├── 03-How-to-Tradeoff-Time-vs-Space.md │ │ │ ├── 04-How-to-Stress-Test.md │ │ │ ├── 05-How-to-Balance-Brevity-and-Abstraction.md │ │ │ ├── 06-How-to-Learn-New-Skills.md │ │ │ ├── 07-Learn-to-Type.md │ │ │ ├── 08-How-to-Do-Integration-Testing.md │ │ │ ├── 09-Communication-Languages.md │ │ │ ├── 10-Heavy-Tools.md │ │ │ └── 11-How-to-analyze-data.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-How-to-Manage-Development-Time.md │ │ ├── 02-How-to-Manage-Third-Party-Software-Risks.md │ │ ├── 03-How-to-Manage-Consultants.md │ │ ├── 04-How-to-Communicate-the-Right-Amount.md │ │ └── 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md │ ├── 3-Advanced/ │ │ ├── Compromising-Wisely/ │ │ │ ├── 01-How-to-Fight-Schedule-Pressure.md │ │ │ ├── 02-How-to-Understand-the-User.md │ │ │ └── 03-How-to-Get-a-Promotion.md │ │ ├── README.md │ │ ├── Serving-Your-Team/ │ │ │ ├── 01-How-to-Develop-Talent.md │ │ │ ├── 02-How-to-Choose-What-to-Work-On.md │ │ │ ├── 03-How-to-Get-the-Most-From-Your-Teammates.md │ │ │ ├── 04-How-to-Divide-Problems-Up.md │ │ │ ├── 05-How-to-Handle-Boring-Tasks.md │ │ │ ├── 06-How-to-Gather-Support-for-a-Project.md │ │ │ ├── 07-How-to-Grow-a-System.md │ │ │ ├── 08-How-to-Communicate-Well.md │ │ │ ├── 09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md │ │ │ ├── 09-How-to-Tell-People-Things-They-Dont-Want-to-Hear.md │ │ │ ├── 10-How-to-Deal-with-Managerial-Myths.md │ │ │ └── 11-How-to-Deal-with-Organizational-Chaos.md │ │ └── Technical-Judgment/ │ │ ├── 01-How-to-Tell-the-Hard-From-the-Impossible.md │ │ ├── 02-How-to-Utilize-Embedded-Languages.md │ │ └── 03-Choosing-Languages.md │ ├── 5-Bibliography.md │ ├── 6-History.md │ ├── 7-Contributions.md │ ├── GLOSSARY.md │ ├── LICENSE.md │ ├── README.md │ └── SUMMARY.md ├── ru/ │ ├── 1-Beginner/ │ │ ├── Personal-Skills/ │ │ │ ├── 01-Learn-To-Debug.md │ │ │ ├── 02-How-to-Debug-by-Splitting-the-Problem-Space.md │ │ │ ├── 03-How-to-Remove-an-Error.md │ │ │ ├── 04-How-to-Debug-Using-a-Log.md │ │ │ ├── 05-How-to-Understand-Performance-Problems.md │ │ │ ├── 06-How-to-Fix-Performance-Problems.md │ │ │ ├── 07-How-to-Optimize-Loops.md │ │ │ ├── 08-How-to-Deal-with-IO-Expense.md │ │ │ ├── 09-How-to-Manage-Memory.md │ │ │ ├── 10-How-to-Deal-with-Intermittent-Bugs.md │ │ │ ├── 11-How-to-Learn-Design-Skills.md │ │ │ └── 12-How-to-Conduct-Experiments.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-Why-Estimation-is-Important.md │ │ ├── 02-How-to-Estimate-Programming-Time.md │ │ ├── 03-How-to-Find-Out-Information.md │ │ ├── 04-How-to-Utilize-People-as-Information-Sources.md │ │ ├── 05-How-to-Document-Wisely.md │ │ ├── 06-How-to-Work-with-Poor-Code.md │ │ ├── 07-How-to-Use-Source-Code-Control.md │ │ ├── 08-How-to-Unit-Test.md │ │ ├── 09-Take-Breaks-when-Stumped.md │ │ ├── 10-How-to-Recognize-When-to-Go-Home.md │ │ └── 11-How-to-Deal-with-Difficult-People.md │ ├── 2-Intermediate/ │ │ ├── Judgment/ │ │ │ ├── 01-How-to-Tradeoff-Quality-Against-Development-Time.md │ │ │ ├── 02-How-to-Manage-Software-System-Dependence.md │ │ │ ├── 03-How-to-Decide-if-Software-is-Too-Immature.md │ │ │ ├── 04-How-to-Make-a-Buy-vs-Build-Decision.md │ │ │ ├── 05-How-to-Grow-Professionally.md │ │ │ ├── 06-How-to-Evaluate-Interviewees.md │ │ │ ├── 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md │ │ │ └── 08-How-to-Talk-to-Non-Engineers.md │ │ ├── Personal-Skills/ │ │ │ ├── 01-How-to-Stay-Motivated.md │ │ │ ├── 02-How-to-be-Widely-Trusted.md │ │ │ ├── 03-How-to-Tradeoff-Time-vs-Space.md │ │ │ ├── 04-How-to-Stress-Test.md │ │ │ ├── 05-How-to-Balance-Brevity-and-Abstraction.md │ │ │ ├── 06-How-to-Learn-New-Skills.md │ │ │ ├── 07-Learn-to-Type.md │ │ │ ├── 08-How-to-Do-Integration-Testing.md │ │ │ ├── 09-Communication-Languages.md │ │ │ ├── 10-Heavy-Tools.md │ │ │ └── 11-How-to-analyze-data.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-How-to-Manage-Development-Time.md │ │ ├── 02-How-to-Manage-Third-Party-Software-Risks.md │ │ ├── 03-How-to-Manage-Consultants.md │ │ ├── 04-How-to-Communicate-the-Right-Amount.md │ │ └── 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md │ ├── 3-Advanced/ │ │ ├── Compromising-Wisely/ │ │ │ ├── 01-How-to-Fight-Schedule-Pressure.md │ │ │ ├── 02-How-to-Understand-the-User.md │ │ │ └── 03-How-to-Get-a-Promotion.md │ │ ├── README.md │ │ ├── Serving-Your-Team/ │ │ │ ├── 01-How-to-Develop-Talent.md │ │ │ ├── 02-How-to-Choose-What-to-Work-On.md │ │ │ ├── 03-How-to-Get-the-Most-From-Your-Teammates.md │ │ │ ├── 04-How-to-Divide-Problems-Up.md │ │ │ ├── 05-How-to-Handle-Boring-Tasks.md │ │ │ ├── 06-How-to-Gather-Support-for-a-Project.md │ │ │ ├── 07-How-to-Grow-a-System.md │ │ │ ├── 08-How-to-Communicate-Well.md │ │ │ ├── 09-How-to-Tell-People-Things-They-Dont-Want-to-Hear.md │ │ │ ├── 10-How-to-Deal-with-Managerial-Myths.md │ │ │ └── 11-How-to-Deal-with-Organizational-Chaos.md │ │ └── Technical-Judgment/ │ │ ├── 01-How-to-Tell-the-Hard-From-the-Impossible.md │ │ ├── 02-How-to-Utilize-Embedded-Languages.md │ │ └── 03-Choosing-Languages.md │ ├── 5-Bibliography.md │ ├── 6-History.md │ ├── 7-Contributions.md │ ├── GLOSSARY.md │ ├── LICENSE.md │ ├── README.md │ └── SUMMARY.md ├── zh/ │ ├── 1-Beginner/ │ │ ├── Personal-Skills/ │ │ │ ├── 01-Learn-To-Debug.md │ │ │ ├── 02-How-to-Debug-by-Splitting-the-Problem-Space.md │ │ │ ├── 03-How-to-Remove-an-Error.md │ │ │ ├── 04-How-to-Debug-Using-a-Log.md │ │ │ ├── 05-How-to-Understand-Performance-Problems.md │ │ │ ├── 06-How-to-Fix-Performance-Problems.md │ │ │ ├── 07-How-to-Optimize-Loops.md │ │ │ ├── 08-How-to-Deal-with-IO-Expense.md │ │ │ ├── 09-How-to-Manage-Memory.md │ │ │ ├── 10-How-to-Deal-with-Intermittent-Bugs.md │ │ │ ├── 11-How-to-Learn-Design-Skills.md │ │ │ └── 12-How-to-Conduct-Experiments.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-Why-Estimation-is-Important.md │ │ ├── 02-How-to-Estimate-Programming-Time.md │ │ ├── 03-How-to-Find-Out-Information.md │ │ ├── 04-How-to-Utilize-People-as-Information-Sources.md │ │ ├── 05-How-to-Document-Wisely.md │ │ ├── 06-How-to-Work-with-Poor-Code.md │ │ ├── 07-How-to-Use-Source-Code-Control.md │ │ ├── 08-How-to-Unit-Test.md │ │ ├── 09-Take-Breaks-when-Stumped.md │ │ ├── 10-How-to-Recognize-When-to-Go-Home.md │ │ └── 11-How-to-Deal-with-Difficult-People.md │ ├── 2-Intermediate/ │ │ ├── Judgment/ │ │ │ ├── 01-How-to-Tradeoff-Quality-Against-Development-Time.md │ │ │ ├── 02-How-to-Manage-Software-System-Dependence.md │ │ │ ├── 03-How-to-Decide-if-Software-is-Too-Immature.md │ │ │ ├── 04-How-to-Make-a-Buy-vs-Build-Decision.md │ │ │ ├── 05-How-to-Grow-Professionally.md │ │ │ ├── 06-How-to-Evaluate-Interviewees.md │ │ │ ├── 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md │ │ │ └── 08-How-to-Talk-to-Non-Engineers.md │ │ ├── Personal-Skills/ │ │ │ ├── 01-How-to-Stay-Motivated.md │ │ │ ├── 02-How-to-be-Widely-Trusted.md │ │ │ ├── 03-How-to-Tradeoff-Time-vs-Space.md │ │ │ ├── 04-How-to-Stress-Test.md │ │ │ ├── 05-How-to-Balance-Brevity-and-Abstraction.md │ │ │ ├── 06-How-to-Learn-New-Skills.md │ │ │ ├── 07-Learn-to-Type.md │ │ │ ├── 08-How-to-Do-Integration-Testing.md │ │ │ ├── 09-Communication-Languages.md │ │ │ ├── 10-Heavy-Tools.md │ │ │ └── 11-How-to-analyze-data.md │ │ ├── README.md │ │ └── Team-Skills/ │ │ ├── 01-How-to-Manage-Development-Time.md │ │ ├── 02-How-to-Manage-Third-Party-Software-Risks.md │ │ ├── 03-How-to-Manage-Consultants.md │ │ ├── 04-How-to-Communicate-the-Right-Amount.md │ │ └── 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md │ ├── 3-Advanced/ │ │ ├── Compromising-Wisely/ │ │ │ ├── 01-How-to-Fight-Schedule-Pressure.md │ │ │ ├── 02-How-to-Understand-the-User.md │ │ │ └── 03-How-to-Get-a-Promotion.md │ │ ├── README.md │ │ ├── Serving-Your-Team/ │ │ │ ├── 01-How-to-Develop-Talent.md │ │ │ ├── 02-How-to-Choose-What-to-Work-On.md │ │ │ ├── 03-How-to-Get-the-Most-From-Your-Teammates.md │ │ │ ├── 04-How-to-Divide-Problems-Up.md │ │ │ ├── 05-How-to-Handle-Boring-Tasks.md │ │ │ ├── 06-How-to-Gather-Support-for-a-Project.md │ │ │ ├── 07-How-to-Grow-a-System.md │ │ │ ├── 08-How-to-Communicate-Well.md │ │ │ ├── 09-How-to-Tell-People-Things-They-Dont-Want-to-Hear.md │ │ │ ├── 10-How-to-Deal-with-Managerial-Myths.md │ │ │ └── 11-How-to-Deal-with-Organizational-Chaos.md │ │ └── Technical-Judgment/ │ │ ├── 01-How-to-Tell-the-Hard-From-the-Impossible.md │ │ ├── 02-How-to-Utilize-Embedded-Languages.md │ │ └── 03-Choosing-Languages.md │ ├── 4-Glossary.md │ ├── 5-Bibliography.md │ ├── 6-History.md │ ├── 7-Contributions.md │ ├── LICENSE.md │ ├── README.md │ └── SUMMARY.md └── zh-traditional/ ├── 1-Beginner/ │ ├── Personal-Skills/ │ │ ├── 01-Learn-To-Debug.md │ │ ├── 02-How-to-Debug-by-Splitting-the-Problem-Space.md │ │ ├── 03-How-to-Remove-an-Error.md │ │ ├── 04-How-to-Debug-Using-a-Log.md │ │ ├── 05-How-to-Understand-Performance-Problems.md │ │ ├── 06-How-to-Fix-Performance-Problems.md │ │ ├── 07-How-to-Optimize-Loops.md │ │ ├── 08-How-to-Deal-with-IO-Expense.md │ │ ├── 09-How-to-Manage-Memory.md │ │ ├── 10-How-to-Deal-with-Intermittent-Bugs.md │ │ ├── 11-How-to-Learn-Design-Skills.md │ │ └── 12-How-to-Conduct-Experiments.md │ ├── README.md │ └── Team-Skills/ │ ├── 01-Why-Estimation-is-Important.md │ ├── 02-How-to-Estimate-Programming-Time.md │ ├── 03-How-to-Find-Out-Information.md │ ├── 04-How-to-Utilize-People-as-Information-Sources.md │ ├── 05-How-to-Document-Wisely.md │ ├── 06-How-to-Work-with-Poor-Code.md │ ├── 07-How-to-Use-Source-Code-Control.md │ ├── 08-How-to-Unit-Test.md │ ├── 09-Take-Breaks-when-Stumped.md │ ├── 10-How-to-Recognize-When-to-Go-Home.md │ └── 11-How-to-Deal-with-Difficult-People.md ├── 2-Intermediate/ │ ├── Judgment/ │ │ ├── 01-How-to-Tradeoff-Quality-Against-Development-Time.md │ │ ├── 02-How-to-Manage-Software-System-Dependence.md │ │ ├── 03-How-to-Decide-if-Software-is-Too-Immature.md │ │ ├── 04-How-to-Make-a-Buy-vs-Build-Decision.md │ │ ├── 05-How-to-Grow-Professionally.md │ │ ├── 06-How-to-Evaluate-Interviewees.md │ │ ├── 07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md │ │ └── 08-How-to-Talk-to-Non-Engineers.md │ ├── Personal-Skills/ │ │ ├── 01-How-to-Stay-Motivated.md │ │ ├── 02-How-to-be-Widely-Trusted.md │ │ ├── 03-How-to-Tradeoff-Time-vs-Space.md │ │ ├── 04-How-to-Stress-Test.md │ │ ├── 05-How-to-Balance-Brevity-and-Abstraction.md │ │ ├── 06-How-to-Learn-New-Skills.md │ │ ├── 07-Learn-to-Type.md │ │ ├── 08-How-to-Do-Integration-Testing.md │ │ ├── 09-Communication-Languages.md │ │ ├── 10-Heavy-Tools.md │ │ └── 11-How-to-analyze-data.md │ ├── README.md │ └── Team-Skills/ │ ├── 01-How-to-Manage-Development-Time.md │ ├── 02-How-to-Manage-Third-Party-Software-Risks.md │ ├── 03-How-to-Manage-Consultants.md │ ├── 04-How-to-Communicate-the-Right-Amount.md │ └── 05-How-to-Disagree-Honestly-and-Get-Away-with-It.md ├── 3-Advanced/ │ ├── Compromising-Wisely/ │ │ ├── 01-How-to-Fight-Schedule-Pressure.md │ │ ├── 02-How-to-Understand-the-User.md │ │ └── 03-How-to-Get-a-Promotion.md │ ├── README.md │ ├── Serving-Your-Team/ │ │ ├── 01-How-to-Develop-Talent.md │ │ ├── 02-How-to-Choose-What-to-Work-On.md │ │ ├── 03-How-to-Get-the-Most-From-Your-Teammates.md │ │ ├── 04-How-to-Divide-Problems-Up.md │ │ ├── 05-How-to-Handle-Boring-Tasks.md │ │ ├── 06-How-to-Gather-Support-for-a-Project.md │ │ ├── 07-How-to-Grow-a-System.md │ │ ├── 08-How-to-Communicate-Well.md │ │ ├── 09-How-to-Tell-People-Things-They-Dont-Want-to-Hear.md │ │ ├── 10-How-to-Deal-with-Managerial-Myths.md │ │ └── 11-How-to-Deal-with-Organizational-Chaos.md │ └── Technical-Judgment/ │ ├── 01-How-to-Tell-the-Hard-From-the-Impossible.md │ ├── 02-How-to-Utilize-Embedded-Languages.md │ └── 03-Choosing-Languages.md ├── 4-Glossary.md ├── 5-Bibliography.md ├── 6-History.md ├── 7-Contributions.md ├── LICENSE.md ├── README.md └── SUMMARY.md