«Де та молода шпана, що зітре нас із лиця землі?»

Екзистенційним питанням, винесеними в заголовок у формулюванні Гребенщикова, я поставив після чергового раунду обговорення в одному з спільнот на предмет того, чи потрібні початківцю web backend девелоперу знання SQL, або ORM все і так зробить. Відповідь вирішила пошукати трохи ширше, ніж просто про ORM та SQL, і в принципі постаратися систематизувати, хто ті люди, які зараз йдуть на співбесіди на молодші та середні позиції, яка їх історія і в якому світі вони живуть. Загалом думка у мене була, але вона сформована особистим досвідом найму і явно скоригована під локальний ринок. Загалом стало цікаво. Ось, що вдалося знайти.

Глобальна популяція розробників

Щоб якось підійти до питання, вирішив почати з пошуку даних про те, скільки в принципі зараз розробників у світі і як ця популяція змінюється з часом.
Оцінки у різних джерелах називають числа у вилці від 12 до 30 мільйонів осіб. Зупинитися вирішив на даних від SlashData, тому що їхня методологія здалася мені цілком збалансованою і придатною для моїх потреб. В оцінці вони враховували кількість облікових записів і репозиторіїв на Github, кількість облікових записів на StackOverflow, облікові записи npm і дані офіційних джерел про працевлаштування в США та Європі. Також вони відкоригували число, що вийшло, за допомогою своїх власних 16 досліджень, які охоплювали приблизно по 20 000 осіб для кожного опитування.

За даними SlashData вийшло, що у четвертому кварталі 2018 року у світі було приблизно 18.9 мільйонів розробників, 12.9 мільйонів з яких професійні, тобто заробляють на життя програмуванням. Ті, хто не є зараз професійними розробниками — це люди, для яких програмування є хобі плюс ті, хто зараз вивчає професію (різнокаліберні студенти та самоучки). Ну, ось натяк на чисельність групи, яка мене цікавить — 6 мільйонів людей. Чесно зізнатися, це більше, ніж я очікував.

Другим сюрпризом для мене стали темпи зростання поголів'я програмістів: з другого кварталу 2017-го по четвертий квартал 2018 воно збільшилося з 14.7 до згаданих 18.9 мільйонів, або зросло на 21% за 2018 рік! Якби мене попросили оцінити темпи зростання кількості програмістів, то я сказав би, що це близько 5% на рік з невеликим зростанням темпу щорічно. А тут виявляється цілих 20%.

