Первая работа во frontend

Портфолио frontend-разработчика: что положить, как оформить и показать на собеседовании

Обновлено 6 мин чтения
Содержание
  1. Коротко
  2. Зачем портфолио, если есть резюме
  3. Что положить в портфолио
  4. README: первое, что откроют
  5. GitHub и история коммитов
  6. Где разместить проекты
  7. Как проверить портфолио глазами инженера
  8. Как показать портфолио на собеседовании
  9. Частые ошибки
  10. Чек-лист
  11. Вопросы из базы
  12. Как тренировать
  13. Частые вопросы
Коротко

Портфолио frontend-разработчика это два-три доведённых проекта с живой ссылкой, понятным README и кодом, который вы можете объяснить. Количество не важно: один аккуратный проект с формами, работой с API и адаптивом убеждает больше, чем десять копий из курсов. Ниже что положить, как оформить и как показать портфолио на собеседовании.

Зачем портфолио, если есть резюме

Резюме говорит, что вы умеете. Портфолио это доказывает. Для frontend это особенно наглядно: работающий интерфейс можно открыть за секунду, а код посмотреть за минуту.

Инженер, который готовится к собеседованию с вами, часто открывает проекты заранее и выбирает вопросы по ним. Поэтому портфолио это ещё и способ повлиять на то, о чём вас спросят. Лучше, чтобы спросили про ваш код, который вы знаете, чем про случайную тему.

Что положить в портфолио

Хороший набор для junior закрывает разные стороны работы фронтендера. Не обязательно в разных проектах, можно в одном большом.

Что показатьКак это выглядит в проекте
ВёрсткуАдаптивная страница по макету, от телефона до широкого экрана, семантические теги
Работу с даннымиЗагрузка из API, состояния загрузки, ошибки и пустой выдачи
ФормыВалидация, сообщения об ошибках, блокировка повторной отправки
СостояниеФильтры, сортировка, поиск, синхронизация с адресной строкой
КачествоTypeScript, линтер, хотя бы несколько тестов на логику
ДоступностьРабота с клавиатуры, подписи у полей, контраст

Если нужны идеи, что именно сделать, загляните в статью про pet-проекты для frontend. Там идеи разложены по уровню сложности.

Проект из курса тоже можно показывать, если вы заметно его доработали: добавили фичу, переписали на TypeScript, покрыли тестами. Напишите в README, что было в исходнике, а что сделали вы.

README: первое, что откроют

README это витрина проекта. Его читают раньше кода, а иногда вместо кода. Хороший README отвечает на пять вопросов.

  1. Что это. Одно-два предложения: что делает приложение и для кого.
  2. Ссылка на работающий сайт. Сверху, сразу под описанием. Плюс скриншот или короткая анимация.
  3. Стек. Список технологий и почему выбраны ключевые.
  4. Как запустить. Команды установки и запуска. Проверьте, что они работают на чистой копии.
  5. Решения и компромиссы. Что было сложно, что бы сделали иначе, что не успели. Этот раздел больше всего нравится инженерам.
Раздел «Решения» в README

Почему React Query, а не useEffect. Нужны были кэш, повтор запроса и отмена при смене фильтра. Писать это вручную долго и легко ошибиться. Фильтры в адресной строке. Чтобы ссылкой на выдачу можно было поделиться и она не сбрасывалась при перезагрузке. Что не успел. Виртуальный список для длинной выдачи. Сейчас при тысяче карточек прокрутка заметно тормозит.

GitHub и история коммитов

  • Закрепите на профиле два-три лучших репозитория. Остальное можно оставить, но сверху должно быть главное.
  • Коммиты по шагам с понятными сообщениями: «форма заявки: валидация телефона», а не «fix» и «update».
  • Никаких ключей и паролей в коде. Секреты в переменных окружения, пример в файле .env.example.
  • Уберите из репозитория сборку, node_modules и личные файлы. Добавьте .gitignore.
  • Один и тот же стиль кода во всём проекте: настройте форматтер и линтер.

Работа с Git тоже проверяется на собеседовании. Вопросы о ветках, слиянии и pull request есть в разделе Инструменты.

Где разместить проекты

Для статических сайтов и одностраничных приложений подходят бесплатные хостинги со сборкой из репозитория. Выберите любой, который собирает проект при каждом push. Главное, чтобы ссылка работала всегда, а не только в день отклика.

