Frontend-разработка
Присоединяйтесь к нашей программе обучения
Задание 5. Рефакторинг.
3-6 месяцевОдин из заключительных этапов — большой рефакторинг на основе наших стандартов с созданием issues в ваших github-репозиториях и проверка ваших знаний на личной беседе (в офисе или через созвон) c неограниченным количеством попыток.
Но перед стартом последнего этапа просим вас пройти небольшой опрос.
Ссылка для общения в чате в телеграм.
Описание задания
В этом задании у нас три шага:
1. Рефакторинг по нашим стандартам
У нас сейчас есть объемный документ, куда мы собираем все полезные и нужные требования к реальным проектам, готовым к сдаче заказчикам. В документах собраны правила, которые помогают избегать нерасширяемого и не очевидного кода, и все их нужно хотя бы в общих чертах помнить, прежде чем приступать к реальным проектам. А лучший способ запомнить — попробовать исправить все свои ошибки в ваших выполненных за время обучения проектах. Для помощи вам в нахождении неточностей участники программы обучения сами создали плагин для eslint, которым вы можете воспользоваться. (берите в расчет, что плагин ещё активно тестируется, там могут быть ошибки. Не бойтесь создавать ишью в репозитории плагина, а ещё лучше сами начинайте контрибьютить в open-source, исправляя недочёты и открывая Pull Request.)
Главное — не бойтесь, что мы будем криво смотреть на недочеты в прошлом коде. Мы очень лояльно относимся к коду новичков, так как сами через это проходили :)
Описание стандартов находится в нашем репозитории на Github.
Мы выдаем вам требования, а вы вносите по ним правки в текущие проекты. Затем после рефакторинга напишите нам в чате, что все готово.
ВНИМАНИЕ! Перед тем, как передать нам проекты на ревью окончательно проверьте и убедитесь, чтобы ВСЕ СТАНДАРТЫ ТЩАТЕЛЬНО СОБЛЮДАЛИСЬ. Мы все равно потом будем очень внимательно смотреть ваши проекты и оставлять на все нарушения задачи, но нам не хотелось бы тратить время на банальные и скучные правки, поэтому если вы заранее по максимуму подготовите свой код, то ревьюверы будут вам благодарны, обязательно это отметят, а само ревью будет проводиться гораздо эффективней, а задачи будут гораздо интересней.
2. Код-ревью
Прежде чем приступить к этому этапу, отправьте свои репозитории нам для проверки через вот эту форму заявки на ревью проектов. Только получив эту форму, мы начнем проверку :)
Обычно это довольно длительный процесс, так как тут нужна синхронизация с проверяющим и часто много правок. Проверка кода в рамках ревью будет не только на предмет наших стандартов, но и на предмет продуманной и ясной архитектуры, читаемого и понятного кода, удобного интерфейса работы с вашими функциями.
Мы будем ревьюить код, как реальный проект, который нам предстояло бы долго поддерживать. Он пройдёт проверку тогда, когда будут внесены все правки. Эти же правила будут применяться и при всех ревью на реальных проектах после приема на работу. Обычно это занимает довольно много времени: приходиться проект практически полностью переписывать на два, три, иногда четыре и более раз — это нормально. Логично, что когда вы делали первую версию, у вас совсем не было опыта и вы там сделали много ошибок при проектировании и реализации. Иногда такие ошибки приводят к тому, что для исправления приходится перелопатить целую гору кода — это нормально, это случается даже в реальных проектах, где в команде есть крутые спецы.
Так как ревью обычно занимает много времени и между итерациями проверок могут быть существенные паузы, мы рекомендуем вам параллельно изучать теорию по всем затронутым в программе темам по дополнительным источникам, которые мы тут не перечисляли, но которые вы можете найти сами в интернете. Например, читайте про MVC, про юнит-тестирование, про нюансы работы JavaScript, про архитектуру компонентной верстки, про навыки написания чистого кода и так далее. Мы здесь давали только минимальное количество рекомендуемой литературы, не надо ни в коем случае на этом останавливаться, продолжайте углублять по всем темам по источникам, которые вы нашли сами. И не бойтесь добавлять найденные крутые ресурсы в рекомендации в соответствующие задания здесь :)
Чтобы начать процесс ревью ещё раз проведите контрольное ревью проекта по нашим стандартам, и если все правила точно соблюдены, пишите в Телеграм Светлане: @lana_dulceva.
3. Интервью по теоретическим вопросам
В нашем репозитории с картой развития у нас подготовлены около 80 вопросов по материалам из первого и третьего задания (про изучение вёрстки и изучение JavaScript). Там мы проверяем, что вы действительно изучили весь тот материал, помогаем вам побороть неосознанную некомпетентность через получение обратной связи от нас. Количество попыток на сдачу неограниченно, обычно уходит неделя-две, чтобы повторить изученное и ещё неделя на две-три попытки сдачи, после чего задание успешно завершается. В рамках этого шага вы действительно систематизируете все полученные знания, закрываются дыры в знаниях, которые почти наверняка у вас будут, обычно это один из самых эффективных этапов в обучении, когда каждый день на уже крепкую основу ваших знаний укладывается огромное количество нового и полезного материала. Сами вопросы вы можете посмотреть в нашем репозитории на Github (папка junior-1).
Требования к исправлениям:
По каждому замечанию мы будем создавать issue в вашем репозитории. Коммиты с исправлениями по каждому issue стоит называть, ссылаясь на номер ишью через #. Например, для ишью "Убрать неиспользуемые переменные" с номером 14, будет коммит, с названием типа "unused variables removed #14". Это позволит при проверке сразу увидеть, какой коммит к чему относится.
Не стоит делать большие коммиты: в идеале каждый коммит по исправлению оставленных issue должен быть в рамках данного конкретного issue. Делать несколько коммитов для одного issue, если он большой — приветствуется, делать один коммит для нескольких issue — нет.
Исправляя ошибки по оставленным замечаниям, не забывайте делать это во всем проекте (и даже в других своих проектах, пока, например, ожидаете очередную итерацию ревью), а не только в том месте, которое приводится в качестве примера. Проверяющие не всегда будут сразу находить и указывать на все места, где встречаются те или иные ошибки. Так вы сэкономите время и себе и нам: вы быстрее пройдете ревью, а мы не будем писать одно и то же несколько раз :)
Задание вам даст
расширение и закрепление ваших познаний в области проектирования Почти наверняка вы совершили много типичных ошибок при создании архитектуры вашей компонентной вёрстки или вашего бегунка. Мы всё тщательно изучим и дадим исчерпывающую обратную связь. Опрос прошедших наше задание показал, что главное понимание ООП и MVC как раз пришло уже во время получения фидбека и очередного переписывания своего кода.
закрепление полученных теоретических знаний;
базовые навыки командной работы (получения код-ревью и работы с ишью);
навыки написания чистого поддерживаемого кода (изучение наших стандартов, чтение ишью от проверяющих);
пошаговый рефакторинг своего кода.
