Кейсы 24 сентября 2018

Гонка для JavaScript-разработчиков: как постоянные обновления мешают работе

Далее

Приложения, облегчающие жизнь разработчикам и экономящие их время, регулярно обновляются. На рынке появляются новые фавориты. А эксперты в области разработки ПО не успевают обучаться особенностям работы с новинками. Возникает непростая ситуация — игнорирование новинок приводит к отсталости разработчика и снижению его востребованности на рынке, а постоянная гонка за новинками не дает стать экспертом в своей области. «Хайтек» перевел и адаптировал статью WIRED о том, как происходит развитие программных инструментов для создания ПО, как к этой гонке относятся сами разработчики и их работодатели.

 

Быстро меняющиеся фавориты

Изучение языка программирования — это лишь часть необходимых знаний для разработчиков программного обеспечения. В современных реалиях написание ПО включает в себя целый набор инструментов. Начиная от программ, которые разработчики используют для написания кода до служб облачных вычислений, которые выполняют этот код. Выбор таких инструментов — это тоже неотъемлемая часть работы.

 

 

 

 

Джианкарло Суччи: «Попытка спроектировать программу без багов — утопия»

 

 

 

 

У разработчиков внешнего интерфейса, отвечающих за код, который работает в вашем браузере, изначально выбор инструментария был более скудный, нежели у тех, кто отвечает за код, работающий на серверах. Браузеры в основном запускают язык программирования JavaScript, в то время как сторонние разработчики вольны выбирать из огромного количества языков программирования и связанных с ними инструментов.

 

 

Это происходит из-за ежедневного пополнения программ новинками, призванными облегчить труд разработчиков. Новые инструменты несут в себе некую двоякость: можно выбрать идеальный инструмент, но при этом он очень быстро устареет.

Разработчики теперь в значительной степени полагаются на инфраструктуру приложений — сегодня пользуются популярностью приложения для создания ПО с многофункциональным использованием и общей структурой. В начале 2015 года, согласно данным, собранным NPM, который создает инструменты для управления пакетами кода JavaScript, наиболее распространенной платформой JavaScript была Backbone. К концу того же года ее сместила программа React от Facebook. Сейчас, менее чем через четыре года, Backbone упал на пятое место. Его потеснили новые платформы — например, «выскочка» Vue, количество пользователей которой за последние два года значительно увеличилось, согласно данным NPM, представленным в прошлом месяце.

Трудности для всех

Эта нестабильность создает проблемы как для разработчиков, так и для работодателей. Как и многие программисты, Джо Превит, ведущий инженер консалтинговой фирмы в Скоттсдейле, штат Аризона, пытается идти в ногу с новейшими технологиями, работая над дополнительными проектами в свободное время. Но он обеспокоен тем, что ему кажется, будто он сосредотачивается на неправильных вещах или слишком глубоко копает только в одном направлении.

«Цель любой карьеры — стать экспертом в своей области, — уверен он. — Работая в JavaScript, имея все эти новые библиотеки и фреймворки, я могу по уши застрять в React, а затем переключиться на что-то еще для следующего проекта и опять потратить шесть месяцев на изучение этой программы. Вместо того, чтобы развивать более глубокие знания в одной системе».

 

 

Это также непростая задача для работодателей, которые должны привлечь разработчиков и обеспечить их инструментами для создания ПО. И им выгоднее, чтобы сотрудники пользовались одними и теми же программами долгие годы.

«Это похоже на хрустальный шар, — говорит Мэтт Такер, генеральный директор и соучредитель Koan, компании-создателя ПО для управления персоналом. — Вы делаете ставки на то, что продлится несколько лет, пытаясь уравновесить технические тонкости с мнением специалистов».

Успеть за трендами

Хосе Агинага, технический директор криптовалютной компании MyBit, описал дезориентирующую природу современной разработки JavaScript в известной статье 2016 года. В ней он представил вымышленную беседу между разработчиком, который не обращал внимания на новинки JavaScript в течение нескольких лет, и тем, кто был в курсе последних тенденций. Менее продвинутый разработчик хочет получить некоторые данные с сервера и отобразить их на веб-странице и все больше расстраивается, поскольку его коллега предлагает использовать новые инструменты вроде Grunt, Gulp и Broccoli.

Статья была сатирической, но упомянутые инструменты на самом деле существуют. Предложения вымышленного прогрессивного собеседника в беседе Агинаги, вероятно, слишком гиперболизированы, но многие из его аргументов для использования этих инструментов оправданы в крупных проектах. «Инструменты становятся все более сложными, потому что ПО, которое мы создаем, развивается», — говорит Такер.