Крім того, SlashData оцінює, що до 2030 року населення досягне 45 мільйонів. Неважко порахувати, що це передбачає зростання на трохи більше ніж 8% щорічно, а зовсім не 20%, але вони посилаються на корекцію з урахуванням проникнення інтернету (зараз близько 57% у світі даними Statista) та ще кількох факторів, наприклад кількості розробників на душу населення. Географічно, найсильніше зростає кількість розробників в Індії та Китаї, ймовірно, Індія обжене США за кількістю розробників до 2023 (це вже дані C# Corner).

Загалом, програмістів буде багато, як не крути, бо попит зростає. До речі, про попит.

На що є попит?

Для оцінки попиту я користувався даними HackerRank за 2018 и 2019 року.

З мов програмування найбільший попит на JavaScript, Python і Java практично по всіх індустріях, за винятком Computer Hardware. В останній найбільший попит на C/C++, що і зрозуміло, у залізничних проектах ще зберігаються вимоги щодо ресурсомісткості та продуктивності відповідного софту.

«Де та молода шпана, що зітре нас із лиця землі?»

За фреймворками найбільшим попитом користуються AngularJS, Node.js і React, причому за ними найбільший розрив попиту та пропозиції, що, здається, пояснюється швидкістю, з якою змінюється екосистема JavaScript-а, тому що наприклад ExpressJS пропозиція вже перевищує попит.

«Де та молода шпана, що зітре нас із лиця землі?»

За компетенціями роботодавці очікують від кандидатів насамперед Problem Solving skills. Близько 95% роботодавців згадують ці навички як важливі. Programming Language Proficiency на другому місці із 56%. До речі рядки з фундаментальними знаннями алгоритмів, структур даних та іншого Computer Science взагалі немає, чи не було в опитувальнику, чи так масово академічні знання вже не потрібні.

Database Design потрібен 23.2% компаній розміром до 100 осіб, та 18.8% компаній понад 1000 осіб. Ага, ось воно схоже на ORM і SQL! Логічне, імхо, пояснення в тому, що у великих компаніях з'являється виділена роль DBA, який відповідальний за цей аспект, а отже, можна пом'якшити вимоги до девелоперів та наймати швидше. А ось із System Design навпаки: 37.0% у маленьких, 44.1% – у великих. Здавалося б, у великих мають бути виділені архітектори, але, можливо, вони просто не в змозі покривати кількість систем, що генеруються. Або в System Design заразом вкладають ті самі фундаментальні алгоритми і структури даних, тоді стає трохи зрозуміліше.

Маленьким компаніям більше потрібен Framework Proficiency і менше вищезгаданий System Design, з чого можна зробити капітанський висновок про те, що стартапам важливо якнайшвидше запустити працюючий продукт, а завтра буде завтра.

«Де та молода шпана, що зітре нас із лиця землі?»

Що навчають студенти?

Тут я спирався на дані ще одного дослідження HackerRank.
Важливо враховувати, що незважаючи на те, що програмування у тому чи іншому вигляді викладається в університетах (маю на увазі Computer Science спеціальності), більше половини опитаних сказали, що займаються навіть самоосвітою.

Сучасні студенти вважають за краще навчатися по YouTube, тоді як більш дорослі розробники схиляються до тьюторіалів і книг. І ті, й інші активно користуються StackOverflow. Відношу це на те, що відео – звичний медіаканал для покоління Z, тоді як представники покоління Y ще застали епоху без блогерів.

Навчають те, що затребуване роботодавцями: JavaScript, Java, Python. Вказують, що знають C/C++, але це можливо тому, що ці мови використовуються для викладання в університетах. Вчать JS фреймворки, але попит істотно вищий за пропозицію, тому мабуть активно вчать вже знайшовши першу роботу.

«Де та молода шпана, що зітре нас із лиця землі?»

Загалом очікувано вчать те, на що є попит.

Студенти від першої роботи очікують насамперед на професійне зростання, на другому місці (у деяких країнах на першому) work-life balance, на третьому — цікаві завдання.

Динаміка популяції розробників з мов програмування та типу ПЗ

«Де та молода шпана, що зітре нас із лиця землі?»

Web програми на першому місці з оцінкою в 16.9 мільйона розробників. Це знову дані SlashData. Далі Backend Services (13.6 млн), мобільні програми (13.1 млн) та десктоп (12.3 млн). AR/VR та IoT сектори поступово набирають популярність, AI/ML/Data Science суттєво зросли за останні два роки.

Найшвидше зростає Javascript, його спільнота вже зараз найбільша, тільки за 2018 рік зросла на 2.5 мільйони. На ньому намагаються писати навіть у секторах IoT та ML.
Python за 2018 рік приріс на 2.2 мільйона за рахунок зростання популярності ML, де він традиційно сильний, а також за рахунок простоти освоєння та зручності мови.

Java, C/C++ та C# ростуть із меншою швидкістю, ніж загальна популяція розробників. Вони тепер рідко є мовою програмування, з якого люди вважають за краще починати. Попит на розробників тут більш-менш збалансований із пропозицією. Думаю, що Java зростала б ще повільніше, якби не Android.

PHP є другою за популярністю мовою програмування веб додатків і вона теж суттєво зростає (на 32% у 2018 році). Його співтовариство оцінюється в 5.9 млн. розробників. Незважаючи на полярну думку щодо репутації PHP, він досить простий у вивченні та широко поширений.

Як навчаються сучасні молоді кандидати порівняно з минулими поколіннями

Знову дані HackerRank. Ті, кому зараз від 38 до 53, першими своїми проектами вказують ігри.

Підтверджую, до речі, першим моїм більш-менш робочим проектом були «хрестики-нуліки» до п'яти в ряд із необмеженим полем, другим — гра в 15. Писав я все це на БК 010-01, там був вільнюський бейсик, він же BASIC-86 та фокал. Ех.

Сучасні програмісти-початківці (до 21-го року) першими проектами пишуть калькулятори та веб сайти.

Серед представників покоління X майже половина почали писати код до 16 років, багато хто так і взагалі з 5 до 10 років (переважно ті, кому від тепер від 35 до 45 років). Більш-менш зрозуміло чому: джерел інформації було мало, і щоб стати програмістом потрібно було дійсно цього сильно хотіти, а ті, хто хотів, починали програмувати рано. Ті, хто хотів не так сильно, до сьогоднішнього моменту, швидше за все, мають іншу професію, тому картина з соціології саме така.

«Де та молода шпана, що зітре нас із лиця землі?»

Сьогоднішні молоді кандидати лише у 20% випадків починають програмувати до 16 років, більшість — десь між 16-ю та 20-ю. Але їм і значно простіше вчитися, тепер це набагато доступніше.

Висновки

Залізобетонної відповіді на запитання, чи потрібен сьогодні початківцю web backend девелоперу SQL, я так і не знайшов, зате підкоригував своє уявлення про сучасну популяцію програмістів.

Чергове покоління розробників — звичайні люди, які в чомусь нагадують колишніх квартирне питання лише зіпсувало їх. Вони задовольняють попит, що створюється роботодавцями. Поріг входження в професію став нижчим через зручніші інструменти та фреймворки, які дозволяють швидко досягати результату. Більше народу зараз стають програмістами, цифрове покоління (покоління Z) так і взагалі живе в технологіях від самого народження, для них це звичайна професія, не гірша за інших.

Тих, хто знає, що латенсі L1 кешу це ~4 цикли, і що кеш лайни краще не збивати без необхідності, стає менше у відсотковому відношенні до загального розміру популяції. Однак хвилюватися про працевлаштування їм не варто, хтось же, зрештою, повинен писати низькорівневі речі, де це, як і раніше, потрібно. Так само як не варто хвилюватися і тим, хто має глибокі фундаментальні знання в системному дизайні і придбав їх у кровопролитних практичних боях, а не просто слідує карго культу. Тому що тих, хто вміє «просто писати код» і «просто» користуватися фреймворками в командах, ставатиме більше, і для того, «щоб не було боляче за безцільно прожиті роки» (с) їх потрібно буде балансувати саме такими людьми.

Софт скіли з категорії бажаних поступово мігрують до обов'язкових (на підтвердження цього у мене немає об'єктивних даних, просто практичні спостереження). Кількість програмістів зростає, і їх усіх потрібно спрямовувати для досягнення результату, хоч прямим, хоч непрямим управлінням, а для цього якраз і потрібні софт скіли.

