Yet another Egghead

Вопросы, которые стесняются задавать, а зря!

Какие дополнительные инструменты может использовать разработчик для проверки кода перед прохождением код-ревью?

Появление линтеров (самый популярный - eslint) позволило разработчикам сосредоточить ревью на результате работы кода, а не на его форме. Многие компании поддерживают свой eslint конфиг, чаще всего являющийся форком eslint-config-airbnb. Для автоматического форматирования наиболее удобно использовать prettier прямо в редакторе кода при сохранении файла. Для большей надежности можно автоматизировать запуск форматтера перед любым коммитом. Для этого нужно установить npm библиотеки husky и lint-staged и указать запуск желаемых скриптов в package.json.

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "**/*.js": [
      "prettier --write",
      "git add"
    ]
  }
}

Бойлерплейт - что это?

Бойлерплейт - это повторяющийся код, приводящий к определенному результату и ощущаемый как избыточный для него. Чаще всего бойлерплейт является результатом компромисса между создателями языков, библиотек и их пользователями.

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

Что отличает мидл специалиста от джуна?

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

  • Количество продуктовых задач, которые разработчик может решить без консультаций с другими разработчиками
  • Скорость дебага
  • Кругозор, позволяющий быстрее устанавливать корень проблемы и глубже её решать

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

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

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

Вернуться на главную