Как мы узнали из прошлых уроков, наставник не преподает студентам материалы Хекслета (или сторонние материалы). Он отвечает на вопросы и раскрывает различные темы в форме активностей. Однако, это вовсе не означает, что наставник ничему не учит своих студентов. То, что отличает Хекслет и как IT-компанию, и как школу программирования — это инженерная культура разработчика.
Знакомясь с материалами Хекслета, мы можем заметить, что конкретные инструменты предлагаются к изучению на довольно поздних этапах. Пока студент только начинает свой путь, мы помогаем ему научиться понимать суть решаемой проблемы и фундаментальные принципы программирования. И лишь после этого переходим к изучению устройства и предназначения готовых инструментов. Мы учим не столько конкретным языкам, сколько программированию в целом. Так мы формируем мышление будущих инженеров: учим работать в команде, задавать хорошие вопросы и находить хорошие решения для нестандартных задач. Наши коммуникации со студентами — это передача опыта и поддержка на равных: как в условиях команды, которая вместе работает над одним проектом.
Инженерная культура — это то, что невозможно передать через сухой текст или предзаписанное видео. Именно здесь начинается работа наставника, который своим примером показывает, как мыслит и действует хороший инженер.
Концепция виртуального офиса
Зачастую программисты одного проекта работают в общем пространстве — open space. Люди приходят на работу и уходят с нее в обусловленные часы, внутри царит дружеская, но рабочая атмосфера. Люди могут обмениваться мнениями в комнатах совещаний или проводить митапы на всю команду. Каждый участник команды сообщает о своем прогрессе работы на дейликах, а вся команда сдает проект по спринтам.
Хекслет — это виртуальный open space, где наставники исполняют роль тимлидов, а студенты растут от intern до senior как своими силами, так и с помощью окружающих. Студент с первого дня получает рабочие задачи, вовлекается в жизнь проекта и делает свой вклад в его развитие.
Наставник взаимодействует со студентами именно в такой среде, моделируя для них будущие условия работы в хорошей IT компании. Рассказы наставников из личной практики, публичные собеседования, совместное решение задач, воссоздание атрибутов реальной рабочей атмосферы — все это помогает студентам почувствовать применимость полученных ими знаний на практике.
Сроки и правила общения, которые обсуждались в предыдущих уроках, как раз и помогают нам сформировать такой виртуальный офис: с зонами ответственности, понятными процессами и предсказуемыми реакциями на то или иное действие. К сожалению (как и в реальной жизни) бывает, что из нашего виртуального офиса некоторых людей приходится убирать — если они не соблюдают установленные правила, ведут себя откровенно токсично или срывают рабочие процессы. Это касается как студентов, так и наставников.
Наставник помогает студентам достигать целей
Как правило, студенты приходят на курсы, чтобы решить какую-то конкретную личную проблему. Смена сферы деятельности, повышение квалификации, освоение нового хобби — это наиболее частые причины покупки курсов. Наставник же выступает в роли человека, который уже прошел этот путь. Мы уже знаем, какие грабли ожидают студента на этом пути, какие цели достижимы, а какие стоит переосмыслить. Наставник становится для студента своего рода инструментом для достижения поставленных целей.
Иногда мы можем столкнуться со сложными студентами. Некоторым из них даже хочется сказать «это не твое». Но говорить так нам, конечно же, не следует. Такие студенты в силу личных обстоятельств либо не достигают поставленных целей совсем, либо это занимает у них в разы больше времени и сил, чем ожидалось на старте. Корректировка целей и сроков в подобной ситуации — абсолютно нормальная практика. При всей важности эмпатии, проблемы и сложности студентов не следует «пропускать через себя»: это только приведет нас к фрустрации и выгоранию. Гораздо более продуктивным шагом станет пересмотр стратегии обучения и обсуждение ситуации с куратором.
Иногда студенты в процессе обучения словно «забывают», зачем они пришли учиться изначально и ставят перед собой цели вроде «отучиться за N месяцев» или «решить все задачи на Хекслете и только без подсказок». Чаще всего это приводит к резкому сокращению качества и скорости обучения, что в результате ведет студента к прокрастинации и разочарованию. Мы можем замечать таких студентов и работать с ними. Бывает, студенту достаточно просто сказать, что не обязательно сейчас решать задачу самостоятельно — попросить помощи в чате или подсмотреть решение будет более рациональным шагом. Пока самостоятельных решений более 80%, студент имеет все шансы пройти программу, а уже после — вернуться и закрыть пропущенные упражнения.
Когда цель студента изначально недостаточно хорошо сформулирована или проработана, может сложиться ситуация, когда цель достигнута, а что делать дальше — не понятно. Можно сказать, что мы ведем студентов на 110% — не только поставив их на ноги и отпустив в свободное плавание, но и дав немного «средств» на первое время.
Чтобы все это преодолеть и качественно помочь студенту решить его проблемы, наставник учит его правильному целеполаганию, рефлексии, помогает выстроить процессы, видеть пройденный путь и планировать дальнейшие шаги. Все это попадает в инструментарий хорошего инженера. Такие навыки полезны и будущему работнику компании, где принята хорошая инженерная культура.
Атрибуты IT-компании
Примечание: В основном, эти механики применимы для персональных наставников или небольших групп, но о них нужно говорить всем студентам на всех форматах.
Ранее уже упоминались дейлики и канбан-доски. И мы действительно можем воссоздать со студентами виртуальный офис вплоть до таких деталей. Особенно это актуально для персональных наставников. В случае с дейликами, со стороны Хекслета нет какого-то одного рекомендуемого сервиса: выбор формы и регулярности здесь остается на усмотрение наставника.
Канбан-доска
Наставник подводит студентов к ведению досок, чтобы познакомить их с IT-культурой — все как в жизни. Принцип работы с досками похож на работу в реальной команде — тимлид (наставник) видит доски своих разработчиков (студентов), может ставить им новые задачи или обсуждать те, что уже в работе. Если разработчикам нужна помощь тимлида, они либо ждут митинг (если он есть), либо обращаются с вопросом или назначают встречу.
На начальном этапе далеко не все студенты даже знают о том, что есть такое понятие, как таски и что их можно как-то организовывать и вести. Ведение доски дисциплинирует студента и сразу приучает к рабочей культуре, с которой он будет иметь дело в дальнейшем, в условиях реальных IT-проектов. А наставник в любой момент может посмотреть доску студента и быстро понять, что сейчас происходит у него в учебном процессе, работает ли он или «забуксовал».
Наставник помогает студентам освоить этот инструмент, но в дальнейшем каждый студент ведет свою доску сам. Если у нас есть студенты с досками, их нужно обязательно регулярно проверять — не менее одного раза в неделю.
Наставник может выбрать сервис для досок по своему усмотрению, но Хекслет рекомендует Trello. Это достаточно простой и популярный сервис, реализующий все необходимые механики. Для этого создан шаблон доски в Trello и видео, рассказывающее про механику ее использования:
Индивидуальный план развития
В некоторых компаниях практикуется ИПР — индивидуальный план развития. Это документ, представляющий собой долгосрочный план развития сотрудника. В нем описывается, что есть сейчас, что ожидается через N месяцев (обычно — полгода). Этот документ тезисно описывает сначала отправную точку и затем — ожидаемую конечную точку. В процессе он может наполняться фактически выполненными шагами и достигнутыми целями. Задача документа не в том, чтобы выстроить путь на будущее, а в том, чтобы грамотно проанализировать путь пройденный. Если в процессе сотрудник достиг других целей, то это может быть абсолютно нормально.
Чтобы корректно сформировать план развития для студента, необходимо на первом созвоне обсудить, какие цели на обучение ставит перед собой студент. В какие сроки и каких результатов хотел бы добиться. Цели могут быть размытые, поэтому хорошо, если наставник поможет их оформить. Например, выбрать несколько вакансий, на которые хотел бы претендовать студент, разобрать как��е навыки и компетенции для неё нужны и разбить по шагам, что нужно для этого сделать и с чего начать.
Также важно понять, что студент уже знает и умеет к тому моменту, как пришёл на обучение в Хекслет. Узнайте про его бэкграунд в программировании или его изучении, посмотрите проекты, которые он делал (если такие есть).
Часто на Премиум приходят студенты, которые уже изучали программирование, знают какие-то темы, но хотят прокачаться сильнее или изучить конкретные технологии. Для таких студентов после предварительного скрининга знаний можно дать рекомендации, какие курсы (уроки) программы можно пропустить, а на какие обратить больше внимания и пройти в первую очередь. Если изначально обсуждалось, что студент хотел бы изучить какие-то дополнительные технологии или инструменты, не входящие в основную программу Хекслета, то изучение этих вещей также надо отобразить в индивидуальном плане развития.
Для студентов в ИПР могут попадать рекомендуемые книги, изучение дополнительных технологий, а также — все закладки статей/видео из теории и блога Хекслета и уроки/испытания, которые нужно перепройти. Иными словами — всё то, что поможет студенту прокачаться в будущем, но на сегодняшний день физически «не влезает» в текущую нагрузку и будет только мешать учёбе. Так мы учим студентов спокойно относиться к техническому долгу, но при этом видеть его, учиться им управлять и не позволять ему управлять собой.
Под ИПР хорошо подходит упомянутая канбан-доска с набором таких задач. Наставник может помочь студенту расставить приоритеты, убрать сомнительные задачи и добавить более полезные.
Важно — если студент утверждает, что знает определенные темы и отказывается их проходить в рамках курса, нужно сначала проверить, насколько хорошо студент с ними знаком. Для этого можно попросить его сделать несколько упражнений (испытаний) или начать делать первый проект. Исходя из кода, который он написал, будет понятно, насколько студент хорошо знаком с темой и можно ли ему ее пропустить и двигаться сразу дальше. Если будут видны проблемы в знаниях, нужно обсудить со студентом, какие темы требуют дополнительного внимания.
Факультативность
В этом и предыдущем уроке уже упоминалось, что процесс обучения должен быть комфортным для студента. Иногда самые простые и очень полезные задачи могут быть для студента в тягость. Допустим, мы все обсудили со студентом — он согласен, что это классно. Но де-факто он не ведет доску, не приходит на дейлики, игнорирует совместные мероприятия. В таком случае мы не заставляем этого студента делать то, что он не делает, но продолжаем регулярно напоминать обо всех доступных и полезных инструментах.
Заключение
Теперь мы имеем полное представление о том, кто такой наставник, как он действует, что делает, почему именно так и как часто. Если резюмировать все сказанное в этом и предыдущих уроках:
- Мы помогаем студентам достигать целей, преодолевая сложности на пути.
- Мы формируем инженерную культуру, чтобы в дальнейшем студент мог не только попасть в хорошую IT-компанию, но и комфортно себя в ней чувствовать.
- Мы обучаем основам используемых технологий, учим смотреть в корень задачи и профессионально разбираться в своей теме.
Это непростой, но крайне интересный и захватывающий процесс. Мы всегда имеем право на ошибку, но не имеем морального права разрушить мечты студента и помешать ему в достижении его целей. Когда после многомесячной совместной работы студент возвращается с обратной связью и рассказывает, что он устроился на работу, что его похвалили и что он за это благодарен лично нам, это дает совершенно новый опыт и чувство гордости, как за студента, так и за себя.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 22:29:24 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="MXVji09ucpr_I0dv6POyRTu9YoSwZwDIS6wtsP6BjSvepKi8vRDf-klgY_fk_EIy-7RPLrhQ_mr2TLfkrIZqRQ";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Инженерная культура | Наставник Хекслета</title>
<meta name="description" content="Инженерная культура / Наставник Хекслета: О миссии наставника в жизни студента">
<link rel="canonical" href="https://ru.hexlet.io/courses/tutor-school-hexlet/lessons/engineering-culture/theory_unit">
<meta name="robots" content="noarchive">
<meta property="og:title" content="Инженерная культура">
<meta property="og:title" content="Наставник Хекслета">
<meta property="og:description" content="Инженерная культура / Наставник Хекслета: О миссии наставника в жизни студента">
<meta property="og:url" content="https://ru.hexlet.io/courses/tutor-school-hexlet/lessons/engineering-culture/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="CtqhyqZP2HGCeS2X57V3wUZvVXrCy5Ok7peVmzyM0M_lC2r9VDF1ETQ6CQ_ruoe2hmZ40Mr8bQZTdw_Pbos3oQ" />
<script src="/vite/assets/inertia-DfXos102.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-cb8xch9l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<div id="app" data-page="{"component":"web/courses/lessons/theory_unit","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T22:29:24.778Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"RAW1KOd6rTqh1IUjzR_FR64a23hS5Hpoa6RpXLoUGkar1H4fFQQAWheXobvBEDUwbhP20lrThMrWRPMI6BP9KA","topics":[],"lesson":{"exercise":null,"units":[{"id":4968,"name":"theory","url":"/courses/tutor-school-hexlet/lessons/engineering-culture/theory_unit"}],"links":[{"id":423940,"name":"Статья в блоге \"Ловушки обучения\"","url":"https://ru.hexlet.io/blog/posts/traps-learning"}],"ordered_units":[{"id":4968,"name":"theory","url":"/courses/tutor-school-hexlet/lessons/engineering-culture/theory_unit"}],"id":2238,"slug":"engineering-culture","state":"approved","name":"Инженерная культура","course_order":600,"goal":"О миссии наставника в жизни студента","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"Как мы узнали из прошлых уроков, наставник не преподает студентам материалы Хекслета (или сторонние материалы). Он отвечает на вопросы и раскрывает различные темы в форме активностей. Однако, это вовсе не означает, что наставник ничему не учит своих студентов. То, что отличает Хекслет и как IT-компанию, и как школу программирования — это инженерная культура разработчика.\n\nЗнакомясь с материалами Хекслета, мы можем заметить, что конкретные инструменты предлагаются к изучению на довольно поздних этапах. Пока студент только начинает свой путь, мы помогаем ему научиться понимать суть решаемой проблемы и фундаментальные принципы программирования. И лишь после этого переходим к изучению устройства и предназначения готовых инструментов. Мы учим не столько конкретным языкам, сколько программированию в целом. Так мы формируем мышление будущих инженеров: учим работать в команде, задавать хорошие вопросы и находить хорошие решения для нестандартных задач. Наши коммуникации со студентами — это передача опыта и поддержка на равных: как в условиях команды, которая вместе работает над одним проектом.\n\nИнженерная культура — это то, что невозможно передать через сухой текст или предзаписанное видео. Именно здесь начинается работа наставника, который своим примером показывает, как мыслит и действует хороший инженер.\n\n## Концепция виртуального офиса\n\nЗачастую программисты одного проекта работают в общем пространстве — open space. Люди приходят на работу и уходят с нее в обусловленные часы, внутри царит дружеская, но рабочая атмосфера. Люди могут обмениваться мнениями в комнатах совещаний или проводить митапы на всю команду. Каждый участник команды сообщает о своем прогрессе работы на дейликах, а вся команда сдает проект по спринтам.\n\n\n\nХекслет — это виртуальный open space, где наставники исполняют роль тимлидов, а студенты растут от intern до senior как своими силами, так и с помощью окружающих. Студент с первого дня получает рабочие задачи, вовлекается в жизнь проекта и делает свой вклад в его развитие.\n\nНаставник взаимодействует со студентами именно в такой среде, моделируя для них будущие условия работы в хорошей IT компании. Рассказы наставников из личной практики, публичные собеседования, совместное решение задач, воссоздание атрибутов реальной рабочей атмосферы — все это помогает студентам почувствовать применимость полученных ими знаний на практике.\n\nСроки и правила общения, которые обсуждались в предыдущих уроках, как раз и помогают нам сформировать такой виртуальный офис: с зонами ответственности, понятными процессами и предсказуемыми реакциями на то или иное действие. К сожалению (как и в реальной жизни) бывает, что из нашего виртуального офиса некоторых людей приходится убирать — если они не соблюдают установленные правила, ведут себя откровенно токсично или срывают рабочие процессы. Это касается как студентов, так и наставников.\n\n## Наставник помогает студентам достигать целей\n\nКак правило, студенты приходят на курсы, чтобы решить какую-то конкретную личную проблему. Смена сферы деятельности, повышение квалификации, освоение нового хобби — это наиболее частые причины покупки курсов. Наставник же выступает в роли человека, который уже прошел этот путь. Мы уже знаем, какие грабли ожидают студента на этом пути, какие цели достижимы, а какие стоит переосмыслить. Наставник становится для студента своего рода инструментом для достижения поставленных целей.\n\nИногда мы можем столкнуться со сложными студентами. Некоторым из них даже хочется сказать «это не твое». Но говорить так нам, конечно же, не следует. Такие студенты в силу личных обстоятельств либо не достигают поставленных целей совсем, либо это занимает у них в разы больше времени и сил, чем ожидалось на старте. Корректировка целей и сроков в подобной ситуации — абсолютно нормальная практика. При всей важности эмпатии, проблемы и сложности студентов не следует «пропускать через себя»: это только приведет нас к фрустрации и выгоранию. Гораздо более продуктивным шагом станет пересмотр стратегии обучения и обсуждение ситуации с куратором.\n\nИногда студенты в процессе обучения словно «забывают», зачем они пришли учиться изначально и ставят перед собой цели вроде «отучиться за N месяцев» или «решить все задачи на Хекслете и только без подсказок». Чаще всего это приводит к резкому сокращению качества и скорости обучения, что в результате ведет студента к прокрастинации и разочарованию. Мы можем замечать таких студентов и работать с ними. Бывает, студенту достаточно просто сказать, что не обязательно сейчас решать задачу самостоятельно — попросить помощи в чате или подсмотреть решение будет более рациональным шагом. Пока самостоятельных решений более 80%, студент имеет все шансы пройти программу, а уже после — вернуться и закрыть пропущенные упражнения.\n\nКогда цель студента изначально недостаточно хорошо сформулирована или проработана, может сложиться ситуация, когда цель достигнута, а что делать дальше — не понятно. Можно сказать, что мы ведем студентов на 110% — не только поставив их на ноги и отпустив в свободное плавание, но и дав немного «средств» на первое время.\n\nЧтобы все это преодолеть и качественно помочь студенту решить его проблемы, наставник учит его правильному целеполаганию, рефлексии, помогает выстроить процессы, видеть пройденный путь и планировать дальнейшие шаги. Все это попадает в инструментарий хорошего инженера. Такие навыки полезны и будущему работнику компании, где принята хорошая инженерная культура.\n\n## Атрибуты IT-компании\n\n> Примечание: *В основном, эти механики применимы для персональных наставников или небольших групп, но о них нужно говорить всем студентам на всех форматах.*\n\nРанее уже упоминались дейлики и канбан-доски. И мы действительно можем воссоздать со студентами виртуальный офис вплоть до таких деталей. Особенно это актуально для персональных наставников. В случае с дейликами, со стороны Хекслета нет какого-то одного рекомендуемого сервиса: выбор формы и регулярности здесь остается на усмотрение наставника.\n\n### Канбан-доска\n\nНаставник подводит студентов к ведению досок, чтобы познакомить их с IT-культурой — все как в жизни. Принцип работы с досками похож на работу в реальной команде — тимлид (наставник) видит доски своих разработчиков (студентов), может ставить им новые задачи или обсуждать те, что уже в работе. Если разработчикам нужна помощь тимлида, они либо ждут митинг (если он есть), либо обращаются с вопросом или назначают встречу.\n\nНа начальном этапе далеко не все студенты даже знают о том, что есть такое понятие, как таски и что их можно как-то организовывать и вести. Ведение доски дисциплинирует студента и сразу приучает к рабочей культуре, с которой он будет иметь дело в дальнейшем, в условиях реальных IT-проектов. А наставник в любой момент может посмотреть доску студента и быстро понять, что сейчас происходит у него в учебном процессе, работает ли он или «забуксовал».\n\nНаставник помогает студентам освоить этот инструмент, но в дальнейшем каждый студент ведет свою доску сам. Если у нас есть студенты с досками, их нужно обязательно регулярно проверять — не менее одного раза в неделю.\n\nНаставник может выбрать сервис для досок по своему усмотрению, но Хекслет рекомендует Trello. Это достаточно простой и популярный сервис, реализующий все необходимые механики. Для этого создан [шаблон доски в Trello](https://trello.com/b/zoHWrbur/%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD-%D0%B4%D0%BE%D1%81%D0%BA%D0%B8-%D0%B2-%D1%82%D1%80%D0%B5%D0%BB%D0%BB%D0%BE) и видео, рассказывающее про механику ее использования:\n\n[](https://www.loom.com/share/28b484f83ed5417baa04e2e25e51924f)\n\n### Индивидуальный план развития\n\nВ некоторых компаниях практикуется ИПР — индивидуальный план развития. Это документ, представляющий собой долгосрочный план развития сотрудника. В нем описывается, что есть сейчас, что ожидается через N месяцев (обычно — полгода). Этот документ тезисно описывает сначала отправную точку и затем — ожидаемую конечную точку. В процессе он может наполняться фактически выполненными шагами и достигнутыми целями. Задача документа не в том, чтобы выстроить путь на будущее, а в том, чтобы грамотно проанализировать путь пройденный. Если в процессе сотрудник достиг других целей, то это может быть абсолютно нормально.\n\nЧтобы корректно сформировать план развития для студента, необходимо на первом созвоне обсудить, какие цели на обучение ставит перед собой студент. В какие сроки и каких результатов хотел бы добиться. Цели могут быть размытые, поэтому хорошо, если наставник поможет их оформить. Например, выбрать несколько вакансий, на которые хотел бы претендовать студент, разобрать какие навыки и компетенции для неё нужны и разбить по шагам, что нужно для этого сделать и с чего начать.\nТакже важно понять, что студент уже знает и умеет к тому моменту, как пришёл на обучение в Хекслет. Узнайте про его бэкграунд в программировании или его изучении, посмотрите проекты, которые он делал (если такие есть).\n\nЧасто на Премиум приходят студенты, которые уже изучали программирование, знают какие-то темы, но хотят прокачаться сильнее или изучить конкретные технологии. Для таких студентов после предварительного скрининга знаний можно дать рекомендации, какие курсы (уроки) программы можно пропустить, а на какие обратить больше внимания и пройти в первую очередь. Если изначально обсуждалось, что студент хотел бы изучить какие-то дополнительные технологии или инструменты, не входящие в основную программу Хекслета, то изучение этих вещей также надо отобразить в индивидуальном плане развития.\n\nДля студентов в ИПР могут попадать рекомендуемые книги, изучение дополнительных технологий, а также — все закладки статей/видео из теории и блога Хекслета и уроки/испытания, которые нужно перепройти. Иными словами — всё то, что поможет студенту прокачаться в будущем, но на сегодняшний день физически «не влезает» в текущую нагрузку и будет только мешать учёбе. Так мы учим студентов спокойно относиться к техническому долгу, но при этом видеть его, учиться им управлять и не позволять ему управлять собой.\n\nПод ИПР хорошо подходит упомянутая канбан-доска с набором таких задач. Наставник может помочь студенту расставить приоритеты, убрать сомнительные задачи и добавить более полезные.\n\nВажно — если студент утверждает, что знает определенные темы и отказывается их проходить в рамках курса, нужно сначала проверить, насколько хорошо студент с ними знаком. Для этого можно попросить его сделать несколько упражнений (испытаний) или начать делать первый проект. Исходя из кода, который он написал, будет понятно, насколько студент хорошо знаком с темой и можно ли ему ее пропустить и двигаться сразу дальше. Если будут видны проблемы в знаниях, нужно обсудить со студентом, какие темы требуют дополнительного внимания.\n\n### Факультативность\n\nВ этом и предыдущем уроке уже упоминалось, что процесс обучения должен быть комфортным для студента. Иногда самые простые и очень полезные задачи могут быть для студента в тягость. Допустим, мы все обсудили со студентом — он согласен, что это классно. Но де-факто он не ведет доску, не приходит на дейлики, игнорирует совместные мероприятия. В таком случае мы не заставляем этого студента делать то, что он не делает, но продолжаем регулярно напоминать обо всех доступных и полезных инструментах.\n\n## Заключение\n\nТеперь мы имеем полное представление о том, кто такой наставник, как он действует, что делает, почему именно так и как часто. Если резюмировать все сказанное в этом и предыдущих уроках:\n* Мы помогаем студентам достигать целей, преодолевая сложности на пути.\n* Мы формируем инженерную культуру, чтобы в дальнейшем студент мог не только попасть в хорошую IT-компанию, но и комфортно себя в ней чувствовать.\n* Мы обучаем основам используемых технологий, учим смотреть в корень задачи и профессионально разбираться в своей теме.\n\nЭто непростой, но крайне интересный и захватывающий процесс. Мы всегда имеем право на ошибку, но не имеем морального права разрушить мечты студента и помешать ему в достижении его целей. Когда после многомесячной совместной работы студент возвращается с обратной связью и рассказывает, что он устроился на работу, что его похвалили и что он за это благодарен лично нам, это дает совершенно новый опыт и чувство гордости, как за студента, так и за себя.\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":4963,"name":"theory","url":"/courses/tutor-school-hexlet/lessons/intro/theory_unit"}],"links":[],"ordered_units":[{"id":4963,"name":"theory","url":"/courses/tutor-school-hexlet/lessons/intro/theory_unit"}],"id":2233,"slug":"intro","state":"approved","name":"Введение","course_order":100,"goal":"Познакомимся с курсом и целями обучения","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"Добро пожаловать в школу наставников Хекслета. Этот курс будет первым шагом на пути к новым знаниям о коммуникациях, обучении и создании контента. По результатам обучения в школе наставников мы подготовимся к работе тимлида, прокачаем soft-skills, научимся доносить информацию интересно и помогать людям преодолевать сложности в обучении. Завершив этот курс, мы можем закрепить теорию практикой, [став наставником на Хекслете](https://www.notion.so/hexlet/8eed0c8e28e8407d8e10d1dca0214198).\n\nНаставники играют важную роль в обучении любым новым навыкам. Например, на новой работе нам могут дать в наставники опытного сотрудника, чтобы он рассказал о рабочих процессах, коллегах, технике безопасности и непосредственно о нашей трудовой деятельности. Это помогает нам быстрее адаптироваться в коллективе, структурировать информацию и в конечном итоге — быстрее перейти из состояния новичка в состояние полноценного сотрудника. Диапазон ответственности наставника может быть достаточно широким — от краткой справки до полноценного обучения с нуля.\n\nДля разных сотрудников один и тот же наставник может оказывать разный уровень поддержки. У каждого свой уровень hard- и soft-скиллов, свой темп усвоения информации, своя степень вовлечения в новые процессы. Многое здесь зависит и от самого наставника — если наставничать поставили человека без опыта, то даже максимальная отдача и вовлеченность не сильно помогут результату.\n\nЧтобы стать хорошим наставником, недостаточно просто быть экспертом в своей теме. Нужно уметь «программировать» процесс обучения, отрабатывать сомнения и страхи студента, помогать преодолевать сложности и в целом доводить студента до желаемой цели так, чтобы оставить ему багаж необходимых теоретических знаний и практических навыков.\n\nВ рамках этого курса мы познакомимся с наставничеством на Хекслете. Мы будем учитывать специфику конкретной платформы и задач:\n1. Узнаем, как устроен Хекслет и как организован процесс обучения на нем\n2. Разберемся с ролью наставника, его правами и обязанностями\n3. Научимся взаимодействовать со студентами в зависимости от их уровня и ситуации в их учебном процессе\n4. Познакомимся с другими участниками учебного процесса\n5. Узнаем как сделать процесс обучения эффективнее и интереснее\n\nЭтот курс будет полезен не только наставникам, но и студентам. Он поможет понять, как будет поступать наставник в той или иной ситуации, а как — ни в коем случае не поступит. Какие ситуации являются для студента нормальными, а какие требуют помощи от наставника или сотрудников Хекслета. В конечном счете все наставники — это студенты Хекслета. Даже если сегодня наставничество кажется чем-то очень далеким, то вовсе не факт, что в будущем ничего не поменяется.\n"},"id":250,"slug":"tutor-school-hexlet","challenges_count":0,"name":"Наставник Хекслета","allow_indexing":true,"state":"approved","course_state":"finished","pricing_type":"free","description":"На этом курсе мы разберем, какими знаниями и инструментами необходимо владеть разработчику, чтобы стать успешным тимлидом, уверенно выступать на конференциях и становиться наставником для других людей. Вы узнаете, как делать хорошие ревью, создавать качественный контент, работать с мотивацией студентов и выстраивать эффективные коммуникации. Курс подойдет для действующих разработчиков, которые хотят перейти на новый уровень развития в своей карьере.","kind":"additional","updated_at":"2026-01-20T11:44:57.583Z","language":"other","duration_cache":8100,"skills":["Выстраивать процесс обучения","Создавать полезный и интересный контент","Объяснять сложные вещи простыми словами","Работать с мотивацией студентов","Организовывать людей для совместного решения задач"],"keywords":[],"lessons_count":9,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NzIzMSwicHVyIjoiYmxvYl9pZCJ9fQ==--5ce48cb2b7fd0d8203735d6d855aafc5f55996f5/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[],"lessonMemberUnit":null,"accessToLearnUnitExists":true,"accessToCourseExists":true},"url":"/courses/tutor-school-hexlet/lessons/engineering-culture/theory_unit","version":"8f286f6358a90a7bef2263b3a6edf5a90a94fa42","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><div style="position:absolute;top:0rem" class=""></div><div style="max-width:var(--container-size-xl);height:100%;min-height:0rem" class=""><style data-mantine-styles="inline">.__m__-_R_5ub_{--grid-gutter:0rem;}</style><div style="height:100%;min-height:0rem" class="m_410352e9 mantine-Grid-root __m__-_R_5ub_"><div class="m_dee7bd2f mantine-Grid-inner" style="height:100%"><style data-mantine-styles="inline">.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:91.66666666666667%;--col-max-width:91.66666666666667%;}@media(min-width: 48em){.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem;display:flex" class="m_96bdd299 mantine-Grid-col __m__-_R_rdub_"><style data-mantine-styles="inline">.__m__-_R_6qrdub_{margin-top:0rem;padding-inline:var(--mantine-spacing-xs);width:100%;}@media(min-width: 48em){.__m__-_R_6qrdub_{margin-top:var(--mantine-spacing-xl);width:80%;}}@media(min-width: 62em){.__m__-_R_6qrdub_{padding-inline:var(--mantine-spacing-xl);}}</style><div style="margin-inline:auto;max-width:var(--mantine-breakpoint-xl)" class="__m__-_R_6qrdub_"><div style="color:var(--mantine-color-dimmed)" class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:calc(0.125rem * var(--mantine-scale));color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-lock "><path d="M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6"></path><path d="M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M8 11v-4a4 4 0 1 1 8 0v4"></path></svg></div><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Наставник Хекслета</p></div><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size);margin-bottom:var(--mantine-spacing-xl)" class="m_8a5d1357 mantine-Title-root" data-order="1">Теория: Инженерная культура</h1><script type="application/ld+json">{"@context":"https://schema.org","@type":"LearningResource","name":"Инженерная культура","inLanguage":"ru","isPartOf":{"@type":"LearningResource","name":"Наставник Хекслета"},"isAccessibleForFree":"False","hasPart":{"@type":"WebPageElement","isAccessibleForFree":"False","cssSelector":".paywalled"}}</script><div class=""><div style="--alert-color:var(--mantine-color-indigo-light-color);margin-bottom:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-lg)" class="m_66836ed3 mantine-Alert-root" id="mantine-_R_remqrdub_" role="alert" aria-describedby="mantine-_R_remqrdub_-body" aria-labelledby="mantine-_R_remqrdub_-title"><div class="m_a5d60502 mantine-Alert-wrapper"><div class="m_667f2a6a mantine-Alert-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-rocket "><path d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3 -5a9 9 0 0 0 6 -8a3 3 0 0 0 -3 -3a9 9 0 0 0 -8 6a6 6 0 0 0 -5 3"></path><path d="M7 14a6 6 0 0 0 -3 6a6 6 0 0 0 6 -3"></path><path d="M14 9a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path></svg></div><div class="m_667c2793 mantine-Alert-body"><div class="m_6a03f287 mantine-Alert-title"><span id="mantine-_R_remqrdub_-title" class="m_698f4f23 mantine-Alert-label">Полный доступ к материалам</span></div><div id="mantine-_R_remqrdub_-body" class="m_7fa78076 mantine-Alert-message"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Зарегистрируйтесь и получите доступ к этому и десяткам других курсов</p><a style="--button-height:var(--button-height-xs);--button-padding-x:var(--button-padding-x-xs);--button-fz:var(--mantine-font-size-xs);--button-bg:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-hover:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-color:var(--mantine-color-white);--button-bd:none" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root" data-variant="gradient" data-size="xs" href="/u/new"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">Зарегистрироваться</span></span></a></div></div></div></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><p>Как мы узнали из прошлых уроков, наставник не преподает студентам материалы Хекслета (или сторонние материалы). Он отвечает на вопросы и раскрывает различные темы в форме активностей. Однако, это вовсе не означает, что наставник ничему не учит своих студентов. То, что отличает Хекслет и как IT-компанию, и как школу программирования — это инженерная культура разработчика.</p>
<p>Знакомясь с материалами Хекслета, мы можем заметить, что конкретные инструменты предлагаются к изучению на довольно поздних этапах. Пока студент только начинает свой путь, мы помогаем ему научиться понимать суть решаемой проблемы и фундаментальные принципы программирования. И лишь после этого переходим к изучению устройства и предназначения готовых инструментов. Мы учим не столько конкретным языкам, сколько программированию в целом. Так мы формируем мышление будущих инженеров: учим работать в команде, задавать хорошие вопросы и находить хорошие решения для нестандартных задач. Наши коммуникации со студентами — это передача опыта и поддержка на равных: как в условиях команды, которая вместе работает над одним проектом.</p>
<p>Инженерная культура — это то, что невозможно передать через сухой текст или предзаписанное видео. Именно здесь начинается работа наставника, который своим примером показывает, как мыслит и действует хороший инженер.</p>
<h2 id="heading-2-1">Концепция виртуального офиса</h2>
<p>Зачастую программисты одного проекта работают в общем пространстве — open space. Люди приходят на работу и уходят с нее в обусловленные часы, внутри царит дружеская, но рабочая атмосфера. Люди могут обмениваться мнениями в комнатах совещаний или проводить митапы на всю команду. Каждый участник команды сообщает о своем прогрессе работы на дейликах, а вся команда сдает проект по спринтам.</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NzIzOCwicHVyIjoiYmxvYl9pZCJ9fQ==--3de4a1a6f3dda9e13b35307b8aa93680bd324c62/open-space.png" alt="open space" loading="lazy"/></p>
<p>Хекслет — это виртуальный open space, где наставники исполняют роль тимлидов, а студенты растут от intern до senior как своими силами, так и с помощью окружающих. Студент с первого дня получает рабочие задачи, вовлекается в жизнь проекта и делает свой вклад в его развитие.</p>
<p>Наставник взаимодействует со студентами именно в такой среде, моделируя для них будущие условия работы в хорошей IT компании. Рассказы наставников из личной практики, публичные собеседования, совместное решение задач, воссоздание атрибутов реальной рабочей атмосферы — все это помогает студентам почувствовать применимость полученных ими знаний на практике.</p>
<p>Сроки и правила общения, которые обсуждались в предыдущих уроках, как раз и помогают нам сформировать такой виртуальный офис: с зонами ответственности, понятными процессами и предсказуемыми реакциями на то или иное действие. К сожалению (как и в реальной жизни) бывает, что из нашего виртуального офиса некоторых людей приходится убирать — если они не соблюдают установленные правила, ведут себя откровенно токсично или срывают рабочие процессы. Это касается как студентов, так и наставников.</p>
<h2 id="heading-2-2">Наставник помогает студентам достигать целей</h2>
<p>Как правило, студенты приходят на курсы, чтобы решить какую-то конкретную личную проблему. Смена сферы деятельности, повышение квалификации, освоение нового хобби — это наиболее частые причины покупки курсов. Наставник же выступает в роли человека, который уже прошел этот путь. Мы уже знаем, какие грабли ожидают студента на этом пути, какие цели достижимы, а какие стоит переосмыслить. Наставник становится для студента своего рода инструментом для достижения поставленных целей.</p>
<p>Иногда мы можем столкнуться со сложными студентами. Некоторым из них даже хочется сказать «это не твое». Но говорить так нам, конечно же, не следует. Такие студенты в силу личных обстоятельств либо не достигают поставленных целей совсем, либо это занимает у них в разы больше времени и сил, чем ожидалось на старте. Корректировка целей и сроков в подобной ситуации — абсолютно нормальная практика. При всей важности эмпатии, проблемы и сложности студентов не следует «пропускать через себя»: это только приведет нас к фрустрации и выгоранию. Гораздо более продуктивным шагом станет пересмотр стратегии обучения и обсуждение ситуации с куратором.</p>
<p>Иногда студенты в процессе обучения словно «забывают», зачем они пришли учиться изначально и ставят перед собой цели вроде «отучиться за N месяцев» или «решить все задачи на Хекслете и только без подсказок». Чаще всего это приводит к резкому сокращению качества и скорости обучения, что в результате ведет студента к прокрастинации и разочарованию. Мы можем замечать таких студентов и работать с ними. Бывает, студенту достаточно просто сказать, что не обязательно сейчас решать задачу самостоятельно — попросить помощи в чате или подсмотреть решение будет более рациональным шагом. Пока самостоятельных решений более 80%, студент имеет все шансы пройти программу, а уже после — вернуться и закрыть пропущенные упражнения.</p>
<p>Когда цель студента изначально недостаточно хорошо сформулирована или проработана, может сложиться ситуация, когда цель достигнута, а что делать дальше — не понятно. Можно сказать, что мы ведем студентов на 110% — не только поставив их на ноги и отпустив в свободное плавание, но и дав немного «средств» на первое время.</p>
<p>Чтобы все это преодолеть и качественно помочь студенту решить его проблемы, наставник учит его правильному целеполаганию, рефлексии, помогает выстроить процессы, видеть пройденный путь и планировать дальнейшие шаги. Все это попадает в инструментарий хорошего инженера. Такие навыки полезны и будущему работнику компании, где принята хорошая инженерная культура.</p>
<h2 id="heading-2-3">Атрибуты IT-компании</h2>
<blockquote>
<p>Примечание: <em>В основном, эти механики применимы для персональных наставников или небольших групп, но о них нужно говорить всем студентам на всех форматах.</em></p>
</blockquote>
<p>Ранее уже упоминались дейлики и канбан-доски. И мы действительно можем воссоздать со студентами виртуальный офис вплоть до таких деталей. Особенно это актуально для персональных наставников. В случае с дейликами, со стороны Хекслета нет какого-то одного рекомендуемого сервиса: выбор формы и регулярности здесь остается на усмотрение наставника.</p>
<h3 id="heading-3-4">Канбан-доска</h3>
<p>Наставник подводит студентов к ведению досок, чтобы познакомить их с IT-культурой — все как в жизни. Принцип работы с досками похож на работу в реальной команде — тимлид (наставник) видит доски своих разработчиков (студентов), может ставить им новые задачи или обсуждать те, что уже в работе. Если разработчикам нужна помощь тимлида, они либо ждут митинг (если он есть), либо обращаются с вопросом или назначают встречу.</p>
<p>На начальном этапе далеко не все студенты даже знают о том, что есть такое понятие, как таски и что их можно как-то организовывать и вести. Ведение доски дисциплинирует студента и сразу приучает к рабочей культуре, с которой он будет иметь дело в дальнейшем, в условиях реальных IT-проектов. А наставник в любой момент может посмотреть доску студента и быстро понять, что сейчас происходит у него в учебном процессе, работает ли он или «забуксовал».</p>
<p>Наставник помогает студентам освоить этот инструмент, но в дальнейшем каждый студент ведет свою доску сам. Если у нас есть студенты с досками, их нужно обязательно регулярно проверять — не менее одного раза в неделю.</p>
<p>Наставник может выбрать сервис для досок по своему усмотрению, но Хекслет рекомендует Trello. Это достаточно простой и популярный сервис, реализующий все необходимые механики. Для этого создан <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://trello.com/b/zoHWrbur/%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD-%D0%B4%D0%BE%D1%81%D0%BA%D0%B8-%D0%B2-%D1%82%D1%80%D0%B5%D0%BB%D0%BB%D0%BE" rel="noopener noreferrer" target="_blank">шаблон доски в Trello</a> и видео, рассказывающее про механику ее использования:</p>
<p><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.loom.com/share/28b484f83ed5417baa04e2e25e51924f" rel="noopener noreferrer" target="_blank"><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NzIzOSwicHVyIjoiYmxvYl9pZCJ9fQ==--0333926ed72054eca4bbd85d65cb949766409247/trello-video.png" alt="Видео про Trello" loading="lazy"/></a></p>
<h3 id="heading-3-5">Индивидуальный план развития</h3>
<p>В некоторых компаниях практикуется ИПР — индивидуальный план развития. Это документ, представляющий собой долгосрочный план развития сотрудника. В нем описывается, что есть сейчас, что ожидается через N месяцев (обычно — полгода). Этот документ тезисно описывает сначала отправную точку и затем — ожидаемую конечную точку. В процессе он может наполняться фактически выполненными шагами и достигнутыми целями. Задача документа не в том, чтобы выстроить путь на будущее, а в том, чтобы грамотно проанализировать путь пройденный. Если в процессе сотрудник достиг других целей, то это может быть абсолютно нормально.</p>
<p>Чтобы корректно сформировать план развития для студента, необходимо на первом созвоне обсудить, какие цели на обучение ставит перед собой студент. В какие сроки и каких результатов хотел бы добиться. Цели могут быть размытые, поэтому хорошо, если наставник поможет их оформить. Например, выбрать несколько вакансий, на которые хотел бы претендовать студент, разобрать какие навыки и компетенции для неё нужны и разбить по шагам, что нужно для этого сделать и с чего начать.
Также важно понять, что студент уже знает и умеет к тому моменту, как пришёл на обучение в Хекслет. Узнайте про его бэкграунд в программировании или его изучении, посмотрите проекты, которые он делал (если такие есть).</p>
<p>Часто на Премиум приходят студенты, которые уже изучали программирование, знают какие-то темы, но хотят прокачаться сильнее или изучить конкретные технологии. Для таких студентов после предварительного скрининга знаний можно дать рекомендации, какие курсы (уроки) программы можно пропустить, а на какие обратить больше внимания и пройти в первую очередь. Если изначально обсуждалось, что студент хотел бы изучить какие-то дополнительные технологии или инструменты, не входящие в основную программу Хекслета, то изучение этих вещей также надо отобразить в индивидуальном плане развития.</p>
<p>Для студентов в ИПР могут попадать рекомендуемые книги, изучение дополнительных технологий, а также — все закладки статей/видео из теории и блога Хекслета и уроки/испытания, которые нужно перепройти. Иными словами — всё то, что поможет студенту прокачаться в будущем, но на сегодняшний день физически «не влезает» в текущую нагрузку и будет только мешать учёбе. Так мы учим студентов спокойно относиться к техническому долгу, но при этом видеть его, учиться им управлять и не позволять ему управлять собой.</p>
<p>Под ИПР хорошо подходит упомянутая канбан-доска с набором таких задач. Наставник может помочь студенту расставить приоритеты, убрать сомнительные задачи и добавить более полезные.</p>
<p>Важно — если студент утверждает, что знает определенные темы и отказывается их проходить в рамках курса, нужно сначала проверить, насколько хорошо студент с ними знаком. Для этого можно попросить его сделать несколько упражнений (испытаний) или начать делать первый проект. Исходя из кода, который он написал, будет понятно, насколько студент хорошо знаком с темой и можно ли ему ее пропустить и двигаться сразу дальше. Если будут видны проблемы в знаниях, нужно обсудить со студентом, какие темы требуют дополнительного внимания.</p>
<h3 id="heading-3-6">Факультативность</h3>
<p>В этом и предыдущем уроке уже упоминалось, что процесс обучения должен быть комфортным для студента. Иногда самые простые и очень полезные задачи могут быть для студента в тягость. Допустим, мы все обсудили со студентом — он согласен, что это классно. Но де-факто он не ведет доску, не приходит на дейлики, игнорирует совместные мероприятия. В таком случае мы не заставляем этого студента делать то, что он не делает, но продолжаем регулярно напоминать обо всех доступных и полезных инструментах.</p>
<h2 id="heading-2-7">Заключение</h2>
<p>Теперь мы имеем полное представление о том, кто такой наставник, как он действует, что делает, почему именно так и как часто. Если резюмировать все сказанное в этом и предыдущих уроках:</p>
<ul>
<li>Мы помогаем студентам достигать целей, преодолевая сложности на пути.</li>
<li>Мы формируем инженерную культуру, чтобы в дальнейшем студент мог не только попасть в хорошую IT-компанию, но и комфортно себя в ней чувствовать.</li>
<li>Мы обучаем основам используемых технологий, учим смотреть в корень задачи и профессионально разбираться в своей теме.</li>
</ul>
<p>Это непростой, но крайне интересный и захватывающий процесс. Мы всегда имеем право на ошибку, но не имеем морального права разрушить мечты студента и помешать ему в достижении его целей. Когда после многомесячной совместной работы студент возвращается с обратной связью и рассказывает, что он устроился на работу, что его похвалили и что он за это благодарен лично нам, это дает совершенно новый опыт и чувство гордости, как за студента, так и за себя.</p></div></div></div></div><style data-mantine-styles="inline">.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:8.333333333333334%;--col-max-width:8.333333333333334%;}@media(min-width: 48em){.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem" class="m_96bdd299 mantine-Grid-col __m__-_R_1bdub_"><div style="margin-inline:var(--mantine-spacing-xs)" class="mantine-visible-from-sm"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-lg);text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/tutor-school-hexlet/lessons/engineering-culture/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label"><span style="margin-inline-end:var(--mantine-spacing-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дальше</span>→</span></span></a><a style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Навигация по теме</span><span class="m_57492dcc mantine-NavLink-description">Теория</span></div><span class="m_690090b5 mantine-NavLink-section" data-position="right"></span></a><div style="margin-block:var(--mantine-spacing-lg)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div><div style="margin-block:var(--mantine-spacing-lg)" class=""><div style="justify-content:space-between;margin-bottom:calc(0.1875rem * var(--mantine-scale));color:var(--mantine-color-dimmed);font-size:var(--mantine-font-size-xs)" class="m_8bffd616 mantine-Flex-root __m__-_R_qimrbdub_"><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Завершено</p><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">0 / 9</p></div><div style="--progress-size:var(--progress-size-sm)" class="m_db6d6462 mantine-Progress-root" data-size="sm"><div style="--progress-section-size:0%;--progress-section-color:var(--mantine-color-gray-filled)" class="m_2242eb65 mantine-Progress-section" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" aria-valuetext="0%"></div></div></div><div style="--toc-bg:var(--mantine-color-blue-light);--toc-color:var(--mantine-color-blue-light-color);--toc-size:var(--mantine-font-size-sm);--toc-radius:var(--mantine-radius-sm);margin-top:var(--mantine-spacing-xl)" class="m_bcaa9990 mantine-TableOfContents-root" data-variant="light" data-size="sm"></div></div><div class="mantine-hidden-from-sm"><div style="--stack-gap:0rem;--stack-align:stretch;--stack-justify:flex-start" class="m_6d731127 mantine-Stack-root"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-xs);padding:0rem;text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/tutor-school-hexlet/lessons/engineering-culture/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">→</span></span></a><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" data-disabled="true" type="button" disabled=""><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></span></button></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-Bukl1lYy.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>