Full stack разработчики? Да вы шутите!

В этой статье, так как это ближе моему основному профилю деятельности, я буду рассматривать full stack разработчика как обладающего навыками работы как на бэкенде (Java стек) так и на фронтенде (JavaScript стек). Для простоты, не будем добавлять сюда процессы разработки, инструменты и практики деплоя и конфигурации инфраструктуры, а также умения по тонкой настройке и тюнингу.

Когда-то давно я был глубоко убежден, что не full stack разработчик – это просто ленивый бездельник, который палец о палец не ударил, чтобы открыть IDE и освоить недостающие технологии. Но это было давно, лет 10-12 назад. В то время технологический стек не был таким разнообразным. В Java мире на тот момент еще царил J2EE и только зарождался Spring с Hibernate. Была еще парочка “прорывных” технологий в мире веб-разработки наподобие Struts. Вот и все разнообразие. В мире JavaScript был фактически сам JavaScript, ну и HTML с CSS. Начинал зарождаться jQuery и несколько фреймворков с виджетами. При таком положении дел было реально стыдно не обладать знаниями по всему стеку.

Долгое время технологии менялись достаточно плавно и в течение следующих 5 лет особо больших изменений не произошло. jQuery, Spring, Hibernate расцвели, появилось еще по парочке альтернатив как на бэкенде так и на фронтенде. Уже нужно было разбираться в минификации, сжатии и модульной разработке на JavaScript. За последние же 5-7 лет произошел прямо таки бум по обе стороны баррикад и уследить за всем стало просто нереально.

Во-первых, на стороне бэкенда появилось очень много точечных решений для разнообразных хранилищ данных: NoSQL (MongoDb, Cassandra, Redis и другие) или гибридных (MySQL Cluster, облачные хранилища). Все больше начало развиваться направление распределенных систем, а это потребовало знаний по множеству интеграционных решений: AMQP, JMS, реализация интеграционных шаблонов проектирования (например набор фреймворков от Netflix), облачные платформы и сервисы. Активно бежит вперед функциональная парадигма и появляется все больше альтернативных решений и платформ: Play, Vert.x, RxJava и прочие. Spring превратился в огромного монстра и уже больше походит на швейцарский нож массой 10 кг. 🙂 Поэтому стали появляться удобные бутстраперы для быстрого старта наподобие Spring Boot и JHipster. И это я не затрагиваю Big Data направление и альтернативные языки программирования на базе JVM. В общем, объем знаний постепенно перестал помещаться в голову и начал вытеснять некоторые менее популярные технологии наподобие JavaEE.

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

Поэтому, в современной разработке осталось очень мало full stack разработчиков и их количество постоянно уменьшается. Оставшиеся обычно обладают знаниями на обеих сторонах, но в очень узком диапазоне (к примеру, Spring MVC + Hibernate + AngularJS) и от этого смысл теряется. Поэтому мы все глубже залазим в мир узкопрофильных специалистов со всеми вытекающими плюсами и минусами. Что на самом деле может немного смягчить ситуацию такого разделения, так это знание основ языка программирования, периодическая работа в смешанных парах и образовательные сессии в команде. Тогда разрыв будет немного сглаживаться и проблем будет значительно меньше.

Обсуждение (2)

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

По моим наблюдениям, если вакансия называется Full Stack Developer — то имеется ввиду Node.js + DB + что-нибудь на фронте. Классика – MEAN.

Leave a Reply

Your email address will not be published. Required fields are marked *