Основные возможности платформы Hexlet не доступны в вашем браузере. Пожалуйста, обновитесь.

Наши программы обучения – «профессии» – это четкие пути от самых основ до практики и первой работы. Вы можете начать любую профессию и переходить из профессии в профессию в любой момент.

  1. Бэкенд JS-программист (node.js)
  2. Фронтенд JS-программист
  3. PHP-программист
  4. Java-программист

Если не знаете с чего начать, то советуем взяться за профессию «Бэкенд JS-программист».


Профессия Бэкенд JS-программист (node.js)

Разработка бэкенд-компонентов веб-приложений. Проекты с ментором, помощь в трудоустройстве. Путь от основ программирования до практики и первой работы. Полноценное обучение стоит $24 в месяц (или $240 в год).
Подробнее о ценах.

Начать обучение бесплатно

Учебный план

Цель

Первый проект нацелен на знакомство с экосистемой JavaScript. Она достаточно сложна по сравнению с языками вроде PHP, Ruby или Python. Количество понятий, инструментов и их связок настолько большое, что даже у опытных разработчиков иногда голова идет кругом. Чтобы стартануть по всем канонам даже простейший проект придется как следует повозиться. Вот неполный перечень ключевых компонентов любого современного js приложения:

  • Пакетный менеджер (npm, yarn). Управляет зависимостями, выполняет хуки и описывает проект.
  • Babel (Транспайлер). Позволяет использовать новые фичи, даже если они не поддерживаются средой исполнения.
  • Eslint - линтер. Проверяет корректность кода на соответствие стандартам кодирования.

Кроме этого, все более популярным становится использование статического анализатора flow. По сути, мы получаем опционально статически типизированный код на js, что помогает выявлять на этапе разработки неимоверное количество ошибок и проблем.

После прохождения проекта вы сможете легко настраивать свои собственные проекты, подключать новые библиотеки, ориентироваться в структуре кода, а так же получите базовые навыки отладки. Прокачаете себя в использовании модулей js и работе с исполняемыми файлами. Опубликуете свой первый пакет в npm.

Описание

В рамках проекта необходимо реализовать набор мини-игр, запускаемых из консоли. Эти игры похожи на то, что обычно называют "Brain Games".

Пример игры:

Welcome to the Brain Game!
What number is missing in this progression?

May I have your name? John
Hello, John!

Question: 14 .. 18 20 22 24 26 28
Your answer: 16
Correct!
Question: 5 6 7 8 9 .. 11 12
Your answer: 10
Correct!
Question: 12 15 18 21 .. 27 30 33
Your answer: 24
Correct!
Congratulations, John!

Цель

Второй проект является логическим развитием первого. Он захватывает большую часть синтаксических возможностей js и использует более сложную архитектуру. Затрагиваемые темы:

  • cli. В этом проекте вы научитесь создавать cli приложения так, как это делается в настоящей жизни, с использованием специальных библиотек, занимающихся парсингом входных параметров, валидацией и генерацией помощи.
  • Форматы данных: json, yaml, ini. Кроме понимания самих форматов, вы так же научитесь транслировать данные из js в эти форматы и обратно.
  • Алгоритмическая подготовка. Вас ждет обработка и трансформация деревьев. Немного кода, кипятящего мозг, никогда не помешает.
  • Архитектурные принципы: Фасад, Адаптер. Вы познакомитесь и на практике реализуете одни из самых распространенных подходов при организации кода.
  • Полиморфизм
  • Функциональное программирование

Красной нитью сквозь этот проект будет проходить unit-тестирование, а в идеале - разработка через тесты.

Описание

В рамках данного проекта необходимо реализовать утилиту для поиска отличий в конфигурационных файлах.

Возможности утилиты:

  • Поддержка разных форматов
  • Генерация отчета в виде plain text, pretty и json

Пример использования:

$ gendiff --format plain first-config.ini second-config.ini
Setting "common.setting2" deleted.
Setting "common.setting4" added with value "blah blah".
Setting "group1.baz" changed from "bas" to "bars".
Section "group2" deleted.

Цель

