Сегодня на сайте Mashable появилась любопытная статья «Чтобы стать гуру программирования в 2016 году, достаточно освоить Javascript и переехать в Юту» о рынке труда разработчиков программного обеспечения. Данный материал формирует весьма превратную картину действительности, а потому давайте разбираться вместе.
Краткая предыстория. Я разработчик программного обеспечения и на протяжение нескольких последних лет мне доводилось неоднократно проводить собеседования с желающими пополнить ряды моих коллег. Кроме того, я обучал разработчиков JavaScript навыкам, благодаря которым они получали шикарную работу. У меня приличный опыт в сфере создания и консультирования многообещающих команд разработчиков всевозможных стартапов и 500 успешных компаний.
Я также часто сотрудничаю с кадровыми агентствами, благодаря чему не понаслышке знаю, чего хотят самые высокотехнологичные компании в мире. Руководствуясь собственным опытом и тем, что рассказывают мои студенты, я могу с уверенностью заявить, что прекрасно понимаю структуру рынка труда JavaScript как снаружи, так и изнутри.
Вам нужно изучить JavaScript
Нет, статья Mashable вовсе не опровергла мои знания. «Освойте JavaScript» — достойный совет. В списке требований, предъявляемых к кандидатам на должность разработчиков программного обеспечения, более 1/3 вакансий предполагают определенные знания JavaScript. В настоящее время JavaScript является наиболее популярным языком программирования с прекрасно развитой экосистемой модулей OSS, который, в отличие от других существующих альтернатив, действительно можно назвать универсальным: «пишешь один раз, используешь везде» — идея, о которой создатели Java мечтали. И вот благодаря JavaScript она стала реальностью.
Универсальный JavaScript – это приложение, которое работает на серверах, веб-платформе и даже на родных устройствах (см. React Native), причем в процессе использования логика приложения (а не только библиотеки) остается неизменной для всех целевых платформ. Если вы пишете приложения на другом языке программирования, спешу заметить, эта пустая трата времени и денег.
Количество модулей
Увеличение числа npm – Стандартное хранилище пакетов OSS JavaScript
Дело не в Юте – спрос на программное обеспечение везде высокий
Я знаю, что пример выбрали для привлечения внимания читателей. И, да, рынок труда разработчиков ПО штата Юта, действительно, стремительно развивается, но ведь важно понимать, в чем причина такого роста. В масштабах государства Юта представляет собой довольно небольшой рынок, достигающий порядка 2000-3000 вакансий разработчиков программного обеспечения. Это, мягко говоря, не 12000-20000 в Нью-Йорке и не постоянный спрос на 10000-15000 специалистов данного профиля в Сан-Франциско. Причем мы привели примеры не единственных городов, прочитав предложения которых невольно задумаешься о бесперспективности работы программиста в Солт-Лейк-Сити.
А теперь подробнее о современном рынке труда JavaScript, ведь у меня уже есть необходимые данные (за декабрь 2015 года):
Вашингтон, округ Колумбия, 5300
Окленд, Калифорния, 4700
Сан-Хосе, Калифорния 4000
Бостон, Массачусетс, 3000
Лос-Анджелес, Калифорния, 2000
В Солт-Лейк-Сити обычно открыто порядка 500 вакансий разработчиков JavaScript. На штат Юта в целом приходится около 800 подобных предложений. Если вы хотите быть программистом, не думаю, что стоит прислушиваться к совету «переезжайте в Юту».
Хотите стать программистом?
Переезжайте, в прямом смысле слова, куда угодно.
Более того, совсем не обязательно собирать чемоданы, даже если ситуация на местном рынке труда хуже некуда. В разных регионах США постоянно требуются удаленные специалисты JavaScript, аналогичные вакансии есть, практически, во всех странах мира, а потому у разработчиков-фрилансеров всегда огромный выбор. Если ты знаешь толк в программировании, обязательно подумай о возможности удаленного трудоустройства. Да, в этом случае немного труднее найти стоящее предложение и конкуренция весьма высокая, но попытаться, определенно, стоит.
Недостаток квалифицированных кадров – реальная проблема. Причем серьезная.
Невозможно устранить нехватку талантливых специалистов, просто заполняя рынок новичками.
В статье Mashable прозвучала формулировка, прочитав которую можно подумать, будто на программистов учится так много людей, что в итоге между ними возникает невероятно высокая конкуренция. А вот и жестокая правда:
Разработка программного обеспечения всегда была и остается очень непростой специализацией, требующей разнообразных навыков, включая общительность, готовность к сотрудничеству и знание технической документации. Не зря же зарплата программистов, как правило, в 2 раза превышает среднестатистическую: и все не так просто.
У вас должна быть явная заинтересованность в этой сфере деятельности и достаточная мотивация;
Вы должны уметь учиться быстро и с удовольствием (технологии стремительно меняются);
Вы должны быть очень коммуникабельным и готовым к сотрудничеству;
Вы должны уметь концентрироваться на деталях (важно на стадии запуска и отладки ПО) и картине в целом (в процессе разработки);
У вас должны быть практические знания по математике, логике, а также склонность к абстрактному мышлению;
Вы должны быть готовы и иметь возможность сверхурочно работать над совершенствованием навыков.
Если это о вас, думаю, вы справитесь. Если нет, изучение основ программирования все равно может пойти на пользу, но в этом случае вам все же стоит выбрать другую профессию. Совершенно логично, что одна специальность не может идеально подходить всем. И это нормально.
Если не получается найти работу, возможно, нужно подтянуть отдельные навыки или попрактиковаться в создании образцов OSS, чтобы доказать, что вы подходите для той или иной вакансии.
Если не удается найти работу, не спешите винить в этом ситуацию на рынке труда.
Скажу по опыту, компании отнюдь не стали «выбирать тщательнее» (ну, разве только если вы будете сравнивать нынешние вакансии с предложениями по JavaScript за 2008 год. JavaScript стал ведущим языком программирования приложений совсем недавно).
На самом деле, компании просто нашли эффективные механизмы определения действительного уровня владения необходимыми навыками, когда речь идет о конкретном кандидате.
Да, проблема нехватки квалифицированных кадров не решается за счет появления на рынке труда огромного количества новичков (причем понадобилось много времени, чтобы это понять). Развитие сферы разработки программного обеспечения, к сожалению, по-прежнему заметно опережает увеличение числа хороших специалистов. Другими словами, если говорить от имени работодателей, вакансий гораздо больше, чем подходящих кандидатов.
Ситуация настолько сложна, что нередко, не находя нужные кадры в самых многообещающих городах, приходится расширять географию поисков вплоть до международного уровня. Если мы говорим о самых высокотехнологичных компаниях мира, количество иностранных граждан, занятых в соответствующих стартапах, в среднем, достигает 29%. В Силиконовой долине — 45%.
Это обходится дороже на десятки тысяч долларов, причем нередко приходится ждать не один месяц, чтобы нанять жителей других стран по визе H1-B. Думаете, стоило бы так мучиться, если бы квалификация местных специалистов соответствовала требованиям работодателей?
Если представители целой индустрии, правительство и Президент США отмечают, что мы столкнулись с дефицитом квалифицированных разработчиков программного обеспечения, это звучит куда убедительнее, чем доводы из статьи в каком-то несчастном блоге с претензией на сенсацию.
Почему трудно найти работу
В сети можно найти множество статей, в которых проблема нехватки квалифицированных кадров не рассматривается, потому что их авторы, видите ли, слышали, что найти работу по технической специальности трудно. И теперь о реальном положении вещей: есть целый ряд других причин, по которым ваш сосед по комнате не может устроиться на работу. Вот самые распространенные из них:
Компании обычно не интересуются выдающимися знаниями популярных, но совершенно бесполезных методов, таких как интерактивные электронные доски или ситуативные задачи (если вы сосредоточились на этих инструментах, бросайте, пока не поздно. Они не работают и, помимо всего прочего, стоят немало). При таком подходе отсеивается много потенциальных специалистов. Приходится постоянно совершенствовать принципы поиска, чтобы находить поистине выдающихся кандидатов.
Кандидат просто не достаточно хорош. Освоить JavaScript непросто. 99 из 100 разработчиков, с которыми я проводил собеседования, не могли ответить на простейшие вопросы, касавшиеся двух столпов JavaScript: прототипного и функционального программирования. Причем оба стиля программирования широко используются во всех серьезных JS приложениях, с которыми я когда-либо сталкивался. Практические знания данных аспектов жизненно необходимы каждому разработчику JavaScript.
Вакансии, предполагающие возможность предварительного обучения, предлагаются крайне редко. Хотя в отдельных случаях при попытке найти выдающихся разработчиков компаниям приходится соглашаться и на худшее – брать на работу младших разработчиков и налаживать обучение на производстве – где, собственно, специалисты и получают самый ценный опыт.
Почему компании не спешат нанимать младших разработчиков, которых можно обучить на месте? В случае, если на предприятии нет подходящих условий, младшие разработчики вносят свой первый посильный вклад в развитие общего дела только, примерно, через год. К сожалению, специалисты данного класса не часто задерживаются на одном месте больше года. Именно поэтому, компании выгодно предлагать трудоустройство младшим разработчикам только в том случае, если ее команда, действительно, знает толк в подборе будущих звездных кадров и их обучении, а также уверена в лояльности подготовленных сотрудников.
Хорошие новости: лучшие кандидаты попадают в команды, где им приходится постоянно учиться. Многообещающие группы разработчиков прививают культуру обучения, нанимают выдающихся наставников и принимают в свои ряды тех, кто готов совершенствовать свои навыки. Такие коллективы не только достигают лучших результатов, но и не сталкиваются с проблемой текучки кадров. В этих условиях новички быстро становятся тренерами, явно чувствуют мотивацию и получают удовольствие от работы, а потому остаются в компании надолго.
Если вы слабый кандидат, вы столкнетесь с определенными сложностями на любом рынке, но если у вас есть хорошее портфолио и вы разбираетесь в том, что делаете, запомните:
Это рынок соискателей на должность разработчиков программного обеспечения и в ближайшее время он не изменится.
В Соединенных Штатах разработчики программного обеспечения занимают второе место в списке самых быстроразвивающихся профессиональных областей. Только официальный рынок труда медсестер увеличивается быстрее.
В настоящее время спрос на разработчиков программного обеспечения исчисляется сотнями тысяч вакансий и, ожидается, что к 2020 году данный рынок превысит миллион вакансий.
Даже все эти убедительные факты предполагают весьма узкое видение перспектив профессии программиста. Давайте сделаем шаг назад и посмотрим на картину в целом.
Будущее
Хотелось бы поделиться с вами несколькими слайдами из презентации о значении программирования, в которой поясняется, почему по-прежнему важно готовить больше специалистов этого профиля.
Программное обеспечение поглощает мир,
Интернет подчиняет себе программное обеспечение,
А JavaScript правит Интернетом.
В 2000 году профессия водителя была самой распространенной почти во всех штатах:
В 2000 году рынок труда водителей доминировал над показателями других профессий
Программисты даже не попали на карту. К 2014 году в 4 штатах должность разработчика программного обеспечения была самой распространенной:
К 2014 году разработчики программного обеспечения вышли на первый план в 4 штатах
К 2045 году на человека за рулем автомобиля будут смотреть, как на лошадь в упряжке.
Mercedes F 015 — Ars Electronica (CC BY-NC-ND 2.0)
Например, Uber и без того ставит палки в колеса мировой индустрии услуг такси. К 2020 году компания планирует приобрести полмиллиона самоуправляемых автомобилей, а к 2020 году компания намерена купить 500 тыс. беспилотных транспортных средств.
К 2035 году 45% современных профессий исчезнут, но в школах не учат тому, что понадобится для трудоустройства в будущем.
В 4/5 школ США не преподают программирование
Изменения происходят все стремительнее
Под влиянием программирования, практически, все сферы промышленности претерпевают невероятные трансформации, если и вовсе не утрачивают актуальность. И, несмотря на высказывания по поводу несостоятельности закона Мура – кто-то спешит сказать, что он себя изжил (я неоднократно сталкивался с такими ситуациями лично) – темпы технологических преобразований растут в геометрической прогрессии.
Почти под каждой статьей можно найти комментарий со ссылкой на то, что закон Мура – прошлый век, и при этом для любой из них я могу привести примеры 3 технологий, способных снова вернуть данное постановление к жизни. Вот, например, очередной заголовок:
«Google: Наш квантовый компьютер 100 миллионов раз быстрее, чем обычная система»
Мы входим в эру технологического бума, где и для нас, и для наших детей будет очевидно, что технология прогрессирует быстрее, чем человек успевает к ней приспособиться. Причем ничто не свидетельствует о возможном снижении столь стремительных темпов. И вряд ли мы или наши дети доживем до таких времен.
Вот небольшой список технологий, способствующих истинной революции и готовых пополнить банк вакансий тысячами запросов уже в 2016 году:
AI;
Дроны;
Виртуальная реальность;
Дополненная реальность;
3D-печать и роботизация производства;
Мобильные платежи;
Криптовалюта, Bitcoin и Blockchain.
А теперь проанализируем факты:
Компьютеры – новая версия бумаги и чернил, а программирование – альтернатива грамотности.
Высказывания о том, что мы можем подготовить «слишком много» программистов, абсурдна. Чем больше программистов, тем больше компаний, специализирующихся на разработке программного обеспечения, а, значит, им всегда нужны будут новые кадры.
Если свести весь текст статьи к одному выводу, на который стоит обратить внимание, пусть он звучит так:
Обучение в сфере разработки программного обеспечение представляет собой эффективный цикл, который невозможно исчерпать за счет увеличения количества программистов. Просто будет больше Facebook-ов, Google и Tesla, которые захотят их нанять.