Цель - стать разработчиком web-сервисов/приложений (маркетплейсов , онлайн-конструкторов , корпоративных систем и т.д.). Конкретно - специалистом по одному узкому стеку разработки, но достаточному для реализации сервисов, полноценно решающих распространенные задачи конечных пользователей/бизнеса.
Если с фронтендом всё относительно понятно, то с серверной частью сомнения. Хочется сделать осознанный выбор и освоить на уровне (чтобы быть хорошим специалистом в чём-то одном, а не посредственным во многом). После продолжительного курения поиска выделил 2 пути:
- сосредоточиться на стеке LAMP и использовать Python (Django, Flask и т.д.) в качестве серверного языка, генерируя современный фронтенд всякими ангулярами;
- погрузиться в тотальный Javascript (MEAN-стек с сервером на Node.js).
Что важно в выборе:
- Возможность поднимать web-приложения в максимально короткие сроки с минимальным количеством кода;
- Возможность разрабатывать сервисы, отвечающие всем современным стандартам и пользовательским требованиям, решающие широкий круг задач;
- Чтобы технология была актуальна и востребована в ближайшие 7-10 лет (дабы не только «познать мудрость», но и успеть «плоды вкусить»), как в РФ, так и за рубежом (понимаю, что прогнозировать невозможно, но у специалистов в теме есть более ясная картина, чем у меня);
- Возможность разрабатывать быстрые, легкие и устойчивые к нагрузкам приложения без использования тонны костылей и «напильников».
- Возможность встраивания web-приложений в стандартные корпоративные сайты клиентов (к примеру, на битриксе);
- Широкое поле деятельности (востребованность как по вакансиям, так и на мировом фрилансе/в клиентской разработке);
- Понятный и приятный процесс разработки, а не регулярный взрыв мозга (поверхностное знакомство с синтаксисом понимания по этому вопросу не дало, разве что в node.js писанины больше).
Изучил форумы с подобными вопросами, в том числе и тостер, есть 2 противоречивые точки зрения:
- В пользу Python: он логичен, строг, позволяет решать 98% реальных задач и поднимать почти любые приложения. Разработка занимает в 2-3 раза меньше времени и трудозатрат, чем на JS. Node.js – это асинхронщина, взрыв мозга для новичка, не имеющего многолетнего опыта разработки на других технологиях. Если и погружаться в MEAN, то только после того, как досконально освоится LAMP. Ниша node.js очень узкая, в основном SPA, в большинстве задач он не нужен со своей асинхронностью, только навредит. Да и вообще это надутый пузырь на волне хипстерского хайпа.
- В пользу Node: всё идет к тому, что js станет стандартом как на фронте, так и на сервере. Через 5 лет серверную часть не на js будут писать только ленивые ретрограды. Приложения получаются быстрее python и др. в 10-15 раз, выдерживают большие нагрузки, нет задач, которые нельзя было бы реализовать в рамках MEAN-стека. Технология в стадии активного развития, через 5 лет сегодняшние её косяки будут исправлены, и она станет стандартом де-факто для web-приложений, как php для web-сайтов когда-то. Нет смысла тратить время и распыляться на морально устаревающие средства.
- Уметь нужно и то, и другое. Это взаимодополняемые технологии, будет сложно и неэффективно решать поступающие задачи на чем-то одном. Но тогда о цели «стать узким специалистом, а не поверхностным и распыленным» можно забыть, чего не хотелось бы.
Вопросы:
- В какую сторону посоветуете смотреть? Буду рад аргументации, хотя бы краткой.
- Есть ли что-то в рамках web-сервисов, чего нельзя реализовать на Python, но можно на Node.js? Есть ли что-то, чего нельзя реализовать на Node.js, но можно на Python? Какая технология перевешивает по возможностям?
- Нужно ли погружаться разработку стандартных php-сайтов для досконального понимания всех этапов разработки, прежде чем замахиваться на сервисы/приложения? Или можно сразу погружаться в разработку web-сервисов без всяких «комплексов неполноценности»?
- Насколько рационален поэтапный путь: php-сайты -> web-сервисы на python -> web-сервисы на node.js? Или рациональнее сразу выбрать конкретную стезю и в ней развиваться?
- Или имеет смысл забить на то и другое, и сразу окунуться в непоколебимый web-энтерпрайз (C#/Asp.net или Java/Spring)? Если да, то какие тут преимущества перед Python/JS?
Благодарю тех, кто дочитал до конца. Прошу прощения за простыню, вопрос холиварный, потому, думаю, имеет смысл задать его развернуто. Как видите – жуткая каша из противоречий в голове, а пока она есть, продуктивного погружения не получится, да и клиентам/работодателям нужно уверенно обосновывать свой выбор. Просьба сильно не пинать и не отправлять в поиск – прокурил его от и до, вынеся все противоречия из ответов 2-3 годичной давности в этот топик, не дающие покоя. Хотелось бы получить актуальные на середину 2017 выводы от специалистов. Спасибо!