«Это относительно новое явление в интерфейсной работе», — делится своим мнением Куинси Ларсон, основатель образовательного сайта FreeCodeCamp. Исторически JavaScript использовался прежде всего для того, чтобы делать интерактивные веб-страницы. Разработчики могут написать код, который, попадая к пользователю, автоматически заполнял форму или перелистывал цифровой фотоальбом, и программист мог забыть о своей работе до следующего обновления. Но сегодня разработчикам все чаще предлагается создавать программы, работающие в браузере — таких как Koan, приложение для управления проектами Trello или приложение чата Slack.

Эти более сложные приложения требуют, чтобы команды разработчиков работали над кодом, обновляли его по мере того, как пользователи обнаруживают ошибки, и через определенные промежутки времени добавляли новые функции. Растущая стабильность инструментов JavaScript направлена ​​на то, чтобы облегчить жизнь программистам, освободив их от очередного создания общих функций с нуля, что упрощает задачу и для их коллег. Теперь им куда проще понять и изменить чужой код. Также инструменты облегчают поиск ошибок в больших базовых кодах.

 

 

С середины 1990-х годов разработчики внешнего интерфейса находятся в поисках идеального набора инструментов для создания ПО, но пока они в основном повторяют друг за другом.

Шаткость новых или устаревающих инструментов усугубляется другими тенденциями программирования. Технический директор Koan Аренд Нейлор указывает на растущую популярность «функционального программирования». Такая тактика существенно усложняет код в одной части программы, чтобы изменить код в другой части одной и той же программы. React является одним из таких инструментов, которые предлагают поддержку функционального программирования. Он активно распространяется по мере того, как программное обеспечение становится все более сложным.

Навыки обучения для будущего

Эта нестабильность заставляет некоторых менеджеров отказываться от использования непопулярных инструментов. Брайан Леру, технический директор по запуску облачных вычислений в Begin, говорит, что компания старается избегать новинок для JavaScript или других сторонних инструментов. Это не значит, что Begin вообще никогда не вносит изменения в свой стандартный набор инструментов. Но Леру говорит: всегда есть вероятность того, что новая версия библиотеки сломает старый код. И тогда это создаст больше проблем и отнимет время, даже если в конечном счете поможет быстрее создать продукт.

Тем не менее, такие программы, как React, становятся нормой. Но все же есть мнения, что они могут сэкономить потраченное на написание кода время. Нейлор говорит, что команда Koan не будет использовать новые инструменты, даже если они могут показать свою функциональность внутри компании, но команда полностью уверена в React. Специалисты и разработчики также говорят, что при выборе программ они в том числе смотрят и на размер команды, выпустившей тот или иной инструмент. Даже высококачественный инструмент с одним разработчиком, который вполне мог и не смоделировать все ситуации или ошибиться, они вряд ли выберут.

 

 

Чтобы справиться с непредсказуемостью новинок, практически все специалисты соглашаются с тем, что разработчики внешнего интерфейса должны сосредоточиться на упрочении своих знаний, касаемых основ программирования, особенно в JavaScript.

«Как только вы будете досконально разбираться в написании кодов, вам будет совершенно все равно, на чем работать», — говорит Леру.

Превью, например, уже настроили на работу с React, хотя изначально они работали только с Vue.

Однако Хосе Агинага имеет противоположное мнение. Он утверждает, что недостаточно просто разбираться в фундаментальных принципах. Хосе хочет, чтобы все разработчики познакомились с современными инструментами, которые требуют иного способа мышления, такими как React.

«Я уже нанимал в команду отстающих в профессиональной подготовке разработчиков, даже если соискатель имел хорошее резюме, но никогда не работал с React, — говорит он. — Мне нужны люди, которые будут продуктивными с первого рабочего дня».

Даже когда менеджеры по подбору персонала не так строги, как Агинага, разработчики не могут рассчитывать на то, что в каждой компании найдут привычный набор инструментов. Хорошая новость заключается в том, что большинство разработчиков пока что не окажется без работы. Есть еще много компаний, у которых ПО основано на Backbone, например, и этим компаниям потребуются разработчики для поддержки этого ПО в течение многих лет. В то же время это не мешает разработчикам оттачивать свои навыки в других инструментах.

 

 

 

 

Feature engineering: шесть шагов для создания успешной модели машинного обучения

 

 

 

 

Проблема в том, что разработчики обычно должны изучать новинки своей сферы в свободное от работы время. «У меня не так много друзей-разработчиков и специалисты других областей не понимают, почему я так много времени провожу за самостоятельным изучением программ», — рассказывает Элефтерия Батсо, программист внешнего интерфейса из греческих Салоников.

«Сначала мне хотелось, чтобы появлялось не так много нового, — говорит она. — Но постоянные изменения — часть того, что делает эту работу интересной. Мне нравится, что наши инструменты качественно улучшаются. Да, это сложно, но мне это очень нравится».