Андрій Себрант («Яндекс») назвав «професії майбутнього» в галузі програмування, Rusbase
Директор з маркетингу сервісів компанії «Яндекс»
Директор з маркетингу сервісів компанії «Яндекс» Андрій Себрант про те, яким навичкам програмістам варто вчитися зараз, щоб не залишитися на узбіччі в майбутньому.
Професії у програмуванні, які можна сміливо вважати професіями майбутнього
Програміст-педагог
Насамперед я б виділив саме цю професію. Програміст-педагог — той, хто не так програмує нейронні мережі чи інші складні системи машинного навчання, як вміє їх навчати.
Тут на перший план виходить не вміння писати код з нуля, а розуміння того, що робить код, написаний кимось іншим, та вміння модифікувати його під свої цілі. Головне – правильно побудувати процес навчання сітки. Це окреме вміння, яке нині ніде не викладають. Точніше, майже ніде. Є приємні винятки: Фізтех, ШАД, ФКН ВШЕ та ще пара місць.
Такий фахівець затребуваний при різних бізнес-завданнях. Комусь через універсальність використання машинного навчання необхідно буде навчити одну й ту саму мережу на DataSet Магнітогорського металургійного комбінату для прогнозування деяких результатів металургійної плавки або ще чогось, а з іншого боку, на даних користувачів World of Tanks і передбачити їх відтік.
Людина, яка вміє навчити сітку, щоб сьогодні вона ефективно передбачала, як змінювати параметри сталеплавильної печі, а завтра як змінювати тарифні плани гравця в World of Tanks, і є програміст майбутнього. Зрозуміло, що в міру того, як тисячі компаній, а не одиниці, почнуть використовувати deep learning та нейронні мережі у повсякденній роботі, їм потрібні будуть програмісти, які ці сітки.вміють вчити, а чи не писати.
Такі фахівці будуть потрібні в промисловості, серед банків, будь-якими підписними сервісами, починаючи від мобільних операторів і закінчуючи комп'ютерними іграми. Це ті сфери, що лежать на поверхні.
Експерт з open source
Друга професія майбутнього знаходиться на стику менеджменту та IT. Ця людина замість того, щоб писати завдання на розробку чогось з нуля, знає, де і який відкритий код можна швидко пристосувати або де і які API можуть бути доступні.
Зараз «винаходом велосипедів» зайнято величезну кількість команд, і в той момент, коли вони показують створений код, замовник дізнається, що він вже існує у когось (наприклад, у Google репозиторії). Потрібні будуть фахівці, які є експертами з open source і розуміють, які велосипеди не треба винаходити. Вони, навпаки, візьмуть готові частини, які лежать, із них швидко зберуть — можливо, той самий велосипед, але власний із готових частин — і не підніматимуть тут виробництво окремих коліс, шин тощо.
Простий приклад. Раніше хороший розподілений алгоритм, який міг розпізнавати зображення, був доступний п'яти великим компаніям та трьом великим університетам. На сьогоднішній день його знайде будь-який школяр, тому що у відкритому доступі є Tenzor Flow. Я знаю добрих школярів, які з ним розуміються. Але й людину, яка почне писати з нуля щось схоже, я теж знаю, тому що вона погано орієнтується в тому, що буває на GitHub.
Спеціаліст з інтерфейсного програмування
Все більше і більше речей стають не окремими програмами, а програмами, які забезпечують роботу двох програмних інтерфейсів один з одним. Те, що дається нам у хмарі, здебільшогоє не статичними даними, а робочим інтерфейсом, і з ним треба зіштовхувати якийсь свій інтерфейс.
Необхідно вміти працювати з API хмарних сервісів, знати ці сервіси, вміти їх швидко зв'язувати, та й взагалі розуміти який з чим можна пов'язати. Це не написання всього з нуля, а максимальне використання того, що вже є і написане іншими людьми. Особливо такі вміння стосуються важких програм — всього картографічного чи пошукового.
Такий фахівець знає, що відбувається у світі, які нові інтерфейси і де відкриваються та вміє добре з цими інтерфейсами працювати.
Наведу приклад, як ці професії можуть конкурувати одна з одною. Стоїть завдання – у рамках сервісу потрібно розпізнавати голос людини. Наразі вона вирішується за допомогою нейронних сіток. Можна взяти та закупити в Amazon потрібні ресурси, завантажити код того ж Tenzor Flow та почати навчати цю сітку.
Тут будуть потрібні дві людини, яких ми згадали. Фахівець із роботи з чужим кодом розуміє, як Tenzor Flow підняти на хмарі Amazon. Коли він це зробив, то в руки готовий продукт бере та людина, яку ми назвали програмістом-педагогом. І він навчає сітку, розуміє, які DataSet і з якими голосами загнати, щоб сітка почала розпізнавати назви вулиць китайською мовою.
Але може з'явитися фахівець з інтерфейсного програмування та сказати: хлопці, є програми розпізнавання мови Speech Kit або Nuance, нам не треба адаптувати код та орендувати серверний час, є просто готовий API – заганяєш туди запис звуку, а тобі повертають текстовий файл у режимі реального часу . Так він може їх просто позбавити роботи.
Чому злетіла Prisma? Хлопці не писали код із нуля, знали, де його взяти, як його модифікувати, де орендувати серверидешевше. Це було використання умінь професій кожної із трьох зазначених мною груп.
Яким професіям, навпаки, судилося загинути
Я не ставив би так питання. Хороший програміст вміє вчитися. Сама професія програмування модифікуватиметься, вона вже сьогодні використовує зовсім інші інструменти та інші мови, ніж 20 років тому. І треба сказати, що ті, хто їм навчився 20 років тому, нікуди не зникли, вони просто стали програмістами, які працюють в іншому середовищі. Так буде й надалі. Деякі окремі вміння програміста чи деякі середовища, у яких працює, будуть, безсумнівно, змінюватися.
Можна сказати, що ті люди, які зараз є веб-програмістами, стануть програмістами для інших пристроїв, тому що важливість веб-сервісів стає все меншою мірою зростання портативних пристроїв або інтернету речей. Так, з цієї причини з'являються нові мови програмування — Swift чи Go. Але вони прихильно прийняті програмістами.
Загалом, програмісти, безсумнівно, залишаться, просто працюватимуть у середовищі, до чого їм не звикати.
Презентація найновіших бізнес- та технічних кейсів з BigData, AI та IoT на конференції ICBDA'2016. Програма та реєстраціяза посиланням.