HackerRank в этом месяце предоставили интересную аналитику на основе опроса 39 441 разработчика. В опросе поднимается много актуальных вопросов про состояние IT-рынка, востребованные качества среди разработчиков и то, что ищут программисты среди потенциальных работодателей. Отчет получился интересным, многим может быть полезно.
Под катом очень много картинок.
1. Пролог
Hello world
В будущем то, как мы все работаем, изменится. Кем бы вы ни работали, для каждого важно научиться программированию, ведь именно оно развивает вычислительное мышление (или computational thinking), которое играет важную роль в принятии решений. Обычные резюме уйдут в прошлое и на первый план в вопросах найма новых сотрудников выйдут именно их умения.
Мы запустили HackerRank в конце 2012, чтобы помогать разработчикам найти работу, которая будет им по душе. За эти годы мы сильно выросли — сейчас в нашем сообществе 3,2 млн человек и 2% всех новых наймов разработчиков в прошлом году были сделаны с нашей помощью.
И сейчас мы впервые провели опрос среди нашего сообщества разработчиков, чтобы разобраться в том, как именно они работают и как они этому научились: когда они впервые запушили код в репозиторий, как они научились кодить, расспросили о любимых языках программирования и фреймворках, узнали, чего они хотят от работодателей. А еще мы спросили HR-менеджеров о том, что именно они ищут в кандидатах на позиции разработчиков и о многом другом. Мы опросили 39 441 человека и готовы поделиться знаниями, которые получили в результате.
Вы знали, что 1 из 4 разработчиков научился кодить до того, как получил водительские права?
Надеемся, что наш доклад будет для вас полезным.
Вивек Равинскар, Co-founder/CEO HackerRank
Оглавление
- Пролог
- Обучение и образование
- Самые востребованные языки и фреймворки
- Самые востребованные навыки
- Рабочие инструменты разработки
- Как нанять хорошего разработчика
- Интересные факты
- Методология исследования
2. Обучение и образование
1 из 4 разработчиков научился кодить до того, как получил водительские права
Не может быть слишком рано — или слишком поздно! — чтобы научиться кодить. Почти четверть (из опрошенных 39 тыс. разработчиков со всего мира) написали первые строки кода до того, как им исполнилось 16 лет.
В то же время из 5,2% тех разработчиков, кто начал программировать после 26 лет, 36% сейчас работают на позициях senior-разработчиков и выше.
Появление доступных домашних ПК сильно мотивировало детей 70-х годов учиться кодить
До 70-х годов просто не было доступных способов учить молодежь программированию — в отличие от детей последующих поколений. Если ребята первого поколения домашних ПК хотели сделать что-то инновационное, им приходилось делать это самостоятельно. Поэтому 47% всех разработчиков в возрасте от 45 до 54 лет начали кодить до того, как им исполнилось 16. А вот разработчики в возрасте от 18 до 24 лет в среднем учатся программировать позже — всего 20% начинают до 16.
В молодости разработчики категории «от 45 до 54» были среди первых, кто смог поработать с первыми домашними ПК, такими как Acorn Archimedes, TRS-80, Commodore 64 и Apple II. Поэтому (так как учиться на программистов было по каким-то причинам недоступно, либо вообще негде) у молодёжи с первыми домашними ПК появилась сильная тяга учиться кодить самостоятельно.
В Великобритании круче всего мотивируют детей учиться программированию
Из 17 стран, которые представляют в исследовании минимум 100 разработчиков, в Великобритании наибольший процент тех, кто начал кодить с 5 до 10 лет. Большинству этих разработчиков сейчас уже за 30 или даже за 40.
Когда эти разработчики еще учились в школе, в Кембридже разработали и выпустили компьютеры серии Acorn Archimedes. Благодаря программе супермаркетов Tesco «Компьютеры в школы», в которой покупатели в этих супермаркетах могли жертвовать школам на учебные ПК, у большого количества школьников появился уникальный для тех лет доступ к компьютерам.
В наше время британские дети — одни из первых, у кого программирование входит в школьную программу с 5 лет.
Политики часто повторяют, что чем раньше дети начинают программировать, тем раньше они делают первые шаги к карьере в разработке и тем лучше они понимают принципы вычислительного мышления и того, как разный софт влияет на их повседневную жизнь.
Почти все разработчики тянутся к самообразованию
Такое ощущение, что каждый год появляется новый язык, фреймворк или библиотека, о которых начинают гудеть во всех блогах о разработке — буквально вчера все говорили о Backbone.js, а сегодня в моде уже AngularJS и React. Поэтому самообразование — обычное дело для разработчиков любого возраста.
Несмотря на то, что у 67% опрошенных есть высшее образование в области информатики, примерно 74% сказали, что они хотя бы частично — самоучки.
В среднем разработчики знают 4 языка программирования и хотят выучить еще 4. Жажда новых знаний немного варьируется с возрастом: молодые разработчики (от 18 до 24 лет) планируют выучить 6 новых языков, а разработчики 35+ — 3 новых языка.
Так как программирование базируется на независимых исследованиях, нацеленных на решение различных задач, самообучение — важная часть того, что делает разработчика успешным. Когда разработчик выбирает чему учиться, лучше всего обосноваться в конкретной предметной области и изучать различные инструменты, чтобы в ней расти. Инструменты меняются постоянно, поэтому интерес к программированию должны подогревать любопытство и искреннее желание развиваться и подстраиваться под существующие нужды технологической среды.
Молодежь учится на YouTube, а не по учебникам
Не удивительно, но платформа номер один для самоучек любого возраста — Stack Overflow. Разработчики ценят советы других разработчиков, которые уже нашли решения волнующих их задач и делятся пошаговыми инструкциями конкретного решения.
Второе место поделили учебники по программированию и YouTube, причем люди постарше выбирают книги, а помоложе — видео, ведь для разных поколений эффективные способы обучения могут отличаться. YouTube выбирают 65% миллениалов (родившиеся в 80-х и 90-х), книги выбирают 85% представителей «поколения Х» (родившиеся с 60-х по 80-е).
У каждого из этих способов есть свои преимущества. YouTube позволяет построить и систематизировать схему обучения не хуже чем в университете, но учиться в своем, комфортном темпе. Еще одно преимущество обучающих видео на YouTube — актуальность, ведь они быстро поспевают за новыми технологиями, а новый туториал можно записать за день. В то же время учебники лучше помогают ознакомиться с фундаментальными знаниями.
Какой бы метод обучения вы ни выбрали, ясно одно — мы стоим на пороге мощного скачка в развитии обучения программированию.
3. Самые востребованные языки и фреймворки
Разработчики учат те языки программирования, которые нужны потенциальным работодателям
Несмотря на то, что постоянно появляются новые языки программирования, для разработчиков важно уверенно владеть базовыми, устоявшимися языками. На данный момент самые востребованные работодателями языки — это JavaScript, Java, Python, C++ и C.
Между языками, которые нужны потенциальным нанимателям, и языками, которые знают разработчики, никакого отличия нет — больше всего разработчиков сообщили нам, что знают именно Java, JavaScript, C and C++ и Python.
Уровень востребованности языка меняется в зависимости от сферы деятельности компании, которая хочет нанять разработчика. Например, в финансовой сфере уже много лет доминирует Java. Программистов на C нанимают компании, которые делают «железо», из-за прямого доступа к низкоуровневому API и доступности компиляторов для многих платформ. А различные правительственные организации нанимают разработчиков, владеющих C#.
Спрос на знание фреймворков JavaScript выше предложения
Обычно языки программирования не становятся востребованными, как только их разрабатывают, но фреймворки JavaScript серьезно меняют ситуацию. Фреймворки JavaScript так востребованы, потому что, благодаря им, JS применим и в фронтенде, и в бекэнде, и в мобильной разработке, и для разработки расширений для браузеров. Сейчас JavaScript правит вебом, а самые востребованные фреймворки — AngularJS, Node.js и React.
Именно в этих трёх фреймворках имеется наибольший зазор между востребованностью у работодателей и владением фреймворком у разработчиков. На первом месте React — этот фреймворк нужен 33% компаний, но его знают только 19% разработчиков. Другими словами, сейчас отличный момент для разработчиков, чтобы начать учить React, ведь он хорошо востребован на рынке.
Такие зазоры между спросом и предложением могут появляться, потому что экосистема JavaScipt быстро меняется и развивается.
4. Самые востребованные навыки
Решение задач — самый важный навык разработчика, который ищут почти все работодатели
Навык решать задачи — самый важный навык для потенциальных работодателей программиста, важнее чем владение языками программирования, отладка багов и архитектура систем. То есть использование вычислительного мышления, способность решать большие и сложные задачи, в работе программиста чуть ли не важнее, собственно, необходимых для работы технических навыков.
Есть небольшая разница в том, что ищут в разработчиках большие компании и компании поменьше. Например, для маленьких компаний знание разработчиками фреймворков немного важнее, чем для крупных и средних.
Скорее всего, эта разница появляется потому, что стартапам важно быстро обновлять код, а фреймворки помогают это делать.
Практический опыт важнее красивого резюме
Есть заблуждение, что компании скорее возьмут на должность выпускника с дипломом по технической специальности, да еще и из университета попрестижнее. На самом деле эйчарам важнее то, чего вы достигли, а не то, где вы учились. Большинство опрошенных HR-менеджеров сообщили, что в первую очередь они смотрят на доказательства того, что разработчик применял свои умения — где они работали, какой у них стаж, есть ли у них свои проекты, можно ли посмотреть их код на GitHub.
9 из 10 эйчаров сказали, что для них важнее всего предыдущий опыт и стаж разработчика.
То, на чем обычно строится крепкое резюме (образование, ученые степени, сертификаты о дополнительном обучении) — находится на последних местах среди того, что волнует эйчаров, ведь это не доказательство того, что разработчик имеет практический опыт. Единственный реальный показатель умений в резюме это именно стаж, так как именно с практическим опытом растет мастерство. Невозможно тщательно рассмотреть всё огромное количество резюме, поэтому если на что-то эйчар и посмотрит, так это на годы стажа — что может мешать талантливым разработчикам, которые очень быстро растут в своей карьере.
Для руководителей компаний важны личные проекты и портфолио на GitHub
В дополнение к обычному резюме работодатели хотят видеть у разработчиков личные проекты и код на GitHub, чтобы иметь возможность лучше оценить их навыки. Когда мы отсортировали данные от работодателей по позициям респондентов, то увидели, что для топ-менеджмента, в т.ч. основателей, технических директоров и вице-президентов компаний, портфолио на GitHub важнее стажа. Наличие высшего образования для них важно еще меньше, чем эйчарам.
Скорее всего так получается потому, что когда разработчик доходит в процессе найма до уровня руководства компании, важные для резюме пункты уже не важны. Чаще всего рекрутеры или другие сотрудники, занятые процессом найма, уже все проверили — а для топ-менеджеров важнее всего увидеть код в действии: личные проекты, предыдущий опыт и портфолио.
5. Рабочие инструменты разработки
Разработчикам интересны языки программирования, которые сделали популярными крупные технические компании
Когда мы смотрели на разницу между спросом на конкретные языки программирования и предложением от разработчиков со знанием этих языков, среди самых востребованных, но непопулярных языков оказались Go, Kotlin, Rust, Scala, и Swift (справедливости ради Go собирается выучить на порядок больше соискателей, чем Swift). Но разработчики планируют их выучить, следуя за тенденцией, заданной компаниями Кремниевой Долины.
Разработанный в Google язык Go предлагает разработчикам поддержку одновременной работы, быстроту компилирования, и, конечно, широкие возможности поддержки от его создателей. Google также популяризовали язык Kotlin, когда ушли от уже привычного для разработки на Android Java.
Twitter обратили внимание на легко масштабируемую Scala, когда переросли Ruby on Rails и стали искать более эффективную и окупаемую альтернативу. И наконец, когда Apple перешли с Objective-C на Swift, разработчикам пришлось подстроиться и к этому.
Python — на первом месте
Пока самый востребованный язык у работодателей это Javascript, а самый любимый у разработчиков любой возрастной группы — Python, если взглянуть на наш «показатель любви и ненависти». Python также лидирует среди языков, которые разработчики хотят выучить, а значительная доля опрошенных уже его знает.
График предпочитаемости языков построен на «показателе любви и ненависти». Чтобы его рассчитать мы взяли % разработчиков, которые любят язык программирования/фреймворк и вычли из него % разработчиков, которые его не любят. Так мы оценили позитивное или негативное отношение разработчиков к языкам и фреймворкам. На графике 100% = очень положительное отношение, -100% = резко негативное отношение.
Python славится своей простотой, читабельностью кода и широкой доступностью библиотек для научных исследований. Также его все чаще включают во вводные курсы по информатике.
Мы обратили внимание на необычную тенденцию, которая касается более молодых языков: молодым разработчикам не нравятся более новые языки (Go, Kotlin и Scala), причем не нравятся больше, чем разработчикам постарше. Самая большая разница в «показателе любви и ненависти» по возрастным группам у Go — разработчики от 18 до 24 лет не особо обращают на него внимание, а для разработчиков от 45 до 54 это один из самых любимых языков. А вот JavaScript ровно наоборот — любят разработчики помоложе и игнорируют люди постарше.
Для нас этот факт особенно интересен, ведь многие новые языки программирования, в том числе Go, включают в себя то, чему разработчики научились у языков постарше. Один из ключевых создателей Go участвовал в создании C многие десятилетия назад.
Однако мы не можем отрицать, что у разработчиков помоложе есть врожденная тяга к знаниям. Они более охотно, чем разработчики старшего возраста, изучают вообще любые языки программирования — даже те, которые им не нравятся. А вот разработчики постарше более избирательны и предпочитают выбирать языки которые, как им кажется, прослужат долгую службу.
Node.js — хит сезона
График предпочитаемости языков построен на «показателе любви и ненависти». Чтобы его рассчитать, мы взяли % разработчиков, которые любят язык программирования/фреймворк и вычли из него % разработчиков, которые его не любят. Так мы оценили позитивное или негативное отношение разработчиков к языкам и фреймворкам. На графике 100% = очень положительное отношение, -100% = резко негативное отношение.
Большая доля разработчиков всех возрастных групп сообщила нам, что Node.js — их любимый фреймворк — что не удивительно, ведь это единственный способ писать бекэнд на JavaScript. Ну а если говорить о фреймворках для фронтенда, то побеждают React и AngularJS — но в основном у более молодых разработчиков.
Разработчики группы 45-54 не оценили React и AngularJS так высоко — в этой группе в лидеры выбился Vue.js. Мы не смогли определить, почему результаты именно такие, и надеемся получить дополнительную обратную связь от разработчиков на Vue.js.
6. Как нанять хорошего разработчика
Верная оценка навыков — большая головная боль эйчара, чем нехватка кадров
Как нам сообщили более 7 тыс. работодателей, просмотр резюме — до сих пор самый используемый способ отбора кандидатов на позицию разработчика. 81% HR-менеджеров просматривает резюме на первом этапе отбора.
Когда мы спросили, что является наибольшей сложностью в процессе отбора кандидатов, большинство рекрутеров сообщили, что это оценка навыков, а вовсе не нехватка кадров на рынке. В то же время всего 55% разработчиков считают, что резюме в полной мере отражают их навыки и умения.
В то время, пока эйчары до сих пор полагаются на резюме на первых этапах отбора кандидатов, почти все опрошенные считают, что оценка навыков — самое сложное в процессе найма на должности программистов. Получается несоответствие между тем, какие навыки ищут компании, и инструментами, которые они используют, чтобы находить такие навыки. Просматривание резюме может служить барьером в найме для HR, ведь зачастую реальный уровень навыков разработчика невозможно понять только по резюме. А другие методы они практически не учатся использовать.
Баланс работы и личной жизни важнее бонусов
Посмотрите на любую вакансию разработчика — обычно рекрутеры в первую очередь пишут о технологическом стеке компании, миссии компании и разных бонусах, чтобы привлечь разработчиков. Но все эти вещи не должны быть на первых местах, если вы хотите нанять хорошего разработчика.
Самая важная для разработчиков вещь — хороший баланс между работой и личной жизнью. Для опрошенных разработчиков он оказался на первом месте, немного опередив возможность профессионально расти и учиться новому. Баланс особенно важен для разработчиков в США — больше, чем для разработчиков в Европе и Азии.
Несмотря на то, что баланс между работой и личной жизнью оказался чуть менее важным для работников небольших компаний, он все равно оказался в тройке лидеров. И, что не удивительно, баланс более важен для разработчиков от 25 лет и менее важен для разработчиков от 18 до 24.
В целом, нет больших различий в ценностях разработчиков по странам, кроме пары исключений. Так для разработчиков в Канаде важнее всего зарплата, а в Австралии — корпоративная культура.
Разработчики хотят работать в гибком графике
Мы понимаем, что для разных людей фраза «баланс работы и личной жизни» может означать разные вещи, поэтому мы решили уточнить, что же они имеют в виду.
Как мы выяснили, работодатели могут создать здоровый баланс работы и личной жизни, разрешив разработчикам работать в свободном графике — ведь до сих пор во многих компаниях работают фиксировано с 10 утра до 8 вечера.
Разработчики хотят работать в компаниях, где ценят результат, а не то, сколько часов работники проводят в офисе. Возможность удаленной работы также помогает создать баланс. Больше всего хотят работать удаленно разработчики старше 25 лет, а возрастная группа от 25 до 44 хочет, чтобы у них была возможность не отвечать на почту в нерабочее время.
Для студентов наиболее важен профессиональный рост
Для студентов-разработчиков важнее всего профессиональный рост, а вот зарплата оказалась на 7-м месте — в то время как у состоявшихся профессионалов зарплата поднимается до 3-го. Баланс между работой и личной жизнью всё же играет роль для студентов и занимает второе место.
Но разработчики в студенческом возрасте хотят больше учиться и раскрывать свой потенциал, поэтому не удивительно, что, пока они молоды, для них он менее важен.
В то же время то, что профессионалы ценят баланс больше, чем зарплату, показывает, что с опытом в индустрии люди начинают ценить такие простые радости жизни, как немного времени на себя, психическое здоровье и свободу действий.
7. Интересные факты
С Vim — победим!
Vim с большим отрывом победил среди всех редакторов кода. Любители Vim рассказали нам, что им нравится им пользоваться благодаря удобству ввода команд.
Из интересного — основатели компаний начинают кодить с 5 до 10 лет в три раза чаще остальных
15% основателей компаний начали кодить до 11 лет — в отличие от 5% людей на других позициях.
8. Методология исследования
HackerRank провели исследование о разработчиках, чтобы выделить тенденции в их образовании, навыках и умениях, а также в практиках найма на технические вакансии. Онлайн были опрошены 39 441 разработчик разных уровней опыта, с 16 октября по 1 ноября 2017. Опрос проводился с помощью сервиса SurveyMonkey, разработчики были приглашены к участию через рассылку по базе из 3,2 млн человек и в соцсетях.
Испытания значительных различий были проведены на уровне 0,01 (вероятность 99%, что разница реальна, а не случайна). Проценты результатов могут не всегда равняться 100% при сложении из-за округления.