Новые технологии влияют на набор навыков, необходимых для создания приложений, отмечают опрошенные порталом InformationWeek эксперты, но мнения относительно того, как именно они влияют, расходятся.
В последние несколько лет мы часто слышим о разработчиках полного стека. Более того, некоторые менеджеры по найму предпочитают именно их. Однако растущая сложность разработки ПО требует специализированных знаний, которых может не хватать специалистам общего профиля. С другой стороны, узким специалистам может не хватать видения общей картины, которым обладают полнофункциональные разработчики.
Доводы в пользу универсализма
По словам Она Фройнда, генерального директора и соучредителя Wilco, платформы для повышения квалификации инженеров-программистов, специализация не является гарантией успешного будущего, поскольку навыки всегда меняются. «Если вы хотите специализироваться, то вам следует специализироваться на способности легко приобретать новые навыки, — говорит он. — Разработчики должны сосредоточиться на том, чтобы быть универсалами, которые могут легко адаптироваться к новым технологиям и методологиям. Это особенно верно в отношении искусственного интеллекта, поскольку следует исходить из того, что ИИ в конечном итоге овладеет любым заданным навыком или специальностью. Если вы сможете приобрести новые навыки, вы сможете переключиться на необходимые области».
Газенфер Мансур, основатель и генеральный директор компании Technology Rivers, занимающейся разработкой мобильных и веб-приложений для здравоохранения, считает, что потребность в полнофункциональных разработчиках растет. «Эта тенденция свидетельствует об отходе от привычной специализации, — говорит он. — В связи с этим возникают большие вопросы о том, как компании могут сочетать экспертные знания с более широкими навыками, чтобы справиться с сегодняшними и завтрашними технологическими потребностями».
Андреа Малагоди, CIO компании Sonar, предоставляющей решения для чистого кода, считает, что наличие широкого набора навыков позволяет воспользоваться открывающимися возможностями и что чрезмерная специализация может стать препятствием для построения карьеры разработчика ПО. «Я думаю, что для успешной долгосрочной карьеры в области разработки ПО важно иметь разнообразный опыт, более широкие понимание и набор навыков. Знания и опыт работы с различными языками программирования и технологиями чрезвычайно ценны, — говорит он. — Это помогает разработчикам мыслить более критически и творчески и в конечном итоге повышает их роль в качестве разработчика/программиста. Также важно непредвзято смотреть в будущее».
Доводы в пользу узкой специализации
Стивен Хиллион, старший вице-президент по данным и ИИ компании Astronomer, предоставляющей платформу для оркестровки данных, отмечает, что количество специализированных разработчиков растет в связи с увеличением сложности ПО. «Потребность в узких специалистах не изменится. Более того, я ожидаю, что она возрастет, — говорит он. — У нас по-прежнему есть клиенты, которые полагаются на разработчиков полного цикла. Но я бы сказал, что общая тенденция заключается в том, что компаниям требуются более специализированные разработчики, обладающие правильным сочетанием технических навыков и отраслевых знаний для создания необходимых компонентов в сложном технологическом стеке. Существует значительный спрос на разработчиков, специализирующихся на конкретных отраслях».
Илья Бадеев, руководитель отдела науки о данных глобальной туристической компании Trevolution Group, также видит тенденцию к увеличению специализации. «Лет
В целом, по его мнению, развитие программирования с помощью ИИ продвигается к выполнению ИИ задач разработчиков младшего и среднего уровня, таких как написание кода на основе готового технического задания. Однако архитектура и планирование пока останутся под контролем человека.
«Представьте, что вы описываете систему, примерную архитектуру решения, а ИИ пишет за вас все необходимые сегменты кода, включая инфраструктуру. Вам остается только просмотреть его, — говорит Бадеев. — Однако в будущем ИИ, скорее всего, сможет разрабатывать и архитектуру, сделав естественный язык самым популярным языком программирования».
Однако Петр Обрехт, старший инженер-программист компании Payara Services, предоставляющей серверы приложений с открытым исходным кодом, говорит, что многие программисты, называющие себя разработчиками полного стека, имеют более глубокие знания в области бэкенд-разработки и ограниченные навыки фронтенда. Их знания HTML и CSS могут быть устаревшими и не обладать глубиной, необходимой для современной веб-разработки, которая требует мастерства в таких областях, как семантическое кодирование, SEO, обеспечение доступности и кросс-девайсная совместимость.
«По мере дальнейшего развития технологий наблюдается тенденция к дальнейшей специализации, а не к обобщению. Сложность современных приложений и стремительное совершенствование технологий приводят к тому, что одному разработчику все сложнее овладеть всеми областями стека, — говорит Обрехт. — В области фронтэнд-разработки мы теперь видим субспециализации. Например, „фронт“ от фронтенда занимается пользовательским интерфейсом, макетами и визуальными аспектами веб-приложения, в то время как „бэк“ от фронтенда занимается API, маршрутизацией и CRUD-операциями. Раньше бэкенд-разработчики решали эти задачи с помощью языков для серверной части, таких как PHP или Python. Сегодня, когда JavaScript работает на сервере, круг задач, которые можно отнести к „фронтенду“, значительно расширился».
И то, и другое
Разработчики полного стека и узкие специалисты не обязательно должны быть взаимоисключающими. Более того, некоторые предпочитают и тех, и других.
Например, Кейтлин Вехниайнен, эксперт по подбору и найму персонала в агентстве по подбору ИТ-персонала On Cue Hire, говорит, что, учитывая постоянное изменение технологий, лучшие инженеры-программисты всегда опережают события, постоянно самостоятельно осваивая новые технологии, если это необходимо.
«Хотя инженеры-программисты могут специализироваться на бэкенд- или фронтенд-разработке, большинство компаний сегодня ищут разработчиков полного стека, — отмечает она. — Те, кто проявляют неподдельную любознательность и готовность учиться, могут заявить о себе как о разработчиках полного стека, потому что они уделяют время изучению и упражнениям с кодом в свое свободное время. Отличные инженеры-программисты, похоже, стремятся изучить весь процесс до конца и способны хорошо донести это на собеседовании».
Максим Иванов, генеральный директор и соучредитель поставщика платформы оркестровки данных Aimprosoft, считает, что узким специалистам важно обладать некоторыми общими знаниями. «Без базовых знаний сложно заниматься каким-либо конкретным направлением разработки. Именно поэтому начинать нужно с освоения базовых технологий; если человек разбирается в них, это помогает ему быстрее осваивать новые вещи, — говорит он. — Однако базовые технологии не должны быть конечной целью. Важно быть в курсе технологических тенденций и постоянно использовать новые технологии».
Задачи, выходящие за рамки стандартных или общих требований, требуют привлечения специалистов, обладающих знаниями и опытом в конкретных областях. Например, проекту, требующему сложных алгоритмов или специфических технологий, понадобится специалист с глубоким их пониманием.
«Узкоспециализированная и полностековая разработка дополняют друг друга, — говорит Иванов. — Разработчики полного стека обладают широкими знаниями и могут охватить весь процесс разработки от фронтенда до бэкенда, обеспечивая базовую функциональность и системную интеграцию. В то же время специализированные разработчики могут сосредоточиться на сложных или уникальных частях проекта, требующих глубокого понимания конкретной технологии или методологии».
Лорен Перес, менеджер по дизайну учебного опыта компании General Assembly, предоставляющей услуги по обучению и поиску талантов, согласна с этим мнением. «Разработчики полного стека могут легко перемещаться между различными уровнями приложения, уменьшая необходимость в передаче задач специализированным членам команды, — говорит она. — Это позволяет создавать небольшие команды, но может потребовать привлечения консультантов для проектов, требующих глубокой экспертизы в конкретных областях».
По словам Перес, для студентов, начинающих работать в сфере технологий, наличие навыков работы с полным стеком или более широких навыков может сделать их более привлекательными, особенно при широком поиске работы. «Как правило, узкоспециализированных вакансий в любой области становится все меньше, и спрос обычно предъявляется к специалистам с гибким опытом», — отмечает она.
Но в конечном итоге все дело в балансе. Специализация дает преимущество стать экспертом в определенной нише, что может принести финансовую и личную выгоду, но универсальность обеспечивает бóльшую гибкость и делает разработчиков адаптируемыми. «Лучшим подходом может быть сочетание двух подходов: иметь прочную базу навыков и в то же время глубоко погрузиться в интересующие вас области через своего работодателя», — говорит Перес.