Стоит ли идти в Data Science?

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



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

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

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

Имея опыт в обеих сферах, постараюсь убедить вас сделать правильный выбор.
EDISON Software - web-development
А у нас в 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-м я занялся разработкой программного обеспечения, из боязни, что ИИ сделает любую другую работу устаревшей.


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

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

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

Заключение


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

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

В конце-концов, платят нам прежде всего за решение проблем.
Edison
Изобретаем успех: софт и стартапы

Комментарии 19

    +3

    не думаю, что уместно переводить "sexy" как "сексуальная" в этом контексте. Более подходят для русского языка формы "модная, привлекательная".

      +2
      Пожалуй, соглашусь.
      +3
      Лучший аргумент за выбор в пользу программирования в статье отсутствует, — можно перейти в DS позже, и программистский багаж будет огромным подспорьем.
        +2
        Отдельного такого пункта, действительно, нет, но в №7 и в №8 в том или ином виде высказывается эта мысль.
          +3
          В весьма поверхностном виде. DS, а точнее ML это на самом деле офигенно, идти туда стоит, но чтобы понять, почему оно офигенно, надо сначала стать инженером.
        +3

        Спасибо за статью.


        Для меня главный вопрос (как для программиста, в свободное время постепенного изучающего статистику, анализ данных и ML) — как ту самую "интуицию о том как работает модель" развить.


        Такое чувство что теории много (особенно математики которую давно забыл), теория быстро забывается, и хз сколько надо чего выучить до момента когда язык повернётся сказать "я претендую на работу дата-саентиста". И с точки зрения "настоящих математиков" чувствуешь себя так же, как чувствовал бы вчерашний гуманитарий который прошёл курс по Питону -_-

          +3
          И с точки зрения "настоящих математиков" чувствуешь себя так же, как чувствовал бы вчерашний гуманитарий который прошёл курс по Питону -_-

          Настоящие математики часто так и на дата сайенс смотрят (особенно современный, с нейросетями и этим всем).

            +3
            Имхо любая интуиция приходит с опытом — когда мозг взаимосвязи уже вычислил, но еще не структурировал их (а для этого иногда нужно еще больше опыта).
            Делаешь А, получаешь Б, смотришь в данные В, понимаешь почему в модели происходит Г. И с какого-то момента появляется интуиция, что внутри происходит Г.
            +3
            Вопрос: биоинформатику стоит считать Data Science? Формально, — да. Но есть моменты: хорошие программисты = плохие биоинформатики (можете не переубеждать: можно химика/биолога научить программировать, но бесполезно программиста обучать чему-то, отличному от азов химии/биологии и т.п. Школьные знания можете не приводить в пример. Если вы знаете химию и физику только по школьной скамье, вы их не знаете. Исключение — математика и биология, и то в определённых пределах). Я — посредственный программист (местами, может и хороший, но хвастаться не очень принято), зато «вроде как» успешный биоинформатик, при том, что 2/3 софта, что я использую, написано мною самим/моей командой.
            Если нет, мой комментарий бесполезен, если да — означает, что вы недостаточно сильны в технологиях, отличных от программирования, но которые необходимы для решения задачи.
            Ко мне приходят студенты с Мехмата, утверждающие, что знают мат. статистику. Но они почти поголовно не умеют решать задачи по геномной статистике, им приходится разжёвывать. И ладно, если это дипломники, но зачем терять время на таких соискателей? Помню своё аспирантство в Швейцарии в 98м: русские студенты/аспиранты ценились за гибкость ума. Сейчас?
              +4

              Ну, с одной стороны, если человек ковырял HMM, и даже может отличить гамильтониан от лагранжиана (ну или, по крайней мере, N лет назад сдавал экзамен, где это нужно), то насколько это релевантно?


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

                +3
                Боюсь, мой ответ будет далёк от изначальной темы ТС. Но если это не возбраняется, попробую всё же ответить.
                В биоинформатике тоже есть очень много градаций. Есть гении (не побоюсь этого слова — именно так), которые в экселе формулу не напишут (они не знают, как), при этом с помощью 2-3х программных инструментов (древних!!! Есть софтина, написанная для 3.1, до сих пор остающаяся актуальной!!! DOS'овские тоже есть, но аналоги к ним уже подобраны, впрочем, они платные) они решают сложные и нужные задачи. Да, как правило, это — околопенсионеры, которые много знают, много «интуичат», и без них работать будет очень сложно.
                Есть другая градация — «почти чистые программеры», которые вписались в среду, примерно поняли, что от них нужно, глобальную задачу не понимают ввиду незнания материала, зато способны за два дня на коленках сваять софтину, решающую все ваши текущие проблемы. Главное — донести и разжевать, что же именно ты хочешь получить на выходе, и что должно быть на входе. И иногда это очень тяжело, проще самому «расчехлить клаву». Но таких много. Приходят (часто писать диплом), уходят. Если остаются и осиливают хотя бы «трёхтомник», становятся хорошими сотрудниками.
                Идеал — что-то среднее. Но таких не делают в ВУЗах. Даже в моей Альма Матер. Чтобы быть идеальным биоинформатиком, надо гореть этим. Таковые попадаются, но что мы можем им предложить? — Неплохую зарплату и их геном? Они найдут шикарную зарплату и купят себе сиквенс своего генома :) Таких, правда, ничтожно мало, так что если биоинформатика всё же = Data Science, то автор не рассмотрел тему полностью.
                — Наши задачи легко масштабируются. И легко оптимизируются (видели бы вы код инструментов, которые тот же QIAGEN продаёт за бешбабки, — там поле непаханное в плане оптимизации), главное — не удариться в микрооптимизацию. Так что мы решаем проблему так: вместо команды лидер + 2 биоинформатика у нас, как правило, работает команда лидер-биоинформатик + биолог/биохимик + 2 программиста + биолог-тестер. Немного расточительно, зато есть результаты. Особенно в наше текущее неспокойное время.
              +3

              Гипотетическая вакансия недалёкого будущего.




              Магазину удочек "Космический Лосось" требуется миддл Full Stack Веб-Разработчик.

              Обязательные требования:


              • 10 лет подтверждённого опыта разработки в JS/React, NodeJS, MongoDB, PostgreSQL.
              • 7 лет опыта в администрировании Linux и Windows серверов.
              • Не менее 4-х лет опыта работы с Kubernetes, Docker, Chef, Ansible и пр.
              • Подтверждённое умение проектировать высоконагруженные распределённые системы.
              • HTML6 и CSS4 UX/UI ниндзя.
              • Высокая общительность, способность заряжать всех вокруг себя позитивом, душа компании.
              • UML, BPML, способность аккуратно и продуманно рисовать схемы на доске, каллиграфический почерк.
              • Преданность идеям бизнеса, уважение к начальству, желание работать сверхурочно.
              • Git.

              Очень Весомое Преимущество:


              • От 5-и лет опыта в проектировании, сборе и анализе больших данных.
              • 4-5 лет опыта в машинном обучении.
              • Способность быстро обучать ИИ:
                • Полностью естественному общению с клиентами в чатах и по телефону.
                • Распознаванию вида рыбы по колебаниям поверхности воды.
                • Языку рыб для приманивания к крючку.

              Оплата 50000 RUB + премия. Бесплатные обеды.

                +3
                UML, BPML, способность аккуратно и продуманно рисовать схемы на доске, каллиграфический почерк.

                Умение гонять диаграммы. Докажите лемму о змее на интервью.

                  +3

                  Если меня, простого быдлокодера из прошлого, спросят такое на интервью, я им саму эту змею принесу, для наглядности. :)
                  И вообще, я больше по бэкенду...

                +3
                А если я врач и мне интересен стык медицины и дата сайнс?
                Или это утопия, я долэен быть и крутым дата сайнтистом и крутым врачем?
                  +3
                  Наверняка нет. Учитывая, что самое интересное сейчас происходит именно на стыках, причём, зачастую даже не двух, а более направлений, то просто невозможно, на мой взгляд, подготовить человека, который собаку съел во всех. Вопрос, возможно, стоит поставить по-другому: какой специалист лучше: тот, кто суперкомпетентен в одном, но мало знает про другое направление или тот, кто что-то умеет и там, и там?
                  Я часто сталкиваюсь с ситуацией, когда вместе работают хороший программист и хороший биолог, хороший физик и хороший биолог или даже хороший врач и хороший биолог. Порой они просто не понимают друг друга и им сложно работать в такой сцепке. Приходится искать третьего, чьи знания охватывают обе области, тогда эта тройка может выдавать хорошие и, главное, — быстрые результаты. Правда, имеем перерасход работников.
                  Зато в такой ситуации очень хорошо проверяются студенты: двум зубрам придаётся студент, в обязанности которого входит коммуникация между ними. В случае успешного сосуществования не нужно искать третьего компетентного специалиста, плюс, идёт ускоренное обучение студента сразу в двух областях. Жаль, что немногие после такого КМБ задерживаются.
                    +3
                    какой специалист лучше: тот, кто суперкомпетентен в одном, но мало знает про другое направление или тот, кто что-то умеет и там, и там?

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

                      +2
                      У меня ситуация следующая. В медицине у меня очень высокий уровень и я вижу косяки, которые ну 100% можно исправить с помощью тех же простейших методов машинного обучения. Но сталкиваюсь с ситуацией когда от меня хотят и чтобы в медицине я был супер, и чтобы в ML я был на уровне синьйор. И главное все говорят мало хороших врачей, никто не может помочь с медицинской точки зрения. Пишу уже почти год и везде или тишина, или бронирование визитов к врачу.
                        +2

                        Если правда, что Вы говорите о косяках, то бросайте всё и долбите Silicon Valley. Вон, Дудь недавно о них ролик выпустил, прямо какая-то джедайская супернова там… И поспешите, а то кто знает, что потом по обновлённой конституции будет нельзя. Короче, для одарённых и гениев тупой бизнес, даже если псевдонаучный, — обуза. И в итоге они для него тоже. Потому что все бизнесы в конечной дистилляции управляются теми, кто хочет выгодных для себя результатов здесь и сейчас. В Силиконовой/Кремниевой долине всё то же, но, говорят, ментальность другая. Где-то, где более открыты к инновациям, б.м., Вы сможете проявить себя и заодно спасти много жизней от всякой нездоровой фигни. Короче, дерзайте и успеха!

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

                  Самое читаемое