Основная задача этого проекта, показать общие принципы работы с асинхронным кодом в js. Затрагиваемые темы:

  • Тестирование с использованием Mock/Stub
  • Активный файловый ввод/вывод
  • Работа с ошибками и исключениями
  • Знакомство с модулями nodejs: os, path, fs, url
  • Работа с DOM. Базовые манипуляции
  • Promises, Async/Await
  • Работа с HTTP

Описание

В рамках данного проекта необходимо реализовать утилиту для скачивания указанного адреса из сети. Принцип ее работы очень похож на то, что делает браузер при сохранении страниц сайтов.

Возможности утилиты:

  • Можно указать папку, в которую нужно положить готовый файл
  • Утилита скачивает все ресурсы указанные на странице и меняет страницу так, что начинает ссылаться на локальные версии

Пример использования:

$ page-loader --output /var/tmp https://hexlet.io/courses

✔ https://ru.hexlet.io/lessons.rss
✔ https://ru.hexlet.io/assets/application.css
✔ https://ru.hexlet.io/assets/favicon.ico
✔ https://ru.hexlet.io/assets/favicon-196x196.png
✔ https://ru.hexlet.io/assets/favicon-96x96.png
✔ https://ru.hexlet.io/assets/favicon-32x32.png
✔ https://ru.hexlet.io/assets/favicon-16x16.png
✔ https://ru.hexlet.io/assets/favicon-128.png

Page was downloaded as 'ru-hexlet-io-courses.html'

Цель

Дипломный проект ставит жирную точку в обучении. Цель этого проекта, проработка прикладных инструментов веб-разработчика. Фреймворки, базы данных, orm, все это будет здесь. Темы:

  • Проектирование. Отображение предметной области на хранилище, одна из ключевых задач при разработке. Нормализация (и Денормализация) базы данных, связи между сущностями, все это входит в задачи по проектированию.

  • Heroku (PaaS). Разработка, это только половина дела. Доставка до рабочего окружения и запуск проекта не менее важная задача.

  • Rollbar. Трекинг ошибок в продакшене это залог спокойного сна и уверенность в работоспособности проекта.

  • Webpack. Любой современный веб-сайт, так или иначе, содержит клиентский код, даже если не использует фронтенд фреймворки. Причем речь не только про js, а так же про css и всевозможные процессоры (пре и пост). Все это добро нуждается в управлении и сборке.

  • PostCSS, Autoprefixer. Главный тренд в верстке.

  • Gulp. Чем сложнее проект тем больше консольных задач он включает. Для упрощения их создания и поддержки существует целый класс решений.

  • ORM. Типичные приложения не работают с базой данных напрямую. Этим занимаются специальные фреймворки. Они берут на себя задачи по построению запросов, выборке, сохранению сущностей в базе данных.

  • Микрофреймворк Koa.js. Замена expressjs созданная ее же разработчиками. Самый модный и перспективный.

  • Шаблонизация. Правильный поход к генерации серверного html резко повышает коэффициент повторно используемого кода и упрощает поддержку проекта

  • Bootstrap. Главный css-фреймворк админок и прототипов. Хороший пример для обучения тому, как должен быть структурирован html и css.

Описание

Необходимо разработать Task Manager, систему управления задачами, подобную http://www.redmine.org/ Основные возможности системы:

  • Регистрация
  • Аутентификация
  • Управление задачами
  • Фильтрация

Проекты

Вы будете разрабатывать полноценные консольные и веб-приложения, а ментор будет помогать.

Вы создадите и опубликуете на GitHub 4 полноценных приложения. Код и способность рассказывать о нем важны при устройстве на работу.

С ментором вы на практике научитесь писать красивый, надежный и тестируемый код.

Освоите основы построения архитектуры приложений.

Освоите лучшие практики работы с Git, системами сборки и деплоя, командной строкой, базами данных.

Сможете самостоятельно создавать несложные консольные и веб-приложения, самостоятельно разбираться в новой, незнакомой web-технологии.

Поучаствуете в настоящем, боевом процессе написания, тестирования и вывода кода в production.

Навыки после завершения программы

  Фундаментальное понимание программирования

  Разработка в среде Node.js

  Работа с Linux и командной строкой

  Умение работать с инструментами разработки

  Знание SQL

  Работа с базами данных

  Понимание самых свежих стандартов ES

  Написание автоматических тестов

  Алгоритмическое мышление

  Объектно-ориентированное программирование

  Автоматическое тестирование

  Умение строить бэкенд-части веб-приложений

  Разработка веб-сайтов и приложений

  Понимание протокола HTTP

  Знание инструментов Configuration Management

  Администрирование Linux (базовое)

  Умение работать с Git и Github

  Установка и настройка среды разработки

  Работа с требованиями и дедлайном


