> For the complete documentation index, see [llms.txt](https://braydie.gitbook.io/how-to-be-a-programmer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://braydie.gitbook.io/how-to-be-a-programmer/en/summary.md).

# Summary

* [Beginner](/how-to-be-a-programmer/en/1-beginner.md)
  * Personal Skills
    * [Learn to Debug](/how-to-be-a-programmer/jp/1-beginner/personal-skills/01-learn-to-debug.md)
    * [How to Debug by Splitting the Problem Space](/how-to-be-a-programmer/jp/1-beginner/personal-skills/02-how-to-debug-by-splitting-the-problem-space.md)
    * [How to Remove an Error](/how-to-be-a-programmer/jp/1-beginner/personal-skills/03-how-to-remove-an-error.md)
    * [How to Debug Using a Log](/how-to-be-a-programmer/jp/1-beginner/personal-skills/04-how-to-debug-using-a-log.md)
    * [How to Understand Performance Problems](/how-to-be-a-programmer/jp/1-beginner/personal-skills/05-how-to-understand-performance-problems.md)
    * [How to Fix Performance Problems](/how-to-be-a-programmer/jp/1-beginner/personal-skills/06-how-to-fix-performance-problems.md)
    * [How to Optimize Loops](/how-to-be-a-programmer/jp/1-beginner/personal-skills/07-how-to-optimize-loops.md)
    * [How to Deal with I/O Expense](/how-to-be-a-programmer/jp/1-beginner/personal-skills/08-how-to-deal-with-io-expense.md)
    * [How to Manage Memory](/how-to-be-a-programmer/jp/1-beginner/personal-skills/09-how-to-manage-memory.md)
    * [How to Deal with Intermittent Bugs](/how-to-be-a-programmer/jp/1-beginner/personal-skills/10-how-to-deal-with-intermittent-bugs.md)
    * [How to Learn Design Skills](/how-to-be-a-programmer/jp/1-beginner/personal-skills/11-how-to-learn-design-skills.md)
    * [How to Conduct Experiments](/how-to-be-a-programmer/jp/1-beginner/personal-skills/12-how-to-conduct-experiments.md)
  * Team Skills
    * [Why Estimation is Important](/how-to-be-a-programmer/jp/1-beginner/team-skills/01-why-estimation-is-important.md)
    * [How to Estimate Programming Time](/how-to-be-a-programmer/jp/1-beginner/team-skills/02-how-to-estimate-programming-time.md)
    * [How to Find Out Information](/how-to-be-a-programmer/jp/1-beginner/team-skills/03-how-to-find-out-information.md)
    * [How to Utilize People as Information Sources](/how-to-be-a-programmer/jp/1-beginner/team-skills/04-how-to-utilize-people-as-information-sources.md)
    * [How to Document Wisely](/how-to-be-a-programmer/jp/1-beginner/team-skills/05-how-to-document-wisely.md)
    * [How to Work with Poor Code](/how-to-be-a-programmer/jp/1-beginner/team-skills/06-how-to-work-with-poor-code.md)
    * [How to Use Source Code Control](/how-to-be-a-programmer/jp/1-beginner/team-skills/07-how-to-use-source-code-control.md)
    * [How to Unit Test](/how-to-be-a-programmer/jp/1-beginner/team-skills/08-how-to-unit-test.md)
    * [Take Breaks when Stumped](/how-to-be-a-programmer/jp/1-beginner/team-skills/09-take-breaks-when-stumped.md)
    * [How to Recognize When to Go Home](/how-to-be-a-programmer/jp/1-beginner/team-skills/10-how-to-recognize-when-to-go-home.md)
    * [How to Deal with Difficult People](/how-to-be-a-programmer/jp/1-beginner/team-skills/11-how-to-deal-with-difficult-people.md)
* [Intermediate](/how-to-be-a-programmer/en/2-intermediate.md)
  * Personal Skills
    * [How to Stay Motivated](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/01-how-to-stay-motivated.md)
    * [How to be Widely Trusted](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/02-how-to-be-widely-trusted.md)
    * [How to Tradeoff Time vs. Space](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/03-how-to-tradeoff-time-vs-space.md)
    * [How to Stress Test](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/04-how-to-stress-test.md)
    * [How to Balance Brevity and Abstraction](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/05-how-to-balance-brevity-and-abstraction.md)
    * [How to Learn New Skills](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/06-how-to-learn-new-skills.md)
    * [Learn to Type](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/07-learn-to-type.md)
    * [How to Do Integration Testing](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/08-how-to-do-integration-testing.md)
    * [Communication Languages](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/09-communication-languages.md)
    * [Heavy Tools](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/10-heavy-tools.md)
    * [How to analyze data](/how-to-be-a-programmer/jp/2-intermediate/personal-skills/11-how-to-analyze-data.md)
  * Team Skills
    * [How to Manage Development Time](/how-to-be-a-programmer/jp/2-intermediate/team-skills/01-how-to-manage-development-time.md)
    * [How to Manage Third-Party Software Risks](/how-to-be-a-programmer/jp/2-intermediate/team-skills/02-how-to-manage-third-party-software-risks.md)
    * [How to Manage Consultants](/how-to-be-a-programmer/jp/2-intermediate/team-skills/03-how-to-manage-consultants.md)
    * [How to Communicate the Right Amount](/how-to-be-a-programmer/jp/2-intermediate/team-skills/04-how-to-communicate-the-right-amount.md)
    * [How to Disagree Honestly and Get Away with It](/how-to-be-a-programmer/jp/2-intermediate/team-skills/05-how-to-disagree-honestly-and-get-away-with-it.md)
  * Judgment
    * [How to Tradeoff Quality Against Development Time](/how-to-be-a-programmer/jp/2-intermediate/judgment/01-how-to-tradeoff-quality-against-development-time.md)
    * [How to Manage Software System Dependence](/how-to-be-a-programmer/jp/2-intermediate/judgment/02-how-to-manage-software-system-dependence.md)
    * [How to Decide if Software is Too Immature](/how-to-be-a-programmer/jp/2-intermediate/judgment/03-how-to-decide-if-software-is-too-immature.md)
    * [How to Make a Buy vs. Build Decision](/how-to-be-a-programmer/jp/2-intermediate/judgment/04-how-to-make-a-buy-vs-build-decision.md)
    * [How to Grow Professionally](/how-to-be-a-programmer/jp/2-intermediate/judgment/05-how-to-grow-professionally.md)
    * [How to Evaluate Interviewees](/how-to-be-a-programmer/jp/2-intermediate/judgment/06-how-to-evaluate-interviewees.md)
    * [How to Know When to Apply Fancy Computer Science](/how-to-be-a-programmer/jp/2-intermediate/judgment/07-how-to-know-when-to-apply-fancy-computer-science.md)
    * [How to Talk to Non-Engineers](/how-to-be-a-programmer/jp/2-intermediate/judgment/08-how-to-talk-to-non-engineers.md)
* [Advanced](/how-to-be-a-programmer/jp/3-advanced.md)
  * Technological Judgment
    * [How to Tell the Hard From the Impossible](/how-to-be-a-programmer/jp/3-advanced/technical-judgment/01-how-to-tell-the-hard-from-the-impossible.md)
    * [How to Utilize Embedded Languages](/how-to-be-a-programmer/jp/3-advanced/technical-judgment/02-how-to-utilize-embedded-languages.md)
    * [Choosing Languages](/how-to-be-a-programmer/jp/3-advanced/technical-judgment/03-choosing-languages.md)
  * Compromising Wisely
    * [How to Fight Schedule Pressure](/how-to-be-a-programmer/jp/3-advanced/compromising-wisely/01-how-to-fight-schedule-pressure.md)
    * [How to Understand the User](/how-to-be-a-programmer/jp/3-advanced/compromising-wisely/02-how-to-understand-the-user.md)
    * [How to Get a Promotion](/how-to-be-a-programmer/jp/3-advanced/compromising-wisely/03-how-to-get-a-promotion.md)
  * Serving Your Team
    * [How to Develop Talent](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/01-how-to-develop-talent.md)
    * [How to Choose What to Work On](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/02-how-to-choose-what-to-work-on.md)
    * [How to Get the Most From Your Team-mates](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/03-how-to-get-the-most-from-your-teammates.md)
    * [How to Divide Problems Up](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/04-how-to-divide-problems-up.md)
    * [How to Handle Boring Tasks](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/05-how-to-handle-boring-tasks.md)
    * [How to Gather Support for a Project](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/06-how-to-gather-support-for-a-project.md)
    * [How to Grow a System](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/07-how-to-grow-a-system.md)
    * [How to Communicate Well](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/08-how-to-communicate-well.md)
    * [How to Tell People Things They Don't Want to Hear](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/09-how-to-tell-people-things-they-dont-want-to-hear-1.md)
    * [How to Deal with Managerial Myths](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/10-how-to-deal-with-managerial-myths.md)
    * [How to Deal with Organizational Chaos](/how-to-be-a-programmer/jp/3-advanced/serving-your-team/11-how-to-deal-with-organizational-chaos.md)
* [Appendix A \* Bibliography/Websiteography](/how-to-be-a-programmer/jp/5-bibliography.md)
* [Appendix B \* History (As of January 2016)](/how-to-be-a-programmer/en/6-history.md)
* [Appendix C \* Contributions (As of January 2016)](/how-to-be-a-programmer/jp/7-contributions.md)
