# Содержание

* [Начинающий программист](/how-to-be-a-programmer/ru/1-beginner.md)
  * Личные навыки
    * [Научитесь отлаживать](/how-to-be-a-programmer/ru/1-beginner/personal-skills/01-learn-to-debug.md)
    * [Как отлаживать, разделяя пространство проблемы](/how-to-be-a-programmer/ru/1-beginner/personal-skills/02-how-to-debug-by-splitting-the-problem-space.md)
    * [Как устранять баги](/how-to-be-a-programmer/ru/1-beginner/personal-skills/03-how-to-remove-an-error.md)
    * [Как отлаживать, используя логи](/how-to-be-a-programmer/ru/1-beginner/personal-skills/04-how-to-debug-using-a-log.md)
    * [Как определять проблемы производительности](/how-to-be-a-programmer/ru/1-beginner/personal-skills/05-how-to-understand-performance-problems.md)
    * [Как устранять проблемы производительности](/how-to-be-a-programmer/ru/1-beginner/personal-skills/06-how-to-fix-performance-problems.md)
    * [Как оптимизировать циклы](/how-to-be-a-programmer/ru/1-beginner/personal-skills/07-how-to-optimize-loops.md)
    * [Как справиться с расходами на операции чтения и записи](/how-to-be-a-programmer/ru/1-beginner/personal-skills/08-how-to-deal-with-io-expense.md)
    * [Как управлять памятью](/how-to-be-a-programmer/ru/1-beginner/personal-skills/09-how-to-manage-memory.md)
    * [Как устранять плавающие баги](/how-to-be-a-programmer/ru/1-beginner/personal-skills/10-how-to-deal-with-intermittent-bugs.md)
    * [Как научиться проектировать программы](/how-to-be-a-programmer/ru/1-beginner/personal-skills/11-how-to-learn-design-skills.md)
    * [Как экспериментировать](/how-to-be-a-programmer/ru/1-beginner/personal-skills/12-how-to-conduct-experiments.md)
  * Командные навыки
    * [Почему важно оценивать задачи](/how-to-be-a-programmer/ru/1-beginner/team-skills/01-why-estimation-is-important.md)
    * [Как оценивать время на разработку](/how-to-be-a-programmer/ru/1-beginner/team-skills/02-how-to-estimate-programming-time.md)
    * [Как искать информацию](/how-to-be-a-programmer/ru/1-beginner/team-skills/03-how-to-find-out-information.md)
    * [Как спрашивать людей](/how-to-be-a-programmer/ru/1-beginner/team-skills/04-how-to-utilize-people-as-information-sources.md)
    * [Как документировать правильно](/how-to-be-a-programmer/ru/1-beginner/team-skills/05-how-to-document-wisely.md)
    * [Как работать с плохим кодом](/how-to-be-a-programmer/ru/1-beginner/team-skills/06-how-to-work-with-poor-code.md)
    * [Как использовать системы контроля версий](/how-to-be-a-programmer/ru/1-beginner/team-skills/07-how-to-use-source-code-control.md)
    * [Как писать юнит-тесты](/how-to-be-a-programmer/ru/1-beginner/team-skills/08-how-to-unit-test.md)
    * [Делайте перерывы, когда вы в тупике](/how-to-be-a-programmer/ru/1-beginner/team-skills/09-take-breaks-when-stumped.md)
    * [Как понять, когда идти домой](/how-to-be-a-programmer/ru/1-beginner/team-skills/10-how-to-recognize-when-to-go-home.md)
    * [Как вести себя с трудными людьми](/how-to-be-a-programmer/ru/1-beginner/team-skills/11-how-to-deal-with-difficult-people.md)