«Увійти в IT» видається мені локальною регіональною історією, характерною для тих локацій, де дохід програміста істотно відрізняється від доходу порівнянного за кваліфікацією «не IT» фахівця. У Мінську, де я живу, то це взагалі масовий рух, щодня бачу рекламу чергових курсів про те, як потрапити до заповітного IT, а клінінгові компанії таргетіться у програмістів із посилом «Розумієш код на цій картинці? Значить, можеш дозволити собі не прибирати в квартирі, ми зробимо все за тебе.» Те саме мабуть відбувається в якійсь Індії. На доказ цього даних у мене також немає.

Загалом популяції програмістів нічого на мій погляд не загрожує. Бухтіти про те, що справжніх програмістів вдень з вогнем не знайдеш, а кандидати часто-густо «нічого не знають», не варто. Вони такі ж розумні й здібні, можливо навіть розумніші й здібніші за «справжні програмісти», просто набувають тих знань, які від них вимагає бурхливий ринок і відкладають на потім те, що їм поки що не потрібно і не принесе бенефіту прямо зараз. Вивчать, коли буде потрібно, бо вони, як і раніше, хочуть вчитися. Напевно, не всі будуть на це здатні, але й не всім це знадобиться, ринок точно в прогнозованому майбутньому буде легко приймати людей, здатних швидко зібрати на якомусь фреймворку черговий концепт програми.

Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.

Чи потребуєте ви на співбесідах веб-бекендерів знання SQL?

  • Так, вимагаю, бо потрібно в роботі

  • Так, вимагаю, хоч у роботі це потрібно рідко

  • Ні, не вимагаю, у нас NoSQL

  • Ні, не вимагаю, ORM все зробить

Проголосували 320 користувачів. Утрималися 230 користувачів.

Джерело: habr.com

Додати коментар або відгук