Профессия Фронтенд JS-программист

Разработка фронтэнд-компонентов веб-приложений. Проекты с ментором, помощь в трудоустройстве. Путь от основ программирования до практики и первой работы. Полноценное обучение стоит $24 в месяц (или $240 в год).
Подробнее о ценах.

Начать обучение бесплатно

Учебный план

Цель

Первый проект нацелен на знакомство с экосистемой JavaScript. Она достаточно сложна по сравнению с языками вроде PHP, Ruby или Python. Количество понятий, инструментов и их связок настолько большое, что даже у опытных разработчиков иногда голова идет кругом. Чтобы стартануть по всем канонам даже простейший проект придется как следует повозиться. Вот неполный перечень ключевых компонентов любого современного js приложения:

  • Пакетный менеджер (npm, yarn). Управляет зависимостями, выполняет хуки и описывает проект.
  • Babel (Транспайлер). Позволяет использовать новые фичи, даже если они не поддерживаются средой исполнения.
  • Eslint - линтер. Проверяет корректность кода на соответствие стандартам кодирования.

Кроме этого, все более популярным становится использование статического анализатора flow. По сути, мы получаем опционально статически типизированный код на js, что помогает выявлять на этапе разработки неимоверное количество ошибок и проблем.

После прохождения проекта вы сможете легко настраивать свои собственные проекты, подключать новые библиотеки, ориентироваться в структуре кода, а так же получите базовые навыки отладки. Прокачаете себя в использовании модулей js и работе с исполняемыми файлами. Опубликуете свой первый пакет в npm.

Описание

В рамках проекта необходимо реализовать набор мини-игр, запускаемых из консоли. Эти игры похожи на то, что обычно называют "Brain Games".

Пример игры:

Welcome to the Brain Game!
What number is missing in this progression?

May I have your name? John
Hello, John!

Question: 14 .. 18 20 22 24 26 28
Your answer: 16
Correct!
Question: 5 6 7 8 9 .. 11 12
Your answer: 10
Correct!
Question: 12 15 18 21 .. 27 30 33
Your answer: 24
Correct!
Congratulations, John!

Цель

Второй проект является логическим развитием первого. Он захватывает большую часть синтаксических возможностей js и использует более сложную архитектуру. Затрагиваемые темы:

  • cli. В этом проекте вы научитесь создавать cli приложения так, как это делается в настоящей жизни, с использованием специальных библиотек, занимающихся парсингом входных параметров, валидацией и генерацией помощи.
  • Форматы данных: json, yaml, ini. Кроме понимания самих форматов, вы так же научитесь транслировать данные из js в эти форматы и обратно.
  • Алгоритмическая подготовка. Вас ждет обработка и трансформация деревьев. Немного кода, кипятящего мозг, никогда не помешает.
  • Архитектурные принципы: Фасад, Адаптер. Вы познакомитесь и на практике реализуете одни из самых распространенных подходов при организации кода.
  • Полиморфизм
  • Функциональное программирование

Красной нитью сквозь этот проект будет проходить unit-тестирование, а в идеале - разработка через тесты.

Описание

В рамках данного проекта необходимо реализовать утилиту для поиска отличий в конфигурационных файлах.

Возможности утилиты:

  • Поддержка разных форматов
  • Генерация отчета в виде plain text, pretty и json

Пример использования:

$ gendiff --format plain first-config.ini second-config.ini
Setting "common.setting2" deleted.
Setting "common.setting4" added with value "blah blah".
Setting "group1.baz" changed from "bas" to "bars".
Section "group2" deleted.

Цель

Основная задача этого проекта научиться работать с DOM и построить первое реальное фронтенд приложение Затрагиваемые темы:

  • Браузерная инфраструктура (webpack)

Описание

Задача проекта, создать RSS Reader.

Цель

В 4 проекте задействованы все изучаемые раньше технологии, активное взаимодействие с бекендом (сервисы) и вебсокеты для построения real-time приложения.

