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 – этот подход позволяет сделать многие вещи быстро и удобно.
Чего по-вашему критически не хватает в этом списке? Может, что-то лишнее? Поделитесь своим мнением и давайте делать отрасль лучше!