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 как раз пришло уже во время получения фидбека и очередного переписывания своего кода.
закрепление полученных теоретических знаний;
базовые навыки командной работы (получения код-ревью и работы с ишью);
навыки написания чистого поддерживаемого кода (изучение наших стандартов, чтение ишью от проверяющих);
пошаговый рефакторинг своего кода.