Описание

Необходимо разработать аналог Slack.

Проекты

Вы будете разрабатывать полноценные консольные и веб-приложения, а ментор будет помогать.

Вы создадите и опубликуете на GitHub 4 полноценных приложения. Код и способность рассказывать о нем важны при устройстве на работу.

С ментором вы на практике научитесь писать красивый, надежный и тестируемый код.

Освоите основы построения архитектуры приложений.

Освоите лучшие практики работы с Git, системами сборки и деплоя, командной строкой, базами данных.

Сможете самостоятельно создавать несложные консольные и веб-приложения, самостоятельно разбираться в новой, незнакомой web-технологии.

Поучаствуете в настоящем, боевом процессе написания, тестирования и вывода кода в production.

Навыки после завершения программы

  Фундаментальное понимание программирования

  Работа с командной строкой

  Умение работать с инструментами разработки

  Понимание самых свежих стандартов ES

  Написание автоматических тестов

  Алгоритмическое мышление

  Объектно-ориентированное программирование

  Автоматическое тестирование

  Умение строить фронтенд-части веб-приложений

  Разработка веб-сайтов и приложений

  Понимание протокола HTTP

  Знание инструментов Configuration Management

  Администрирование Linux (базовое)

  Умение работать с Git и Github

  Установка и настройка среды разработки

  Работа с требованиями и дедлайном


Профессия PHP-программист

Разработка веб-приложений и сервисов. Проекты с ментором, помощь в трудоустройстве. Путь от основ программирования до практики и первой работы. Полноценное обучение стоит $24 в месяц (или $240 в год).
Подробнее о ценах.

Начать обучение бесплатно

Учебный план

Цель

Цель данного проекта - закрепить знания, полученные во время прохождения курсов, получить навыки разработки на языке PHP, научиться настраивать рабочее окружение для разработки, получить базовые навыки работы с репозиториями, анализаторами качества кода и менеджерами зависимостей на примере composer.

Описание проекта

В рамках даного проекта необходимо реализовать набор мини-игр, запускаемых из консоли.

Пример игрового процесса:

$ ./bin/game-progression
Welcome to the Brain Game!

May I have your name? Roman

Hello, Roman!

What number is missing in this progression?
14 .. 18 20 22 24 26 28

Your answer: 16
Right!

What number is missing in this progression?
5 6 7 8 9 .. 11 12

Your answer: 10
Right!

What number is missing in this progression?
12 15 18 21 .. 27 30 33

Your answer: 24
Right!

Congratulations, Roman! You Win!

Цель

Второй проект является логическим развитием первого. Он захватывает большую часть синтаксических возможностей php и использует более сложную архитектуру. Затрагиваемые темы:

  • cli. В этом проекте вы научитесь создавать cli приложения так, как это делается в настоящей жизни, с использованием специальных библиотек, занимающихся парсингом входных параметров, валидацией и генерацией помощи.
  • Форматы данных: json, yaml, ini. Кроме понимания самих форматов, вы так же научитесь транслировать данные из php в эти форматы и обратно.
  • Алгоритмическая подготовка. Вас ждет обработка и трансформация деревьев. Немного кода, кипятящего мозг, никогда не помешает.
  • Архитектурные принципы: Фасад, Адаптер. Вы познакомитесь и на практике реализуете одни из самых распространенных подходов при организации кода.
  • Полиморфизм
  • Функциональное программирование

Красной нитью сквозь этот проект будет проходить unit-тестирование, а в идеале - разработка через тесты.

Описание

В рамках данного проекта необходимо реализовать утилиту для поиска отличий в конфигурационных файлах.

Возможности утилиты:

  • Поддержка разных форматов
  • Генерация отчета в виде plain text, pretty и json

Пример использования:

$ gendiff --format plain first-config.ini second-config.ini
Setting "common.setting2" deleted.
Setting "common.setting4" added with value "blah blah".
Setting "group1.baz" changed from "bas" to "bars".
Section "group2" deleted.

Цель

Третий проект знакомит нас с миром веб-программирования. Он содержит в себе не так много кода, но затрагивает очень широкий спектр тем включая деплой сайта в боевую среду.

  • Фронтенд (Bootstrap, CDN)
  • Микрофреймворк Lumen (Контроллер, Маршрутизация, Представление)
  • База данных, (Миграции, query builders)
  • Деплой (PaaS, Heroku)
  • HTTP (в том числе выполнение запросов)
  • Интеграционное тестирование
  • Логгирование

