Добро пожаловать на Хекслет! Этим уроком мы открываем наш курс, посвященный профессии программиста. На протяжении нескольких уроков мы будем разговаривать о том, кто такие программисты, как ими становятся и что нужно для того, чтобы стать одним из них. Мы подготовили большое количество информации, и вас ждут пять объёмных уроков. Мы не будем писать код, устанавливать софт и делать практические задачи — вместо этого мы разберёмся во всех нюансах профессии.
На кого рассчитан этот курс
- Школьники
- Студенты
- Те, кто хочет поменять профессию
Этот курс рассчитан на всех, кто хочет стать программистом. Студенты технической специальности почерпнут для себя что-то новое, поскольку далеко не всё, что преподается в институте, имеет отношение к промышленному программированию. Те же, кто не имеет к нему отношения, но хотят им заниматься, получат максимально подробный обзор этой профессии. Программирование открыто для всех, поэтому всё больше и больше людей становятся программистами.
Страхи
Поговорим о страхах людей, которые хотят стать программистами. Мы получаем много писем от наших пользователей, в которых они рассказывают, почему они боятся, что у них не получится освоить эту профессию.
Я — взрослый
И на первом месте находится страх, который называется "я — взрослый". Такому "взрослому" может быть и 25, и 50 лет — это абсолютно субъективная оценка. На самом деле, возраст играет малую роль, а большинство программистов уже достаточно взрослые люди. В целом профессия с каждым днем становится старше, и это нормально. Некоторые думают, что чем старше вы становитесь, тем медленнее вы соображаете, но это совершенно не всегда так: если у вас гибкий, сообразительный мозг, и вы понимаете, что вы умеете решать различные задачи и принимать определённые решения, то программирование точно для вас, ведь такие навыки по жизни не теряются. Поэтому не нужно переживать по поводу своего возраста.
Джуниор (младший разработчик) в 20 или даже в 30 лет — это нормально. Существует множество примеров, когда на работу приходили люди, которым под 40 и более лет — они спокойно устраивались и работали в коллективе с молодыми ребятами. Безусловно, у некоторых может возникнуть психологический барьер, когда твой начальник сильно тебя младше, но программирование — такая профессия, где в первую очередь ценится компетентность и то, что вы из себя представляете как профессионал. Поэтому, если вы успешно растете как программист, у вас не будет никаких проблем. Наоборот, накопленный вами опыт может помочь быстрее продвигаться по карьерной лестнице.
Я плохо знаю математику
Другой частый страх, о котором говорят — "я плохо знаю математику".
Было бы нечестно скрывать, что математика играет важную роль в программировании. В нём много направлений, которые требуют глубоких знаний различных дисциплин. Для разработки сложных игр такой дисциплиной является физика. Существуют направления, где нужна серьёзная математика, но в целом базовое программирование, особенно веб-программирование, где люди создают и настраивают сайты и веб-приложения, требует лишь минимальных знаний.
Когда говорят, что для программирования нужна математика, подразумевают в первую очередь не знание её как таковой — то есть конкретных дисциплин и математического аппарата — а знание математики как способа развития мышления и личности. Математика действительно хорошо помогает структурировать мозги и размышлять немного на другом уровне, раскачивать своё абстрактное мышление и делать многое другое. Поэтому знание математики никогда не повредит. Часто бывает так, что её начинают учить вместе с программированием, и это правильный подход.
При этом незнание математики не должно становиться причиной не заниматься программированием, но если вы начали им заниматься, то хотя бы на каком-то базовом уровне её можно тоже подтягивать. Вы сами почувствуете тот момент, когда она вам понадобится: при осуществлении каких-либо вычислений или работе с алгоритмами. Множество ресурсов, таких как Coursera, дают доступ к большим университетским и простым базовым курсам, которых достаточно, чтобы подтянуть свои знания по математике.
Я слишком туп / глуп
На третьем месте — страх, который называется "я слишком туп или глуп".
Этот страх часто проявляется у людей, мечтающих стать программистами, у которых есть знакомые, успешно работающие в этой профессии. На фоне таких знакомых им иногда кажется, что они ничего не понимают. Просто потому, что те используют специфические термины и в каких-то вещах разбираются лучше. Чаще всего этот страх не обоснован, и, как показывает практика, есть такой интересный эффект: начинающие и опытные разработчики обладают схожей характеристикой — они себя недооценивают. Это касается и зарплаты, и знаний, и способностей. Зачастую совершенно иная ситуация со средними разработчиками, которые себя переоценивают. Поэтому, если вы себя недооцениваете, возможно, вы уже достаточно профессиональны.
Всё-таки нужно
Теперь поговорим о тех вещах, которые всё-таки нужны каждому начинающему программисту.
Английский язык (хотя бы со словарём)
Когда заходит речь о том, какой нужно выучить язык для освоения программирования, то большинство разработчиков скажет, что это, конечно же, английский. Здесь всё примерно так же, как и с математикой. Отсутствие английского — это не повод для того, чтобы не заниматься программированием. Если вы изучаете программирование, уровень английского у вас растёт сам по себе, хотя бы на базовом уровне. Точно так же в конце девяностых и начале двухтысячных молодые ребята, игравшие в компьютерные игры, невольно выучивали английский. Его важность нельзя недооценивать, потому что даже если вы найдёте документацию на русском языке, она будет лишь переводом с языка оригинала — английского — и, зачастую, не самым качественным. Оригинальный контент на других языках появляется крайне редко, всё в первую очередь появляется на английском.
Даже если вы нашли документацию на русском, при работе со своими программами вы будете получать ошибки на английском языке, и с этим нужно будет разбираться. Более того, когда вы начинаете изучать, как решать эти проблемы и исправлять ошибки, вы будете попадать на популярные англоязычные сервисы, где, собственно, все общаются на английском. Опять же, повторимся, это не означает, что незнание английского не позволит вам начать программировать, но нужно понимать, что без английского в принципе не получится делать это профессионально, и его нужно подтягивать с вашими первыми попытками писать программный код.
Первый и самый простой шаг, который необходимо сделать любому начинающему разработчику, это переключить все интерфейсы на всех устройствах и во всех программах (в том числе сайтах) на английский язык. Так вы быстрее освоите профессиональную терминологию.
Желание
Ну и конечно же вам понадобится очень много желания, потому что научиться программированию — не так просто, как кажется на первый взгляд. Полки книжных магазинов завалены книгами с громкими названиями наподобие: "Выучи С++ за 21 день". Кто-то может из этого сделать вывод, что за это время можно научиться программированию. Это не совсем так, а если уж говорить честно — совсем не так. Программирование требует от вас достаточно много времени и упорства, потому что вы будете часто сталкиваться с ситуациями, когда будет непонятно, что делать и куда двигаться, и иногда вы будете испытывать даже полную безысходность. Поэтому программирование, кроме прочего, требует наличия либо ментора, либо команды, либо онлайн-сервисов, призванных вам помочь — одному бывает сложновато. В целом всё это решаемо, и как раз успешное преодоление всех преград и будет показателем того, что у вас всё в дальнейшем получится, потому что в первую очередь, когда нанимают разработчиков, хотят видеть в людях способность разбираться с проблемами самостоятельно.
Время
Если говорить о времени, которое понадобится вам, чтобы овладеть этой профессией — здесь всё очень индивидуально. Как мы уже говорили в самом начале урока, есть разные категории людей. Студенты и школьники, у которых много времени, могут себе позволить потратить его на обучение программированию, но обычно в этом возрасте люди еще не так хорошо понимают, что конкретно им нужно. А вот люди постарше не имеют в своём распоряжении такого количества свободного времени, зато хорошо понимают, зачем им всё это надо, и что нужно учить.
Порог снижения эффективности обучения
Существует такой феномен — снижение эффективности обучения. Что он означает?
Вначале вам нужно заниматься самостоятельно, потому что вас вряд ли кто-то возьмёт на работу, когда вы еще ничего не знаете, и для вас это будет достаточно эффективно, особенно если вы будете использовать современные средства, которые всячески помогают обучению. Но в какой-то момент скорость освоения предмета у вас начнет резко падать. Нужно не пропустить этот момент и устроиться на работу — тогда обучение снова станет весьма эффективным, плюс вы начнете расти уже профессионально.
Есть категория людей, которые получают второе и третье образование, продолжают бесконечно учиться — такая ситуация опасна и вредна, и главное — не попасться в эту ловушку.
Сколько нужно учиться, чтобы начать работать
Нельзя рассчитывать на то, что обучение займёт меньше трёх месяцев, просто потому что это физически невозможно. Даже если вы будете очень быстро учиться, всё впитывать, читать правильные книги, делать всё верно и по минимуму ошибаться, всё равно мозгу нужно какое-то время для адаптации и усвоения большого количества разных аспектов, поэтому 3 месяца — это самый минимальный крайний срок, после которого вам может повезти, и вы устроитесь совсем-совсем джуниором делать какую-то очень простую работу. В целом не стоит на это рассчитывать.
Поэтому приблизительно для изучения основ программирования потребуется от 3 месяцев до 1 года. Больше года обучения без практики — это уже перебор. Давайте считать, что в среднем при неполной занятости, но при постоянном упорном обучении, вы сможете устроиться на должность программиста где-то через полгода после старта.
<!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 18:10:10 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="qiL031V-oPL8nET4sG1vKEEqRLvbOozKYZtozcodi-1F8z_opwANkkrfYGC8Yp9fgSNpEdMNcmjce_KZmBpsgw";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/prog-life/lessons/requirements/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/prog-life/lessons/requirements/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="Ir4i_q_9Npi1iX13DgOQE2gTyLRH1cZNfB4NRoL8KFfNb-nJXYOb-APKWe8CDGBkqBrlHk_iOO_B_pcS0PvPOQ" />
<script src="/vite/assets/inertia-BIn5nEMk.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-DOv3_-Z_.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-26T18:10:10.184Z","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":"PC8zMUTpbe_FVAohtVA2bF5xtPnXFva_aLTuyHQYEUzT_vgGtpfAj3MXLrm5X8YbnniZU98hCB3VVHScJh_2Ig","topics":[{"id":2612,"title":"Доброго времени суток. На данный момент работаю тестеровщиком (manual). Хочу освоить автоматизированное тестирование. С какого языка стоит начинать? Пробовал джава сложновато для меня) вот сейчас стою перед выбором питона или руби. Подскажите пожалуйста. Заранее благодарен. ","plain_title":"Доброго времени суток. На данный момент работаю тестеровщиком (manual). Хочу освоить автоматизированное тестирование. С какого языка стоит начинать? Пробовал джава сложновато для меня) вот сейчас стою перед выбором питона или руби. Подскажите пожалуйста. Заранее благодарен. ","creator":{"public_name":"Dmitry","id":65425,"is_tutor":false},"comments":[{"creator":{"public_name":"Kirill Mokevnin","id":1,"is_tutor":false},"id":4250,"body":"Я бы рекомендовал все же js. Я так понимаю что под автоматизированным тестированием вы имеете ввиду именно приемочные тесты, так вот в js этих инструментов много и развиваются они быстрее чем в других языках.","topic_id":2612},{"creator":{"public_name":"Gulnara Shaykhutdinova","id":187695,"is_tutor":false},"id":38428,"body":"Большое спасибо за годный контент и мотивацию. Успехов в проектах!)","topic_id":2612},{"creator":{"public_name":"Александр Марчелло","id":109799,"is_tutor":false},"id":6785,"body":"Здравствуйте! Посмотрел урок \"как стать программистом\", как раз в нем описана моя проблема, а именно застревание в цикле обучения долгое время, лет 5 уже не могу сдвинуться с места, вроде и знания есть, но каждый раз забрасывал и начинал заново, в наших краях работу программисту сложно найти, пошел админом, но тянуло всегда к кодингу, сейчас решил довести дело до конца, и освоить стэк фронтенда, с html + css уже хорошо, c js пока туго, так как программировал студентом на Paskal, Delphi, Си, цель именно научиться пользоваться языком, как инструментом, как в книге \"Совершенный код\" программировать с использованием языка. Как можно влиться в сообщество Hexleta? где можно пообщаться, показать свои работы?","topic_id":2612}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":24882,"title":"ыв","plain_title":"ыв ","creator":{"public_name":"Айдарбек Умурзаков","id":209627,"is_tutor":false},"comments":[{"creator":{"public_name":"Сергей К.","id":5174,"is_tutor":false},"id":53246,"body":":) Айдарбек, у вас есть вопросы или вы просто решили потренироваться?","topic_id":24882},{"creator":{"public_name":"Таир Тахтиев","id":209712,"is_tutor":false},"id":53282,"body":"не могу просмореть видео (vimeo не грузится), на ютюбе есть этот курс?","topic_id":24882}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":20748,"title":"Всем привет! У меня вопрос такого плана: открываю первый шаг, а у меня вот такое пишут... \"Приносим извинения\nДанное видео запрещено к просмотру согласно его параметрам конфиденциальности.!\" Это что? Так у меня только?...","plain_title":"Всем привет! У меня вопрос такого плана: открываю первый шаг, а у меня вот такое пишут... \"Приносим извинения Данное видео запрещено к просмотру согласно его параметрам конфиденциальности.!\" Это что? Так у меня только?... ","creator":{"public_name":"Руслан Кондрашев","id":194467,"is_tutor":false},"comments":[{"creator":{"public_name":"Руслан Кондрашев","id":194467,"is_tutor":false},"id":44020,"body":"К сожалению пока что да, сейчас попробовал запустить в другом браузере, результат тот же...","topic_id":20748},{"creator":{"public_name":"Александр О.","id":61806,"is_tutor":false},"id":44197,"body":"Ок! Если что, пишите в техподдержку: support@hexlet.io","topic_id":20748},{"creator":{"public_name":"Александр О.","id":61806,"is_tutor":false},"id":43936,"body":"Приветствую, Руслан! Скажите, ошибка сохраняется?","topic_id":20748},{"creator":{"public_name":"Руслан Кондрашев","id":194467,"is_tutor":false},"id":44083,"body":"Сейчас зашёл на сайт с айпада-всё отлично работает,так что всё отлично)","topic_id":20748}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":46697,"title":"не вижу кнопки решение\n","plain_title":"не вижу кнопки решение ","creator":{"public_name":"Вадим","id":310145,"is_tutor":false},"comments":[{"creator":{"public_name":"Roman Ashikov","id":226258,"is_tutor":true},"id":100710,"body":"Добый день, Вадим!\n\nВы имеете в виду кнопку \"Решение учителя\"? Нажмите справа на панели кнопку \"Подсказка\", откроется окно и внизу под спойлером можно будет увидеть решение.","topic_id":46697},{"creator":{"public_name":"Вадим","id":310145,"is_tutor":false},"id":100759,"body":"спасибо\n","topic_id":46697}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":18045,"title":"Привет,\nу меня следующий вопрос.\nВот я начал профессию Фронтенд JS-программист. Подписку пока не оформил, тк хочу сначала потестить, подходит ли мне этот ресурс для изучение или же нет. Так вот, начав бесплатное учение, я удивился количеству доступных курсов. Это нормально? И в чём тогда разница к подписке? ","plain_title":"Привет, у меня следующий вопрос. Вот я начал профессию Фронтенд JS-программист. Подписку пока не оформил, тк хочу сначала потестить, подходит ли мне этот ресурс для изучение или же нет. Так вот, начав бесплатное учение, я удивился количеству доступных курсов. Это нормально? И в чём тогда разница к подписке? ","creator":{"public_name":"Павел Майер","id":163195,"is_tutor":false},"comments":[{"creator":{"public_name":"Павел Майер","id":163195,"is_tutor":false},"id":38100,"body":"Ок, я понял. Спасибо за ответ. ","topic_id":18045},{"creator":{"public_name":"R. D.","id":3,"is_tutor":false},"id":38082,"body":"Здравствуйте!\n\nВот список всех наших курсов https://ru.hexlet.io/courses\nА вот список только бесплатных https://ru.hexlet.io/courses/free\n\nС подпиской доступны все курсы, без подписки — только бесплатные + испытания (https://ru.hexlet.io/challenges) + помощь менторов и учителей.","topic_id":18045}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":37147,"title":"Вижу тут много людей возрастом 30+, желающих переквалифицироваться в программисты.\nХочу немного подбодрить этих людей, рассказав свой опыт.\n\nЯ стал программистом 7 лет назад (не верится, что столько времени прошло). В тот момент я не знал HTML, CSS, JS, с трудом читал на английском со словарем. Был лишь полугодовой опыт обучения Java под руководством наставника. Мне повезло договориться о трудоустройстве на минимально необходимые мне тогда деньги - 300$. Сначала вникал в HTML и CSS, а уже через пару месяцев приступил к JS, параллельно делая простейший рабочий проект. Главное, что мне помогало тогда - жажда знаний. Я искал необходимые мне вещи, переводил, если требовалось, англоязычные статьи, читал книги - и тут же применял их на практике.\nТаким образом параллельно росло сразу несколько навыков: программирование, английский и умение гуглить.\nВсе это время росла и моя зарплата, и спустя 2 года я перешел в другую компанию, где начал зарабатывать почти в 6 раз больше, чем на старте карьеры.\nСейчас, спустя 7 лет, я все еще не стал супер-программистом, но могу обеспечить себя, жену и ребенка всем необходимым - и меня это вполне устраивает.\n\nГлавное, что нужно иметь меняющим профессию - это сильное устойчивое желание развиваться в ней хотя бы первые несколько лет, пока не придет устойчивый результат. Хотелось бы предостеречь тех, кто думает, что пройдет пару курсов, устроится на работу, и на этом сможет успокоиться - так точно ничего толкового не выйдет - зарплата будет низкой, а желание погрызть локти на нелюбимой работе высоким. Поэтому одна из важнейших вещей, о которой в том числе нужно думать во время обучения - будете ли вы готовы все так же обучаться в высоком темпе первые несколько лет. Если сомневаетесь, лучше посмотреть в сторону другой профессии.\n\nТем же, кто уже не сомневается, что хочет быть программистом - удачи и терпения! У вас все получится, независимо от возраста и текущих навыков. Как получилось у меня.","plain_title":"Вижу тут много людей возрастом 30+, желающих переквалифицироваться в программисты. Хочу немного подбодрить этих людей, рассказав свой опыт. Я стал программистом 7 лет назад (не верится, что столько времени прошло). В тот момент я не знал HTML, CSS, JS, с трудом читал на английском со словарем. Был лишь полугодовой опыт обучения Java под руководством наставника. Мне повезло договориться о трудоустройстве на минимально необходимые мне тогда деньги - 300$. Сначала вникал в HTML и CSS, а уже через пару месяцев приступил к JS, параллельно делая простейший рабочий проект. Главное, что мне помогало тогда - жажда знаний. Я искал необходимые мне вещи, переводил, если требовалось, англоязычные статьи, читал книги - и тут же применял их на практике. Таким образом параллельно росло сразу несколько навыков: программирование, английский и умение гуглить. Все это время росла и моя зарплата, и спустя 2 года я перешел в другую компанию, где начал зарабатывать почти в 6 раз больше, чем на старте карьеры. Сейчас, спустя 7 лет, я все еще не стал супер-программистом, но могу обеспечить себя, жену и ребенка всем необходимым - и меня это вполне устраивает. Главное, что нужно иметь меняющим профессию - это сильное устойчивое желание развиваться в ней хотя бы первые несколько лет, пока не придет устойчивый результат. Хотелось бы предостеречь тех, кто думает, что пройдет пару курсов, устроится на работу, и на этом сможет успокоиться - так точно ничего толкового не выйдет - зарплата будет низкой, а желание погрызть локти на нелюбимой работе высоким. Поэтому одна из важнейших вещей, о которой в том числе нужно думать во время обучения - будете ли вы готовы все так же обучаться в высоком темпе первые несколько лет. Если сомневаетесь, лучше посмотреть в сторону другой профессии. Тем же, кто уже не сомневается, что хочет быть программистом - удачи и терпения! У вас все получится, независимо от возраста и текущих навыков. Как получилось у меня. ","creator":{"public_name":"Rodion Mescheryakov","id":173814,"is_tutor":false},"comments":[{"creator":{"public_name":"Юрий Вяткин","id":161535,"is_tutor":false},"id":100199,"body":"Серьёзно? А я думал в этой профессии надо всю жизнь совершенствовать свои навыки.","topic_id":37147}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":8896,"title":"Доброго времени суток!\nОпределяюсь с тем, куда расти. \nЕсли я, вначале своего пути, собираюсь делать сайты на Wordpress, то первым делом необходимо освоить PHP или JS? Прошу объяснить почему.\nБлагодарю за ответ!","plain_title":"Доброго времени суток! Определяюсь с тем, куда расти. Если я, вначале своего пути, собираюсь делать сайты на Wordpress, то первым делом необходимо освоить PHP или JS? Прошу объяснить почему. Благодарю за ответ! ","creator":{"public_name":"Руслан Амангельды","id":143978,"is_tutor":false},"comments":[{"creator":{"public_name":"Руслан Амангельды","id":143978,"is_tutor":false},"id":17861,"body":"Благодарю, Рахим, за такой развернутый ответ!","topic_id":8896},{"creator":{"public_name":"R. D.","id":3,"is_tutor":false},"id":17854,"body":"Руслан, здравствуйте!\n\nСоветую начать с JS. Если вы планируете ограничиться разработкой сайтов на Wordpress, то высока вероятность, что большая часть работы будет по фронтэнду. PHP в любом случае знать хотя бы на базовом уровне нужно, но если вы не собираетесь писать собственные сложные плагины или надстраивать Wordpress, создавая совершенно новые системы, на которые Wordpress не рассчитан изначально, то работа с бэкендом будет ограничиваться базовой настройкой плагинов.\n\nА вот на фронтэнде — кастомизация тем, эффекты, интерфейсы — тут нужен JS+HTML+CSS.\n\nТак или иначе, JS — самый популярный язык, и, в отличие от PHP, в нем меньше моментов, которые могут немного \"поломать\" восприятие новичка. Мы на Хекслете учим современному стандарту ES6, который продвинулся далеко вперед. Сейчас это мощный, гибкий, достаточно красивый язык. Поэтому изучая JS вы в любом случае делаете хорошую инвестицию. А мы учим через JS фундаментальным темам программирования, поэтому потом вам будет легко перенести эти знания на любой другой язык, включая PHP.","topic_id":8896}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":46530,"title":"Ничего не понимаю","plain_title":"Ничего не понимаю ","creator":{"public_name":"","id":309362,"is_tutor":false},"comments":[{"creator":{"public_name":"Roman Ashikov","id":226258,"is_tutor":true},"id":104878,"body":"Приветствую!\n\nУточните, пожалуйста, что именно вызывает у вас вопросы?\n\nИзвиняюсь за долгое ожидание. Не видел вашего сообщения из-за сбоя в системе.","topic_id":46530}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":22530,"title":"\"Начну с понедельника/следующего месяца/следующего года\" - распространённая ментальная ловушка, которая дарит ощущение комфорта и когнитивного уюта. Два года назад именно благодаря этому ресурсу мне удалось получить очень нужный на тот момент бэкграунд для смены рода деятельности (ушёл из прямых продаж с хорошей должности в IT-аутсорс). И вот, спустя долгое время снова тут. Угадайте зачем =)\nПравильно, пришло время расти дальше, \"провинциальный аутсорс\" уже не приносит былого кайфа от деятельности. Идти в серьёзный devops без специальных знаний бесмысленно (имхо). Обнулил профиль и по-новому к вам за новыми знаниями.\nСпасибо, что вы есть =)","plain_title":"\"Начну с понедельника/следующего месяца/следующего года\" - распространённая ментальная ловушка, которая дарит ощущение комфорта и когнитивного уюта. Два года назад именно благодаря этому ресурсу мне удалось получить очень нужный на тот момент бэкграунд для смены рода деятельности (ушёл из прямых продаж с хорошей должности в IT-аутсорс). И вот, спустя долгое время снова тут. Угадайте зачем =) Правильно, пришло время расти дальше, \"провинциальный аутсорс\" уже не приносит былого кайфа от деятельности. Идти в серьёзный devops без специальных знаний бесмысленно (имхо). Обнулил профиль и по-новому к вам за новыми знаниями. Спасибо, что вы есть =) ","creator":{"public_name":"Kirill Koronskiy","id":200836,"is_tutor":false},"comments":[{"creator":{"public_name":"Kirill Mokevnin","id":1,"is_tutor":false},"id":47981,"body":"И вам спасибо). Удачи в новом начинании!","topic_id":22530}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}},{"id":49974,"title":"\"ничего\".\n","plain_title":"ничего ","creator":{"public_name":"Сергей","id":332268,"is_tutor":false},"comments":[{"creator":{"public_name":"Stanislav Dzisiak","id":212236,"is_tutor":true},"id":107095,"body":"Приветствую, Сергей!\n\nДобро пожаловать!","topic_id":49974}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Введение","entity_url":null,"active":true}}],"lesson":{"exercise":null,"units":[{"id":1160,"name":"theory","url":"/courses/prog-life/lessons/requirements/theory_unit"}],"links":[],"ordered_units":[{"id":1160,"name":"theory","url":"/courses/prog-life/lessons/requirements/theory_unit"}],"id":604,"slug":"requirements","state":"approved","name":"Введение","course_order":10,"goal":"Выясняем, что значит «быть программистом» и как им стать","self_study":null,"theory_video_provider":"vimeo","theory_video_uid":"154169609","theory":"Добро пожаловать на Хекслет! Этим уроком мы открываем наш курс, посвященный профессии программиста. На протяжении нескольких уроков мы будем разговаривать о том, кто такие программисты, как ими становятся и что нужно для того, чтобы стать одним из них. Мы подготовили большое количество информации, и вас ждут пять объёмных уроков. Мы не будем писать код, устанавливать софт и делать практические задачи — вместо этого мы разберёмся во всех нюансах профессии.\n\n## На кого рассчитан этот курс\n\n* Школьники\n* Студенты\n* Те, кто хочет поменять профессию\n\nЭтот курс рассчитан на всех, кто хочет стать программистом. Студенты технической специальности почерпнут для себя что-то новое, поскольку далеко не всё, что преподается в институте, имеет отношение к промышленному программированию. Те же, кто не имеет к нему отношения, но хотят им заниматься, получат максимально подробный обзор этой профессии. Программирование открыто для всех, поэтому всё больше и больше людей становятся программистами.\n\n## Страхи\n\n\n\nПоговорим о страхах людей, которые хотят стать программистами. Мы получаем много писем от наших пользователей, в которых они рассказывают, почему они боятся, что у них не получится освоить эту профессию.\n\n### Я — взрослый\n\nИ на первом месте находится страх, который называется \"я — взрослый\". Такому \"взрослому\" может быть и 25, и 50 лет — это абсолютно субъективная оценка. На самом деле, возраст играет малую роль, а большинство программистов уже достаточно взрослые люди. В целом профессия с каждым днем становится старше, и это нормально. Некоторые думают, что чем старше вы становитесь, тем медленнее вы соображаете, но это совершенно не всегда так: если у вас гибкий, сообразительный мозг, и вы понимаете, что вы умеете решать различные задачи и принимать определённые решения, то программирование точно для вас, ведь такие навыки по жизни не теряются. Поэтому не нужно переживать по поводу своего возраста.\n\nДжуниор (младший разработчик) в 20 или даже в 30 лет — это нормально. Существует множество примеров, когда на работу приходили люди, которым под 40 и более лет — они спокойно устраивались и работали в коллективе с молодыми ребятами. Безусловно, у некоторых может возникнуть психологический барьер, когда твой начальник сильно тебя младше, но программирование — такая профессия, где в первую очередь ценится компетентность и то, что вы из себя представляете как профессионал. Поэтому, если вы успешно растете как программист, у вас не будет никаких проблем. Наоборот, накопленный вами опыт может помочь быстрее продвигаться по карьерной лестнице.\n\n### Я плохо знаю математику\n\nДругой частый страх, о котором говорят — \"я плохо знаю математику\".\n\nБыло бы нечестно скрывать, что математика играет важную роль в программировании. В нём много направлений, которые требуют глубоких знаний различных дисциплин. Для разработки сложных игр такой дисциплиной является физика. Существуют направления, где нужна серьёзная математика, но в целом базовое программирование, особенно веб-программирование, где люди создают и настраивают сайты и веб-приложения, требует лишь минимальных знаний.\n\nКогда говорят, что для программирования нужна математика, подразумевают в первую очередь не знание её как таковой — то есть конкретных дисциплин и математического аппарата — а знание математики как способа развития мышления и личности. Математика действительно хорошо помогает структурировать мозги и размышлять немного на другом уровне, раскачивать своё абстрактное мышление и делать многое другое. Поэтому знание математики никогда не повредит. Часто бывает так, что её начинают учить вместе с программированием, и это правильный подход.\n\nПри этом незнание математики не должно становиться причиной не заниматься программированием, но если вы начали им заниматься, то хотя бы на каком-то базовом уровне её можно тоже подтягивать. Вы сами почувствуете тот момент, когда она вам понадобится: при осуществлении каких-либо вычислений или работе с алгоритмами. Множество ресурсов, таких как Coursera, дают доступ к большим университетским и простым базовым курсам, которых достаточно, чтобы подтянуть свои знания по математике.\n\n### Я слишком туп / глуп\n\nНа третьем месте — страх, который называется \"я слишком туп или глуп\".\nЭтот страх часто проявляется у людей, мечтающих стать программистами, у которых есть знакомые, успешно работающие в этой профессии. На фоне таких знакомых им иногда кажется, что они ничего не понимают. Просто потому, что те используют специфические термины и в каких-то вещах разбираются лучше. Чаще всего этот страх не обоснован, и, как показывает практика, есть такой интересный эффект: начинающие и опытные разработчики обладают схожей характеристикой — они себя недооценивают. Это касается и зарплаты, и знаний, и способностей. Зачастую совершенно иная ситуация со средними разработчиками, которые себя переоценивают. Поэтому, если вы себя недооцениваете, возможно, вы уже достаточно профессиональны.\n\n## Всё-таки нужно\n\n\n\nТеперь поговорим о тех вещах, которые всё-таки нужны каждому начинающему программисту.\n\n### Английский язык (хотя бы со словарём)\n\nКогда заходит речь о том, какой нужно выучить язык для освоения программирования, то большинство разработчиков скажет, что это, конечно же, английский. Здесь всё примерно так же, как и с математикой. Отсутствие английского — это не повод для того, чтобы не заниматься программированием. Если вы изучаете программирование, уровень английского у вас растёт сам по себе, хотя бы на базовом уровне. Точно так же в конце девяностых и начале двухтысячных молодые ребята, игравшие в компьютерные игры, невольно выучивали английский. Его важность нельзя недооценивать, потому что даже если вы найдёте документацию на русском языке, она будет лишь переводом с языка оригинала — английского — и, зачастую, не самым качественным. Оригинальный контент на других языках появляется крайне редко, всё в первую очередь появляется на английском.\n\nДаже если вы нашли документацию на русском, при работе со своими программами вы будете получать ошибки на английском языке, и с этим нужно будет разбираться. Более того, когда вы начинаете изучать, как решать эти проблемы и исправлять ошибки, вы будете попадать на популярные англоязычные сервисы, где, собственно, все общаются на английском. Опять же, повторимся, это не означает, что незнание английского не позволит вам начать программировать, но нужно понимать, что без английского в принципе не получится делать это профессионально, и его нужно подтягивать с вашими первыми попытками писать программный код.\n\nПервый и самый простой шаг, который необходимо сделать любому начинающему разработчику, это переключить все интерфейсы на всех устройствах и во всех программах (в том числе сайтах) на английский язык. Так вы быстрее освоите профессиональную терминологию.\n\n### Желание\n\nНу и конечно же вам понадобится очень много желания, потому что научиться программированию — не так просто, как кажется на первый взгляд. Полки книжных магазинов завалены книгами с громкими названиями наподобие: \"Выучи С++ за 21 день\". Кто-то может из этого сделать вывод, что за это время можно научиться программированию. Это не совсем так, а если уж говорить честно — совсем не так. Программирование требует от вас достаточно много времени и упорства, потому что вы будете часто сталкиваться с ситуациями, когда будет непонятно, что делать и куда двигаться, и иногда вы будете испытывать даже полную безысходность. Поэтому программирование, кроме прочего, требует наличия либо ментора, либо команды, либо онлайн-сервисов, призванных вам помочь — одному бывает сложновато. В целом всё это решаемо, и как раз успешное преодоление всех преград и будет показателем того, что у вас всё в дальнейшем получится, потому что в первую очередь, когда нанимают разработчиков, хотят видеть в людях способность разбираться с проблемами самостоятельно.\n\n### Время\n\nЕсли говорить о времени, которое понадобится вам, чтобы овладеть этой профессией — здесь всё очень индивидуально. Как мы уже говорили в самом начале урока, есть разные категории людей. Студенты и школьники, у которых много времени, могут себе позволить потратить его на обучение программированию, но обычно в этом возрасте люди еще не так хорошо понимают, что конкретно им нужно. А вот люди постарше не имеют в своём распоряжении такого количества свободного времени, зато хорошо понимают, зачем им всё это надо, и что нужно учить.\n\n## Порог снижения эффективности обучения\n\nСуществует такой феномен — снижение эффективности обучения. Что он означает?\n\nВначале вам нужно заниматься самостоятельно, потому что вас вряд ли кто-то возьмёт на работу, когда вы еще ничего не знаете, и для вас это будет достаточно эффективно, особенно если вы будете использовать современные средства, которые всячески помогают обучению. Но в какой-то момент скорость освоения предмета у вас начнет резко падать. Нужно не пропустить этот момент и устроиться на работу — тогда обучение снова станет весьма эффективным, плюс вы начнете расти уже профессионально.\n\nЕсть категория людей, которые получают второе и третье образование, продолжают бесконечно учиться — такая ситуация опасна и вредна, и главное — не попасться в эту ловушку.\n\n## Сколько нужно учиться, чтобы начать работать\n\nНельзя рассчитывать на то, что обучение займёт меньше трёх месяцев, просто потому что это физически невозможно. Даже если вы будете очень быстро учиться, всё впитывать, читать правильные книги, делать всё верно и по минимуму ошибаться, всё равно мозгу нужно какое-то время для адаптации и усвоения большого количества разных аспектов, поэтому 3 месяца — это самый минимальный крайний срок, после которого вам может повезти, и вы устроитесь совсем-совсем джуниором делать какую-то очень простую работу. В целом не стоит на это рассчитывать.\n\nПоэтому приблизительно для изучения основ программирования потребуется **от 3 месяцев до 1 года**. Больше года обучения без практики — это уже перебор. Давайте считать, что в среднем при неполной занятости, но при постоянном упорном обучении, вы сможете устроиться на должность программиста где-то через полгода после старта.\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":1160,"name":"theory","url":"/courses/prog-life/lessons/requirements/theory_unit"}],"links":[],"ordered_units":[{"id":1160,"name":"theory","url":"/courses/prog-life/lessons/requirements/theory_unit"}],"id":604,"slug":"requirements","state":"approved","name":"Введение","course_order":10,"goal":"Выясняем, что значит «быть программистом» и как им стать","self_study":null,"theory_video_provider":"vimeo","theory_video_uid":"154169609","theory":"Добро пожаловать на Хекслет! Этим уроком мы открываем наш курс, посвященный профессии программиста. На протяжении нескольких уроков мы будем разговаривать о том, кто такие программисты, как ими становятся и что нужно для того, чтобы стать одним из них. Мы подготовили большое количество информации, и вас ждут пять объёмных уроков. Мы не будем писать код, устанавливать софт и делать практические задачи — вместо этого мы разберёмся во всех нюансах профессии.\n\n## На кого рассчитан этот курс\n\n* Школьники\n* Студенты\n* Те, кто хочет поменять профессию\n\nЭтот курс рассчитан на всех, кто хочет стать программистом. Студенты технической специальности почерпнут для себя что-то новое, поскольку далеко не всё, что преподается в институте, имеет отношение к промышленному программированию. Те же, кто не имеет к нему отношения, но хотят им заниматься, получат максимально подробный обзор этой профессии. Программирование открыто для всех, поэтому всё больше и больше людей становятся программистами.\n\n## Страхи\n\n\n\nПоговорим о страхах людей, которые хотят стать программистами. Мы получаем много писем от наших пользователей, в которых они рассказывают, почему они боятся, что у них не получится освоить эту профессию.\n\n### Я — взрослый\n\nИ на первом месте находится страх, который называется \"я — взрослый\". Такому \"взрослому\" может быть и 25, и 50 лет — это абсолютно субъективная оценка. На самом деле, возраст играет малую роль, а большинство программистов уже достаточно взрослые люди. В целом профессия с каждым днем становится старше, и это нормально. Некоторые думают, что чем старше вы становитесь, тем медленнее вы соображаете, но это совершенно не всегда так: если у вас гибкий, сообразительный мозг, и вы понимаете, что вы умеете решать различные задачи и принимать определённые решения, то программирование точно для вас, ведь такие навыки по жизни не теряются. Поэтому не нужно переживать по поводу своего возраста.\n\nДжуниор (младший разработчик) в 20 или даже в 30 лет — это нормально. Существует множество примеров, когда на работу приходили люди, которым под 40 и более лет — они спокойно устраивались и работали в коллективе с молодыми ребятами. Безусловно, у некоторых может возникнуть психологический барьер, когда твой начальник сильно тебя младше, но программирование — такая профессия, где в первую очередь ценится компетентность и то, что вы из себя представляете как профессионал. Поэтому, если вы успешно растете как программист, у вас не будет никаких проблем. Наоборот, накопленный вами опыт может помочь быстрее продвигаться по карьерной лестнице.\n\n### Я плохо знаю математику\n\nДругой частый страх, о котором говорят — \"я плохо знаю математику\".\n\nБыло бы нечестно скрывать, что математика играет важную роль в программировании. В нём много направлений, которые требуют глубоких знаний различных дисциплин. Для разработки сложных игр такой дисциплиной является физика. Существуют направления, где нужна серьёзная математика, но в целом базовое программирование, особенно веб-программирование, где люди создают и настраивают сайты и веб-приложения, требует лишь минимальных знаний.\n\nКогда говорят, что для программирования нужна математика, подразумевают в первую очередь не знание её как таковой — то есть конкретных дисциплин и математического аппарата — а знание математики как способа развития мышления и личности. Математика действительно хорошо помогает структурировать мозги и размышлять немного на другом уровне, раскачивать своё абстрактное мышление и делать многое другое. Поэтому знание математики никогда не повредит. Часто бывает так, что её начинают учить вместе с программированием, и это правильный подход.\n\nПри этом незнание математики не должно становиться причиной не заниматься программированием, но если вы начали им заниматься, то хотя бы на каком-то базовом уровне её можно тоже подтягивать. Вы сами почувствуете тот момент, когда она вам понадобится: при осуществлении каких-либо вычислений или работе с алгоритмами. Множество ресурсов, таких как Coursera, дают доступ к большим университетским и простым базовым курсам, которых достаточно, чтобы подтянуть свои знания по математике.\n\n### Я слишком туп / глуп\n\nНа третьем месте — страх, который называется \"я слишком туп или глуп\".\nЭтот страх часто проявляется у людей, мечтающих стать программистами, у которых есть знакомые, успешно работающие в этой профессии. На фоне таких знакомых им иногда кажется, что они ничего не понимают. Просто потому, что те используют специфические термины и в каких-то вещах разбираются лучше. Чаще всего этот страх не обоснован, и, как показывает практика, есть такой интересный эффект: начинающие и опытные разработчики обладают схожей характеристикой — они себя недооценивают. Это касается и зарплаты, и знаний, и способностей. Зачастую совершенно иная ситуация со средними разработчиками, которые себя переоценивают. Поэтому, если вы себя недооцениваете, возможно, вы уже достаточно профессиональны.\n\n## Всё-таки нужно\n\n\n\nТеперь поговорим о тех вещах, которые всё-таки нужны каждому начинающему программисту.\n\n### Английский язык (хотя бы со словарём)\n\nКогда заходит речь о том, какой нужно выучить язык для освоения программирования, то большинство разработчиков скажет, что это, конечно же, английский. Здесь всё примерно так же, как и с математикой. Отсутствие английского — это не повод для того, чтобы не заниматься программированием. Если вы изучаете программирование, уровень английского у вас растёт сам по себе, хотя бы на базовом уровне. Точно так же в конце девяностых и начале двухтысячных молодые ребята, игравшие в компьютерные игры, невольно выучивали английский. Его важность нельзя недооценивать, потому что даже если вы найдёте документацию на русском языке, она будет лишь переводом с языка оригинала — английского — и, зачастую, не самым качественным. Оригинальный контент на других языках появляется крайне редко, всё в первую очередь появляется на английском.\n\nДаже если вы нашли документацию на русском, при работе со своими программами вы будете получать ошибки на английском языке, и с этим нужно будет разбираться. Более того, когда вы начинаете изучать, как решать эти проблемы и исправлять ошибки, вы будете попадать на популярные англоязычные сервисы, где, собственно, все общаются на английском. Опять же, повторимся, это не означает, что незнание английского не позволит вам начать программировать, но нужно понимать, что без английского в принципе не получится делать это профессионально, и его нужно подтягивать с вашими первыми попытками писать программный код.\n\nПервый и самый простой шаг, который необходимо сделать любому начинающему разработчику, это переключить все интерфейсы на всех устройствах и во всех программах (в том числе сайтах) на английский язык. Так вы быстрее освоите профессиональную терминологию.\n\n### Желание\n\nНу и конечно же вам понадобится очень много желания, потому что научиться программированию — не так просто, как кажется на первый взгляд. Полки книжных магазинов завалены книгами с громкими названиями наподобие: \"Выучи С++ за 21 день\". Кто-то может из этого сделать вывод, что за это время можно научиться программированию. Это не совсем так, а если уж говорить честно — совсем не так. Программирование требует от вас достаточно много времени и упорства, потому что вы будете часто сталкиваться с ситуациями, когда будет непонятно, что делать и куда двигаться, и иногда вы будете испытывать даже полную безысходность. Поэтому программирование, кроме прочего, требует наличия либо ментора, либо команды, либо онлайн-сервисов, призванных вам помочь — одному бывает сложновато. В целом всё это решаемо, и как раз успешное преодоление всех преград и будет показателем того, что у вас всё в дальнейшем получится, потому что в первую очередь, когда нанимают разработчиков, хотят видеть в людях способность разбираться с проблемами самостоятельно.\n\n### Время\n\nЕсли говорить о времени, которое понадобится вам, чтобы овладеть этой профессией — здесь всё очень индивидуально. Как мы уже говорили в самом начале урока, есть разные категории людей. Студенты и школьники, у которых много времени, могут себе позволить потратить его на обучение программированию, но обычно в этом возрасте люди еще не так хорошо понимают, что конкретно им нужно. А вот люди постарше не имеют в своём распоряжении такого количества свободного времени, зато хорошо понимают, зачем им всё это надо, и что нужно учить.\n\n## Порог снижения эффективности обучения\n\nСуществует такой феномен — снижение эффективности обучения. Что он означает?\n\nВначале вам нужно заниматься самостоятельно, потому что вас вряд ли кто-то возьмёт на работу, когда вы еще ничего не знаете, и для вас это будет достаточно эффективно, особенно если вы будете использовать современные средства, которые всячески помогают обучению. Но в какой-то момент скорость освоения предмета у вас начнет резко падать. Нужно не пропустить этот момент и устроиться на работу — тогда обучение снова станет весьма эффективным, плюс вы начнете расти уже профессионально.\n\nЕсть категория людей, которые получают второе и третье образование, продолжают бесконечно учиться — такая ситуация опасна и вредна, и главное — не попасться в эту ловушку.\n\n## Сколько нужно учиться, чтобы начать работать\n\nНельзя рассчитывать на то, что обучение займёт меньше трёх месяцев, просто потому что это физически невозможно. Даже если вы будете очень быстро учиться, всё впитывать, читать правильные книги, делать всё верно и по минимуму ошибаться, всё равно мозгу нужно какое-то время для адаптации и усвоения большого количества разных аспектов, поэтому 3 месяца — это самый минимальный крайний срок, после которого вам может повезти, и вы устроитесь совсем-совсем джуниором делать какую-то очень простую работу. В целом не стоит на это рассчитывать.\n\nПоэтому приблизительно для изучения основ программирования потребуется **от 3 месяцев до 1 года**. Больше года обучения без практики — это уже перебор. Давайте считать, что в среднем при неполной занятости, но при постоянном упорном обучении, вы сможете устроиться на должность программиста где-то через полгода после старта.\n"},"id":107,"slug":"prog-life","challenges_count":0,"name":"Жизнь программиста","allow_indexing":true,"state":"approved","course_state":"finished","pricing_type":"free","description":"На этом курсе вы познакомитесь с жизнью программиста. Вы узнаете, что значит быть программистом и как им стать. В итоге вы научитесь правильно настраиваться на достижение своих целей. Курс пригодится, если вы решили стать программистом и хотите узнать о навыках, которые нужны для этого. Знания из этого курса помогут узнать о нюансах профессии, о видах компаний и разработки.","kind":"basic","updated_at":"2026-01-20T11:42:45.518Z","language":"other","duration_cache":5220,"skills":["Ориентироваться в программном обеспечении (серверное, прикладное, системное)","Представлять себе преимущества и недостатки продуктовой и заказной разработки","Применять фундаментальные знания для решения задач"],"keywords":["языки программирования","пути карьерного роста","терминология"],"lessons_count":5,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjYxMSwicHVyIjoiYmxvYl9pZCJ9fQ==--b77c7dceef8ae8eb0ba8266aea8ccb1208f4ae65/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[],"lessonMemberUnit":null,"accessToLearnUnitExists":true,"accessToCourseExists":true},"url":"/courses/prog-life/lessons/requirements/theory_unit","version":"143505ecd123087a8fdfa4acb7147980e9d23d76","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 style="margin-bottom:var(--mantine-spacing-xl)" class=""><div class="ratio ratio-16x9"><iframe width="100%" height="auto" src="//player.vimeo.com/video/154169609" loading="lazy" allowFullScreen="" title="video"></iframe></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><p>Добро пожаловать на Хекслет! Этим уроком мы открываем наш курс, посвященный профессии программиста. На протяжении нескольких уроков мы будем разговаривать о том, кто такие программисты, как ими становятся и что нужно для того, чтобы стать одним из них. Мы подготовили большое количество информации, и вас ждут пять объёмных уроков. Мы не будем писать код, устанавливать софт и делать практические задачи — вместо этого мы разберёмся во всех нюансах профессии.</p>
<h2 id="heading-2-1">На кого рассчитан этот курс</h2>
<ul>
<li>Школьники</li>
<li>Студенты</li>
<li>Те, кто хочет поменять профессию</li>
</ul>
<p>Этот курс рассчитан на всех, кто хочет стать программистом. Студенты технической специальности почерпнут для себя что-то новое, поскольку далеко не всё, что преподается в институте, имеет отношение к промышленному программированию. Те же, кто не имеет к нему отношения, но хотят им заниматься, получат максимально подробный обзор этой профессии. Программирование открыто для всех, поэтому всё больше и больше людей становятся программистами.</p>
<h2 id="heading-2-2">Страхи</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjYxNSwicHVyIjoiYmxvYl9pZCJ9fQ==--f4d6139d68f241062dea86990a3dba0f18f8b51b/fears.jpg" alt="Страхи" loading="lazy"/></p>
<p>Поговорим о страхах людей, которые хотят стать программистами. Мы получаем много писем от наших пользователей, в которых они рассказывают, почему они боятся, что у них не получится освоить эту профессию.</p>
<h3 id="heading-3-3">Я — взрослый</h3>
<p>И на первом месте находится страх, который называется "я — взрослый". Такому "взрослому" может быть и 25, и 50 лет — это абсолютно субъективная оценка. На самом деле, возраст играет малую роль, а большинство программистов уже достаточно взрослые люди. В целом профессия с каждым днем становится старше, и это нормально. Некоторые думают, что чем старше вы становитесь, тем медленнее вы соображаете, но это совершенно не всегда так: если у вас гибкий, сообразительный мозг, и вы понимаете, что вы умеете решать различные задачи и принимать определённые решения, то программирование точно для вас, ведь такие навыки по жизни не теряются. Поэтому не нужно переживать по поводу своего возраста.</p>
<p>Джуниор (младший разработчик) в 20 или даже в 30 лет — это нормально. Существует множество примеров, когда на работу приходили люди, которым под 40 и более лет — они спокойно устраивались и работали в коллективе с молодыми ребятами. Безусловно, у некоторых может возникнуть психологический барьер, когда твой начальник сильно тебя младше, но программирование — такая профессия, где в первую очередь ценится компетентность и то, что вы из себя представляете как профессионал. Поэтому, если вы успешно растете как программист, у вас не будет никаких проблем. Наоборот, накопленный вами опыт может помочь быстрее продвигаться по карьерной лестнице.</p>
<h3 id="heading-3-4">Я плохо знаю математику</h3>
<p>Другой частый страх, о котором говорят — "я плохо знаю математику".</p>
<p>Было бы нечестно скрывать, что математика играет важную роль в программировании. В нём много направлений, которые требуют глубоких знаний различных дисциплин. Для разработки сложных игр такой дисциплиной является физика. Существуют направления, где нужна серьёзная математика, но в целом базовое программирование, особенно веб-программирование, где люди создают и настраивают сайты и веб-приложения, требует лишь минимальных знаний.</p>
<p>Когда говорят, что для программирования нужна математика, подразумевают в первую очередь не знание её как таковой — то есть конкретных дисциплин и математического аппарата — а знание математики как способа развития мышления и личности. Математика действительно хорошо помогает структурировать мозги и размышлять немного на другом уровне, раскачивать своё абстрактное мышление и делать многое другое. Поэтому знание математики никогда не повредит. Часто бывает так, что её начинают учить вместе с программированием, и это правильный подход.</p>
<p>При этом незнание математики не должно становиться причиной не заниматься программированием, но если вы начали им заниматься, то хотя бы на каком-то базовом уровне её можно тоже подтягивать. Вы сами почувствуете тот момент, когда она вам понадобится: при осуществлении каких-либо вычислений или работе с алгоритмами. Множество ресурсов, таких как Coursera, дают доступ к большим университетским и простым базовым курсам, которых достаточно, чтобы подтянуть свои знания по математике.</p>
<h3 id="heading-3-5">Я слишком туп / глуп</h3>
<p>На третьем месте — страх, который называется "я слишком туп или глуп".
Этот страх часто проявляется у людей, мечтающих стать программистами, у которых есть знакомые, успешно работающие в этой профессии. На фоне таких знакомых им иногда кажется, что они ничего не понимают. Просто потому, что те используют специфические термины и в каких-то вещах разбираются лучше. Чаще всего этот страх не обоснован, и, как показывает практика, есть такой интересный эффект: начинающие и опытные разработчики обладают схожей характеристикой — они себя недооценивают. Это касается и зарплаты, и знаний, и способностей. Зачастую совершенно иная ситуация со средними разработчиками, которые себя переоценивают. Поэтому, если вы себя недооцениваете, возможно, вы уже достаточно профессиональны.</p>
<h2 id="heading-2-6">Всё-таки нужно</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjYxOCwicHVyIjoiYmxvYl9pZCJ9fQ==--97eb669c83178ad4cbd095cf681dac69d3ce1bec/what_should_be_done.jpg" alt="Что нужно сделать" loading="lazy"/></p>
<p>Теперь поговорим о тех вещах, которые всё-таки нужны каждому начинающему программисту.</p>
<h3 id="heading-3-7">Английский язык (хотя бы со словарём)</h3>
<p>Когда заходит речь о том, какой нужно выучить язык для освоения программирования, то большинство разработчиков скажет, что это, конечно же, английский. Здесь всё примерно так же, как и с математикой. Отсутствие английского — это не повод для того, чтобы не заниматься программированием. Если вы изучаете программирование, уровень английского у вас растёт сам по себе, хотя бы на базовом уровне. Точно так же в конце девяностых и начале двухтысячных молодые ребята, игравшие в компьютерные игры, невольно выучивали английский. Его важность нельзя недооценивать, потому что даже если вы найдёте документацию на русском языке, она будет лишь переводом с языка оригинала — английского — и, зачастую, не самым качественным. Оригинальный контент на других языках появляется крайне редко, всё в первую очередь появляется на английском.</p>
<p>Даже если вы нашли документацию на русском, при работе со своими программами вы будете получать ошибки на английском языке, и с этим нужно будет разбираться. Более того, когда вы начинаете изучать, как решать эти проблемы и исправлять ошибки, вы будете попадать на популярные англоязычные сервисы, где, собственно, все общаются на английском. Опять же, повторимся, это не означает, что незнание английского не позволит вам начать программировать, но нужно понимать, что без английского в принципе не получится делать это профессионально, и его нужно подтягивать с вашими первыми попытками писать программный код.</p>
<p>Первый и самый простой шаг, который необходимо сделать любому начинающему разработчику, это переключить все интерфейсы на всех устройствах и во всех программах (в том числе сайтах) на английский язык. Так вы быстрее освоите профессиональную терминологию.</p>
<h3 id="heading-3-8">Желание</h3>
<p>Ну и конечно же вам понадобится очень много желания, потому что научиться программированию — не так просто, как кажется на первый взгляд. Полки книжных магазинов завалены книгами с громкими названиями наподобие: "Выучи С++ за 21 день". Кто-то может из этого сделать вывод, что за это время можно научиться программированию. Это не совсем так, а если уж говорить честно — совсем не так. Программирование требует от вас достаточно много времени и упорства, потому что вы будете часто сталкиваться с ситуациями, когда будет непонятно, что делать и куда двигаться, и иногда вы будете испытывать даже полную безысходность. Поэтому программирование, кроме прочего, требует наличия либо ментора, либо команды, либо онлайн-сервисов, призванных вам помочь — одному бывает сложновато. В целом всё это решаемо, и как раз успешное преодоление всех преград и будет показателем того, что у вас всё в дальнейшем получится, потому что в первую очередь, когда нанимают разработчиков, хотят видеть в людях способность разбираться с проблемами самостоятельно.</p>
<h3 id="heading-3-9">Время</h3>
<p>Если говорить о времени, которое понадобится вам, чтобы овладеть этой профессией — здесь всё очень индивидуально. Как мы уже говорили в самом начале урока, есть разные категории людей. Студенты и школьники, у которых много времени, могут себе позволить потратить его на обучение программированию, но обычно в этом возрасте люди еще не так хорошо понимают, что конкретно им нужно. А вот люди постарше не имеют в своём распоряжении такого количества свободного времени, зато хорошо понимают, зачем им всё это надо, и что нужно учить.</p>
<h2 id="heading-2-10">Порог снижения эффективности обучения</h2>
<p>Существует такой феномен — снижение эффективности обучения. Что он означает?</p>
<p>Вначале вам нужно заниматься самостоятельно, потому что вас вряд ли кто-то возьмёт на работу, когда вы еще ничего не знаете, и для вас это будет достаточно эффективно, особенно если вы будете использовать современные средства, которые всячески помогают обучению. Но в какой-то момент скорость освоения предмета у вас начнет резко падать. Нужно не пропустить этот момент и устроиться на работу — тогда обучение снова станет весьма эффективным, плюс вы начнете расти уже профессионально.</p>
<p>Есть категория людей, которые получают второе и третье образование, продолжают бесконечно учиться — такая ситуация опасна и вредна, и главное — не попасться в эту ловушку.</p>
<h2 id="heading-2-11">Сколько нужно учиться, чтобы начать работать</h2>
<p>Нельзя рассчитывать на то, что обучение займёт меньше трёх месяцев, просто потому что это физически невозможно. Даже если вы будете очень быстро учиться, всё впитывать, читать правильные книги, делать всё верно и по минимуму ошибаться, всё равно мозгу нужно какое-то время для адаптации и усвоения большого количества разных аспектов, поэтому 3 месяца — это самый минимальный крайний срок, после которого вам может повезти, и вы устроитесь совсем-совсем джуниором делать какую-то очень простую работу. В целом не стоит на это рассчитывать.</p>
<p>Поэтому приблизительно для изучения основ программирования потребуется <strong>от 3 месяцев до 1 года</strong>. Больше года обучения без практики — это уже перебор. Давайте считать, что в среднем при неполной занятости, но при постоянном упорном обучении, вы сможете устроиться на должность программиста где-то через полгода после старта.</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/prog-life/lessons/requirements/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 / 5</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><button style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root" type="button"><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-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></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></button><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/prog-life/lessons/requirements/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><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 mantine-active m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" type="button"><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-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></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-D8AK0-_C.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-DOv3_-Z_.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>