Привет, друзья! С вами Дмитрий Дементий, редактор блога Hexlet. У меня за плечами около 10 лет работы с текстами и контент-маркетингом, но совсем нет опыта в программировании. Проект Brain Games, который я прошел в мае 2019 года в рамках профессии «Фронтенд JavaScript», помог мне прокачать знания и умения и научил полезным приемам работы. Делюсь главными открытиями. Возможно, они помогут новичкам понять ценность стартового проекта.
Brain Games — первый из четырех практических проектов во всех профессиях, кроме Java. Он знакомит курсантов с экосистемой языка. Вы самостоятельно настраиваете рабочее окружение, работаете с архитектурой приложения. В процессе работы над Brain Games нарабатываете навыки работы с системой контроля версий и сервисом GitHub.
Проект знакомит курсанта с инструментами контроля качества кода. С помощью внешних сервисов студент делает репозиторий на GitHub информативным и удобным для потенциальных пользователей приложения, менторов и контрибьюторов. Очень важный момент: Brain Games учит делать рабочий код самостоятельно, а потом совершенствовать его с ментором. Дальше рассказываю о конкретных открытиях, которые сделал благодаря работе над Brain Games.
До Brain Games я делал приложения только с помощью Create React App. Это шаблон, с помощью которого можно сделать проект на React без настройки среды. Во время работы над Brain Games каждый шаг был для меня новым. Руками создал все файлы, потрогал каждую директорию, подключил зависимости.
Откровением стали исполняемые файлы и Makefile. Разобрался с инициализацией npm-пакета. Долго бился с ошибкой в package.json, из-за которой не запускался код. Оказалось, что я неправильно указал название исполняемого файла.
С архитектурой работал на каждом шаге до утверждения проекта ментором. Наверное, это одна из двух важнейших частей работы над Brain Games. Важно набить шишки и пройти этот путь, чтобы усвоить теоретические знания.
До Brain Games я прошел курс «Системы контроля версий», создавал на GitHub репозитории и даже опубликовал простое веб-приложение. Но в процессе работы над проектом буквально нарабатывал навыки работы с GitHub. Для завершения проекта потребовалось 63 коммита в репозиторий. Это мелочи для опытных программистов, но для новичка это бесценный опыт работы с GitHub.
Я знал, что на Windows не очень удобно разрабатывать. Перед стартом Brain Games даже установил виртуальную ОС Linux из магазина приложений Microsoft. Во время работы над Brain Games почувствовал, почему на «винде» неудобно работать. Вот несколько моментов:
Чтобы нормально завершить проект, пришлось пользоваться виртуальной ОС Linux. Но это полумеры. Кстати, если вы пользуетесь Windows, может пригодиться гайд по работе с Linux внутри Windows.
Одним из заданий в Brain Games была установка и настройка линтера. Это инструмент контроля качества кода. Он проверят код на соответствие указанным в настройках стандартам. До проекта я пользовался установленным в редакторе инструментом автоматического форматирования кода Prettier. Теперь понял, что ESlint полезнее для новичков. Этот инструмент не только помогает правильно оформлять код. Он показывает неиспользуемые переменные, опасные мутации и другие проблемы, которые неопытный курсант самостоятельно может не заметить.
Asciinema удобно использовать для создания обучающего контента и пользовательских руководств. Во время работы над Brain Games освоил этот простой и удобный инструмент. Больше всего времени потратил на поиск аналога Asciinema для Windows. В мае 2019 года достойной альтернативы не нашел.
Рефакторинг кода приложения заставляет думать, искать информацию и проверять гипотезы. Уверен, каждого курсанта на этом этапе ждут свои открытия. Вот несколько моих:
Код показывать не буду, чтобы не было спойлеров.
Когда я выполнял задания проекта самостоятельно, кое-где халтурил ради скорости. Из-за этого в коде появились неинформативные названия переменных типа func. Из-за стремления быстрее пройти шаг отключал правила линтера, а не исправлял ошибки. Да и жестко прописал прогрессию, чтобы не тратить время на динамическую генерацию. Ментор не пропустил ни одной ошибки. Благодаря этому мне не стыдно за финальный код приложения.
Проект заставил меня работать в полную силу. Он дал мне знания и первый практический опыт. Еще я узнал, что работа над кодом генерирует эмоции. Каждую решенную задачу я отмечал боевым кличем апачей. А когда ментор принял проект, бурно радовался и бил себя в грудь, как Кинг-Конг.