Описание

В рамках данного проекта необходимо реализовать сайт, который анализирует указанные страницы на SEO пригодность по аналогии с https://varvy.com/pagespeed/

Цель

Дипломный проект ставит жирную точку в обучении. Цель этого проекта, проработка прикладных инструментов веб-разработчика. Фреймворки, базы данных, orm, все это будет здесь. Темы:

  • Проектирование. Отображение предметной области на хранилище, одна из ключевых задач при разработке. Нормализация (и Денормализация) базы данных, связи между сущностями, все это входит в задачи по проектированию.
  • ORM. Типичные приложения не работают с базой данных напрямую. Этим занимаются специальные фреймворки. Они берут на себя задачи по построению запросов, выборке, сохранению сущностей в базе данных.
  • Heroku (PaaS). Разработка, это только половина дела. Доставка до рабочего окружения и запуск проекта не менее важная задача.
  • Rollbar. Трекинг ошибок в продакшене это залог спокойного сна и уверенность в работоспособности проекта.
  • Фреймворк Laravel.

Описание

Необходимо разработать Task Manager, систему управления задачами, подобную http://www.redmine.org/ Основные возможности системы:

  • Регистрация
  • Аутентификация
  • Управление задачами
  • Фильтрация

Проекты

Вы будете разрабатывать полноценные консольные и веб-приложения, а ментор будет помогать.

Вы создадите и опубликуете на GitHub 4 полноценных приложения. Код и способность рассказывать о нем важны при устройстве на работу.

С ментором вы на практике научитесь писать красивый, надежный и тестируемый код.

Освоите основы построения архитектуры приложений.

Освоите лучшие практики работы с Git, системами сборки и деплоя, командной строкой, базами данных.

Сможете самостоятельно создавать несложные консольные и веб-приложения, самостоятельно разбираться в новой, незнакомой web-технологии.

Поучаствуете в настоящем, боевом процессе написания, тестирования и вывода кода в production.

Навыки после завершения программы

  Фундаментальное понимание программирования

  Работа с Linux и командной строкой

  Знание SQL

  Работа с базами данных

  Написание автоматических тестов

  Алгоритмическое мышление

  Объектно-ориентированное программирование

  Автоматическое тестирование

  Умение строить веб-приложения на основе микрофреймворков

  Разработка веб-сайтов и приложений

  Понимание протокола HTTP

  Знание инструментов Configuration Management

  Администрирование Linux (базовое)

  Умение работать с Git и Github

  Установка и настройка среды разработки

  Работа с требованиями и дедлайном


Профессия Java-программист

Разработка приложений на языке Java. Путь от основ программирования до практики и первой работы. Полноценное обучение стоит $24 в месяц (или $240 в год).
Подробнее о ценах.

Начать обучение бесплатно

Учебный план

Данный курс для тех, кто уже знает синтаксис языка, но хотел бы разобраться в том, что из себя представляет чёрный ящик в виде JVM с её ByteCode, «руками потрогать» то, во что превращается ваш код после компиляции, научиться читать ByteCode и как следствие научиться анализировать программы даже без исходных кодов! Все это и многое другое в нашем новом курсе, который может быть востребованный даже среди ведущих разработчиков.

Уже с первых уроков вы узнаете, что такое Java Bytecode и как его понимать, а к концу сможете делать много самостоятельных операций. Прохождение курса позволит вам лучше узнать платформу, с которой вы работаете, или же создать собственный язык программирования, легче проводить отладку и даже заняться низкоуровневой оптимизацией.

Следующий рекомендованный курс: "Java: Структуры данных" (https://ru.hexlet.io/courses/collections)

Навыки после завершения программы

  Фундаментальное понимание программирования

  Работа с командной строкой

  Умение работать с инструментами разработки

  Умение работать со встроенными структурами данных

  Навыки создания собственных структур данных

  Умение работать напрямую с байт-кодом Java

  Объектно-ориентированное программирование

  Понимание обобщенных данных в Java

  Алгоритмическое мышление

  Понимание протокола HTTP

  Работа с базами данных