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



Это моё личное и ни для кого необязательное мнение. Контраргументы в комментариях приветствуются.

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

Часто получаю сообщения от выпускников ВУЗ-ов и просто людей, меняющих профессию, спрашивающих о том, как войти в науку о данных. Вместо этого я советую им просто войти в айти.

Имея опыт в обеих сферах, постараюсь убедить вас сделать правильный выбор.

А у нас в EDISON недавно успешно завершён проект, где наука о данных и разработка ПО способствуют решению бытовых и бизнес-задач.


Мы реорганизовали сайт и мобильное приложение для системы вывоза мусора. Умные устройства, микроконтроллёры, использование картографического сервиса, задача коммивояжёра — вот это вот всё.

Мы очень любим, когда software engineering в связке с data science выдают solve problems! ;-)

1. В сфере программной разработки полным-полно работы


В программной инженерии на порядок больше рабочих мест по сравнению с наукой о данных.

Ниже приведено несколько снимков экрана после поиска в Google по запросам «эксперт по данным» («data scientist») и «разработчик программного обеспечения» («software engineer»).





7616 научных вакансий против 53 8893 по разработке ПО. Это по США, в других странах аналогичная картина.

Если верить Glassdoor (веб-сервис, с помощью которого можно мониторить уровень зарплат и ознакомиться с отзывами сотрудников о компаниях), ученые, занимающиеся данными, зарабатывают больше денег. Однако моя непроверенная гипотеза заключается в том, что вакансии в области данных в основном ориентированы на сотрудников очень высокой квалификации.





Хотя, кто спорит, если вам предложат миллион в OpenAI — соглашайтесь не раздумывая.

2. Нет единого мнения, что это вообще такое — «наука о данных»


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

Это означает, что обязанности «эксперта по данным» весьма и весьма сильно различаются от компании к компании.


Условный набросок, что от вас может понадобиться в зависимости от бизнес-задач. В спектре между решением проблем бизнеса и исследованиями находятся такие профессии как Software Engineer ⇒ Data Engineer ⇒ Machine Learning Engineer ⇒ Data Scientist

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

В итоге нанятые кандидаты работают над текущими проблемами компании, а не выполняют ту экспертную роль, на которую они, вообще говоря, нанимались.


У меня есть свидетельства от коллег (учёных, занимающихся данными), о том что пишут бэкэнд-код, как разработчики программного обеспечения. Я знаю других «исследователей данных», которые преуспели в решении финансовых вопросов своих компаний.

Это резко может контрастировать с вашими ожиданиями, особенно если они сформировались под влиянием конкурсов Kaggle.

3. Одиночество бегуна на длинные дистанции эксперта по данным


Большинству компаний просто не нужно столько экспертов данных, сколько инженеров-программистов. Другие компании наняли пока что только своего первого (и до поры до времени — единственного) специалиста по данным.

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

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

Напротив, одним из преимуществ команды разработчиков ПО является возможность всегда сказать коллегам: «Я считаю, что нужно внедрить ABC в XYZ. Ваше мнение?".

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

4. Data Science носит ярко выраженный исследовательский характер


Будьте готовы к неприятным разговорам с руководством на тему того, что то, над чем вы работали 2 недели — не будет использовано.

Работа и над решаемыми и над нерешаемыми проблемами — одно из фундаментальных отличий между разработкой программного обеспечения и ИИ.

С учётом ошибок и ограничений, присущих разработке ПО — до начала работ вы по большому счёту имеете представление, что реализуемо, а что нет. То же самое про Machine Learning уже не скажешь. Окажется ли модель эффективной — неизвестно до той поры, пока она не будет реализована.

5. Бизнес пока не готов к ИИ


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

Один мой знакомый руководитель отдела Data Science в интенсивно развивающемся стартапе недавно поделился своей стартаперской мудростью за рюмкой кофе:

Сначала вы определяете проблему, затем строите инфраструктуру, и только потом привлекаете экспертов по данным. И это всё происходит очень даже не быстро. (Не дословно)

Еще одна моя знакомая специалистка по data science в известной компании недавно посетовала в разговоре, что мол-де вынуждена обучать модель искусственного интеллекта на больших данных на своём ноутбуке, а не в облаке.

Если на новом месте, куда вы пришли, не решены некоторые специфические проблемы, а то и вообще компания не готова к внедрению в свои процессы науки о данных, — готовьтесь к тому, что создавать что-либо ценное придётся на пределе сил.

6. Программная инженерия даёт общие навыки


Стать младшим инженером-программистом — всё равно, что получить степень MBA в области технологий. Вы узнаёте всего понемногу.

Вы изучите базы данных, облачные технологии, развёртывание, безопасность и написание чистого кода.

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

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

7. Разработка ПО как деятельность имеет гораздо более гибкий характер


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

DevOps, безопасность, интерфейс, бэкэнд, распределенные системы, бизнес-аналитика, дата-инжиниринг, наука о данных…

Я знаю многих разработчиков, которые перешли от разработки программного обеспечения к data science. Если вы просматриваете описания заданий по data science, то сразу заметите, что они требуют много навыков, которые формируются разработке ПО.


Если вы можете создавать E2E проекты, вы также можете сделать больше, чем просто создать модель для конкурса в Kaggle. Вы можете взять эту модель, произвести её, настроить авторизацию и электронные платежи, а затем монетизировать. Это ваш собственный стартап.

Я никогда не скажу, что наука о данных бесполезна вне сферы своего непосредственного применения. Принятие решений на основе больших данных является просто убойным средством в наше время. Но это также приведёт к тому, что методы data science будут всё больше востребованы в другой работе, поскольку бизнес всё больше и больше ориентируется на большие данные.

8. Машинное обучение станет обычным инструментом для разработчиков ПО


По мере того, как ИИ становится удобнее и проще в использовании, разработчики программного обеспечения начнут использовать его для решения своих проблем.

Я могу научить (во второй половине дня) разработчика строить sklearn-классификаторы. Это не означает, что мой падаван создаст следующий AlphaGo, но это даёт ему альтернативу жёстко запрограммированной условной логике, основанной на пользовательском вводе.

Специалисты по большим данным имеют специальные знания, вроде статистики, у них есть особая интуиция относительно того, как работают модели. Но у DevOps и Security-инженеров также свои специализированные знания.

Я бы сказал, что тут дело не в том, насколько разнятся навыки, а в том, что одни используются реже, а другие чаще. Опытный инженер перемещается между специализациями на порядки быстрее, пока новичок осваивает с нуля.

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

9. ИИ не заменит в обозримом будущем инженеров-программистов


Как бы глупо это сейчас ни звучало, в 2014-м я занялся разработкой программного обеспечения, из боязни, что ИИ сделает любую другую работу устаревшей.


И всё же с тех пор ближе к технобудущему мы пока что особо не приблизились. Внедрение технологий происходит медленно, а от сильного ИИ мы дальше, чем вы можете себе представить.

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

Пока что в эпоху предсингулярности, умение писать программы ещё надолго останется ценным и высокооплачиваемым навыком.

Заключение


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

Не принимайте сказанное мною слишком серьезно. Я бы предпочёл, чтобы вы исследовали этот вопрос и приняли собственное решение. Это часть деятельности любого эксперта по данным, в общем-то :)

В конце-концов, платят нам прежде всего за решение проблем.