django

Что необходимо для качественной Web разработки?

  • суббота, 29 июля 2017 г. в 03:11:59
https://habrahabr.ru/company/otus/blog/334328/
  • Тестирование веб-сервисов
  • Разработка веб-сайтов
  • Python
  • Django
  • Блог компании Отус


Какие знания необходимы современному, а главное востребованному веб-разработчику?

За скобками остается базовое умение писать код и всё что связано с умением работать в команде и иные очевидные вещи. Для нашей программы курса «Web-Разработчик», который стартует 5 августа, мы очертили именно следующий круг знаний и скилов, считая их основополагающими в специальности:

Во-первых, код ревью: стоит писать такой код, чтобы он был повторно используем, понятен и прост, сюда относятся DRY, KISS, цикломатическая сложность, читаемость, преждевременная оптимизация, чистые функции, статический анализ, соблюдение style guide и инструменты для отслеживания всего этого. Это как дизайн или психология: каждый считает себя экспертом, но далеко не каждый таковым является на деле — тут важны чёткие принципы, системный подход конечно же практика.

Во-вторых, разработчику неплохо было бы быть знакомым со спецификой Python, синтаксическим сахаром и подкапотной жизнью. Как правильно использовать генераторы, итераторы, декораторы и контекстные менеджеры, как на практике применять MRO и бороться с утечками памяти – все это полезные практические навыки, которые делают код лаконичнее, понятнее и «поддерживаемее», а продукт – более стабильным и приспосабливаемым.

Хороший разработчик умеет делать API: может быстро сделать REST на Django, знает хорошие и плохие практики при реализации API, а также понимает для чего может пригодиться GraphQL и какие у него подводные камни. Бекендерам всё чаще приходится делать API и, что важно, уметь делать его правильно.

Кстати, бекендеру придётся тяжело без базового знания фронтенда — было бы очень кстати уметь на коленке собрать минимальный фронтенд для классного бекенда, заверстать его на Bootstrap или Material и оживить с помощью старого-доброго jQuery. Речь не идёт о фулстек-разработчике, но ради любого чиха ждать фронтендера – не самый продуктивный способ вести разработку.

В-третьих, будет тяжело без знания распространённых DevOps-инструментов: как и когда пользоваться Fabric и Docker, в чём подводные камни контейнеризации, как настроить простой и грамотный деплой.

Чтобы разработка не превратилась в постоянный фикс багов, такому разработчику будет очень кстати разбираться в автотестах: когда писать, а когда нет, где грань между отсутствием тестов и стопроцентным покрытием в каждом коммите, как быть с «плохо пахнущими» тестами, сколько каких тестов должно быть, а также уметь аргументировать трату времени на них – всё это кажется очевидным, но на деле далеко не всегда выходит.

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

Будет классно, если такой разработчик будет разбираться в асинхронности: как работает, когда нужна, как пользоваться. Тема важная потому что async is new sexy – этот подход позволяет сделать многие вещи быстро и удобно.

Чего по-вашему критически не хватает в этом списке? Может, что-то лишнее? Поделитесь своим мнением и давайте делать отрасль лучше!