Отдельный сайт-портфолио для junior не обязателен. Хватит профиля на GitHub с закреплёнными проектами и ссылками в резюме. Если делаете свой сайт, сделайте его так же аккуратно, как остальные проекты: его тоже будут оценивать как работу.

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

Как проверить портфолио глазами инженера

Перед откликами попросите знакомого разработчика открыть ваш профиль и сказать, что он видит за минуту. Если такого знакомого нет, проверьте сами по списку ниже, представив, что видите проект впервые.

  • Понятно ли из первого экрана README, что это за проект и где его открыть?
  • Что будет, если отключить интернет или API вернёт ошибку? Пользователь увидит сообщение или белый экран?
  • Работает ли интерфейс на узком экране телефона без горизонтальной прокрутки?
  • Можно ли пройти основной сценарий только с клавиатуры?
  • Есть ли в коде огромные компоненты на сотни строк, которые стоит разбить?

Каждый найденный недочёт исправьте до отклика. Это тот же взгляд, которым смотрят на тестовое задание, поэтому навык пригодится дважды.

Как показать портфолио на собеседовании

Вас почти наверняка попросят рассказать про один проект. Подготовьте рассказ на две-три минуты заранее.

  1. Какую задачу решает проект и почему вы за него взялись.
  2. Какой стек выбрали и почему именно его.
  3. Самое сложное место и как вы его решили.
  4. Что бы сделали иначе сейчас.

Будьте готовы открыть код и объяснить любую строчку. Если в проекте есть кусок, скопированный из интернета, разберитесь в нём до собеседования. Вопрос «а почему здесь useMemo?» без ответа сильно снижает доверие ко всему портфолио.

Рассказ о проекте хорошо встраивается в общий рассказ о себе. А вопросы по технологиям, которые вы использовали, придут на техническом интервью: готовьте ответы по своему же стеку.

Частые ошибки

  • Десять незаконченных проектов вместо двух доведённых
  • Проекты из курса без изменений и без пометки, что сделали вы
  • Нет живой ссылки, только код
  • README из шаблона генератора проекта
  • Ключи API и пароли в открытом репозитории
  • Код, который вы не можете объяснить

Чек-лист

  • Два-три проекта закреплены на GitHub
  • У каждого живая ссылка, скриншот и README с разделом решений
  • Работает на телефоне и с клавиатуры
  • Есть формы, работа с API и обработка ошибок
  • Коммиты по шагам с понятными сообщениями
  • Готов рассказ про главный проект на две-три минуты

Вопросы из базы Техпрогона

Частые вопросы по теме с ответом и разбором. Откройте любой и попробуйте ответить сами.

Как тренировать в Техпрогоне

  • Билеты с зачётом по технологиям из ваших проектов: JavaScript, React, TypeScript, вёрстка. Проверьте, что можете объяснить то, что написали.
  • Задачи с кодом с автопроверкой в браузере: по три в день бесплатно. Хорошая разминка перед тем, как дописывать проект.
  • Банк историй в кабинете: рассказ о проекте по STAR и питч. На бесплатном тарифе три истории.
  • Чек-лист резюме: проверьте, что ссылки на портфолио стоят на видном месте.

Частые вопросы

Сколько проектов нужно в портфолио frontend-разработчика?
Для junior обычно хватает двух-трёх. Важнее, чтобы они были доведены до конца, работали по ссылке и вы могли объяснить в них каждое решение.
Можно ли показывать проекты из курсов?
Можно, если вы их заметно доработали и честно написали в README, что было в исходнике, а что сделали вы. Копию без изменений лучше не показывать.
Нужен ли отдельный сайт-портфолио?
Для junior не обязательно. Профиля на GitHub с закреплёнными проектами и ссылок в резюме достаточно. Свой сайт плюс, но только если он сделан аккуратно.
Что делать, если нет идей для проектов?
Возьмите задачу из своей жизни или работы: учёт расходов, расписание, каталог чего угодно. Готовые идеи по уровням есть в статье про pet-проекты.
Нужны ли тесты в учебных проектах?
Хотя бы несколько тестов на основную логику заметно выделяют проект. Это показывает, что вы думаете о надёжности кода.

Билеты с зачётом вместо чтения статей

20 вопросов в билете, зачёт при двух ошибках и меньше, разбор каждой ошибки. Бесплатный тариф без ограничения по времени.

Читайте также