# 1. Beginner

* Personal Skills
  * [Learn to Debug](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/01-learn-to-debug)
  * [How to Debug by Splitting the Problem Space](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/02-how-to-debug-by-splitting-the-problem-space)
  * [How to Remove an Error](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/03-how-to-remove-an-error)
  * [How to Debug Using a Log](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/04-how-to-debug-using-a-log)
  * [How to Understand Performance Problems](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/05-how-to-understand-performance-problems)
  * [How to Fix Performance Problems](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/06-how-to-fix-performance-problems)
  * [How to Optimize Loops](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/07-how-to-optimize-loops)
  * [How to Deal with I/O Expense](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/08-how-to-deal-with-io-expense)
  * [How to Manage Memory](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/09-how-to-manage-memory)
  * [How to Deal with Intermittent Bugs](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/10-how-to-deal-with-intermittent-bugs)
  * [How to Learn Design Skills](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/11-how-to-learn-design-skills)
  * [How to Conduct Experiments](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/personal-skills/12-how-to-conduct-experiments)
* Team Skills
  * [Why Estimation is Important](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/01-why-estimation-is-important)
  * [How to Estimate Programming Time](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/02-how-to-estimate-programming-time)
  * [How to Find Out Information](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/03-how-to-find-out-information)
  * [How to Utilize People as Information Sources](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/04-how-to-utilize-people-as-information-sources)
  * [How to Document Wisely](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/05-how-to-document-wisely)
  * [How to Work with Poor Code](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/06-how-to-work-with-poor-code)
  * [How to Use Source Code Control](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/07-how-to-use-source-code-control)
  * [How to Unit Test](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/08-how-to-unit-test)
  * [Take Breaks when Stumped](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/09-take-breaks-when-stumped)
  * [How to Recognize When to Go Home](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/10-how-to-recognize-when-to-go-home)
  * [How to Deal with Difficult People](https://braydie.gitbook.io/how-to-be-a-programmer/jp/1-beginner/team-skills/11-how-to-deal-with-difficult-people)