* [Программист среднего уровня](/how-to-be-a-programmer/ru/2-intermediate.md)
  * Личные навыки
    * [Как сохранять мотивацию](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/01-how-to-stay-motivated.md)
    * [Как заслужить доверие](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/02-how-to-be-widely-trusted.md)
    * [Как балансировать процессорное время и память](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/03-how-to-tradeoff-time-vs-space.md)
    * [Как проводить стресс-тестирование](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/04-how-to-stress-test.md)
    * [Как балансировать краткость и абстракцию](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/05-how-to-balance-brevity-and-abstraction.md)
    * [Как осваивать новые навыки](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/06-how-to-learn-new-skills.md)
    * [Научитесь печатать вслепую](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/07-learn-to-type.md)
    * [Как проводить интеграционное тестирование](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/08-how-to-do-integration-testing.md)
    * [Языки взаимодействия систем](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/09-communication-languages.md)
    * [Стандартные технологии](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/10-heavy-tools.md)
    * [Как анализировать данные](/how-to-be-a-programmer/ru/2-intermediate/personal-skills/11-how-to-analyze-data.md)
  * Командные навыки
    * [Как управлять временем разработки](/how-to-be-a-programmer/ru/2-intermediate/team-skills/01-how-to-manage-development-time.md)
    * [Как управлять рисками, связанными со сторонним программным обеспечением](/how-to-be-a-programmer/ru/2-intermediate/team-skills/02-how-to-manage-third-party-software-risks.md)
    * [Как руководить консультантами](/how-to-be-a-programmer/ru/2-intermediate/team-skills/03-how-to-manage-consultants.md)
    * [Как соизмерять количество общения](/how-to-be-a-programmer/ru/2-intermediate/team-skills/04-how-to-communicate-the-right-amount.md)
    * [Как честно выражать несогласие](/how-to-be-a-programmer/ru/2-intermediate/team-skills/05-how-to-disagree-honestly-and-get-away-with-it.md)
  * Экспертиза
    * [Как балансировать качество и время разработки](/how-to-be-a-programmer/ru/2-intermediate/judgment/01-how-to-tradeoff-quality-against-development-time.md)
    * [Как управлять зависимостями](/how-to-be-a-programmer/ru/2-intermediate/judgment/02-how-to-manage-software-system-dependence.md)
    * [Как оценивать стороннее программное обеспечение](/how-to-be-a-programmer/ru/2-intermediate/judgment/03-how-to-decide-if-software-is-too-immature.md)
    * [Как решить: покупать программу или писать свою](/how-to-be-a-programmer/ru/2-intermediate/judgment/04-how-to-make-a-buy-vs-build-decision.md)
    * [Как расти профессионально](/how-to-be-a-programmer/ru/2-intermediate/judgment/05-how-to-grow-professionally.md)
    * [Как проводить собеседования](/how-to-be-a-programmer/ru/2-intermediate/judgment/06-how-to-evaluate-interviewees.md)
    * [Как понять, когда применять высокие технологии](/how-to-be-a-programmer/ru/2-intermediate/judgment/07-how-to-know-when-to-apply-fancy-computer-science.md)
    * [Как разговаривать с неинженерами](/how-to-be-a-programmer/ru/2-intermediate/judgment/08-how-to-talk-to-non-engineers.md)
* [Продвинутый программист](/how-to-be-a-programmer/ru/3-advanced.md)
  * Техническая экспертиза
    * [Как отличить сложное от невозможного](/how-to-be-a-programmer/ru/3-advanced/technical-judgment/01-how-to-tell-the-hard-from-the-impossible.md)
    * [Как использовать встроенные языки](/how-to-be-a-programmer/ru/3-advanced/technical-judgment/02-how-to-utilize-embedded-languages.md)
    * [Выбор языка программирования](/how-to-be-a-programmer/ru/3-advanced/technical-judgment/03-choosing-languages.md)
  * Правильные компромиссы
    * [Как справляться с давлением графика](/how-to-be-a-programmer/ru/3-advanced/compromising-wisely/01-how-to-fight-schedule-pressure.md)
    * [Как понять пользователя](/how-to-be-a-programmer/ru/3-advanced/compromising-wisely/02-how-to-understand-the-user.md)
    * [Как получить повышение](/how-to-be-a-programmer/ru/3-advanced/compromising-wisely/03-how-to-get-a-promotion.md)
  * Управление командой
    * [Как развивать таланты](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/01-how-to-develop-talent.md)
    * [Как выбрать, над чем работать](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/02-how-to-choose-what-to-work-on.md)
    * [Как получить наибольшую отдачу от коллег](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/03-how-to-get-the-most-from-your-teammates.md)
    * [Как разделять задачи](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/04-how-to-divide-problems-up.md)
    * [Как распределять скучные задания](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/05-how-to-handle-boring-tasks.md)
    * [Как получить поддержку для проекта](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/06-how-to-gather-support-for-a-project.md)
    * [Как развивать систему](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/07-how-to-grow-a-system.md)
    * [Как качественно взаимодействовать](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/08-how-to-communicate-well.md)
    * [Как сообщать неприятное](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/09-how-to-tell-people-things-they-dont-want-to-hear.md)
    * [Как справляться с менеджерскими мифами](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/10-how-to-deal-with-managerial-myths.md)
    * [Как справляться с организационным хаосом](/how-to-be-a-programmer/ru/3-advanced/serving-your-team/11-how-to-deal-with-organizational-chaos.md)
* [Глоссарий](/how-to-be-a-programmer/ru/glossary.md)
* [Приложение A - Библиография/Список сайтов](/how-to-be-a-programmer/ru/5-bibliography.md)
* [Приложение B - История (на январь 2016)](/how-to-be-a-programmer/ru/6-history.md)
* [Приложение C - Участие в проекте (на январь 2016)](/how-to-be-a-programmer/ru/7-contributions.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://braydie.gitbook.io/how-to-be-a-programmer/ru/summary.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
