[Перевод] Прощай, Data Science
Это по большей мере личный пост, а не какое-то глубокое исследование. Если вам нужны какие-то выводы, то здесь вы их не найдёте. Откровенно говоря, я даже не знаю, кто его целевая аудитория (возможно «дата-саентисты, которые себя ненавидят»?).
Последние несколько лет я был дата-саентистом, но в 2022 году получил новую должность дата-инженера, и пока я ею вполне доволен.
Я по-прежнему работаю вместе с «дата-саентистами» и немного продолжаю заниматься этой сферой, но вся моя работа по «data science» заключается в руководстве и консультировании по чужой работе. Я в большей степени занимаюсь реализацией data science (MLOps) и дата-инжинирингом.
Основная причина разочарования в data science заключалась в том, что работа казалась несущественной, во многих смыслах этого слова «неважной»:
- Работа — это непрекращающийся поток разработки, продукта и офисной политики, поэтому часто так бывает, что работа хороша настолько, насколько хорошо самое слабое звено в цепи.
- Никто не знал, в чём заключается разница между плохой и хорошей работой в data science, да никого это и не волновало. Это значит, что вы можете быть абсолютным неудачником или гением в ней, но в любом случае получите примерно одинаковое признание.
- Работа часто приносила очень малую пользу бизнесу (часто компенсируя некомпетентность выше по цепочке управления).
- Когда польза от работы превышала затраты на оплату труда, часто это не давало внутренней отдачи (например, настройка параметра, чтобы бизнес зарабатывал больше денег).
С большим отрывом от всех остальных аспектов наибольшую досаду вызывало руководство. Меня совершенно вымотало абсолютное безумие, происходившее в технологической отрасли до 2021 года. Компании постоянно стремились к реализации вещей, которые при размышлении априори можно было назвать безумными идеями; эти идеи любой сколь-нибудь умный человек мог признать нерабочими ещё до попытки реализации. Некоторые проекты могли сэкономить человеко-годы труда, если бы кто-нибудь обладал лучшим пониманием бизнеса, клиентов, общей экономической/социальной ситуации, бухгалтерии и (слишком недооценённое знание в сфере технологий) любой из предметных областей.
Те, кто видел мои посты в Twitter, знают, что, по-моему, роль дата-саентиста в ситуации с безумным руководством заключается не в том, чтобы предоставлять реальную, честную консультацию, а в том, чтобы обосновать эти безумные идеи, как будто они имеют какое-то основание в объективной реальности, хотя это и не так. Менеджеры говорят, что хотят принимать решения на основе данных, но на самом деле им нужны данные, подогнанные под решения. Если вы отклонитесь от этой роли, то есть, например, будете убеждать людей не стремиться к реализации глупых идей, то наградой будет их презрение, после чего они всё равно попробуют это сделать и ничего не получится (какая неожиданность). Единственная возможность победить — стать подпевалой.
Менеджеры преследовали эти безумные идеи в том числе и потому, что их наняли, несмотря на полное отсутствие опыта в предметной области бизнеса или в работе компании, а ещё потому, что фирмы, работающие с венчурным капиталом, имеют странное мнение, что раздувание затрат в условиях избытка прибыли — это «рост», а потому прекрасно во всех случаях; это бизнес-аналог сообщества плоской Земли. Кроме того, руководство безумным проектом идёт на пользу личному карьерному росту человека (он пишет в резюме «управлял валовой выручкой в $10 миллионов», забывая упомянуть, что себестоимость товаров составляла $30 миллионов). По сути, здесь присутствует приличная награда за успех и отсутствует наказание за провал, а иногда за провалы даже награждают! Так почему бы не сделать что-то безумное?
Кроме того, похоже, что фирмы, управляющие венчурным капиталом, любят, когда компании работают так, как это написано в их портфолио — они хотят, чтобы компании попробовали сто разных подходов, и если пять из этих ста подходов сработают, венчурный капитал посчитает такое успехом. На уровне сотрудников это создаёт много скорби, поскольку медианный работник компании почти с полной определённостью работает над продуктом, который и не предназначен для успеха, однако стейкхолдеры счастливы, а это единственное, что важно.
Медианный дата-саентист ужасен в написании кода и в целом в разработке. Те немногие, кто хотя бы немного понимает в кодинге, часто плохи в разработке: они склонны к оверинжинирингу, влюблены в себя и хотят тратить время на создание собственной платформы (ребята, не стоит этого делать).
У меня это вызывает два чувства:
- Меня раздражает, что у меня нет никакой власти над кодом и инфраструктурными решениями. Работа с дата-саентистами без контроля над инфраструктурой похожа на карабканье по кучам иммутабельного навоза.
- Очевидно, что во всей отрасли есть потребность в людях, владеющих и data science, и кодингом, чтобы они могли руководить практиками data science в технической должности.
Плохое менторство
Я не хочу особо сильно придираться: в каком-то смысле, дата-саентисты вполне могут и не писать хороший код! Особенно если у них есть другие ценные навыки или если они новички. С другой стороны, добравшийся до продакшена плохой код — симптом плохой структуры и руководства командой, а не ошибки отдельных сотрудников! Описывая уровень владения кодингом медианного дата-саентиста как «отстойный» я просто пытаюсь быть честным, а не ворчу.
Проблема заключается в том, что медианный дата-саентист работает в мелкой или средней компании, которая строит свои практики data science без учёта того, что код дата-саентистов будет отстойным. Они скорее позволят 23-летнему новичку, знающему, как выполнить pip install jupyterlab
, работать самому по себе или управлять им вместе с другими похожими 23-летними людьми. Где отвечающий за всё взрослый?
Откровенно говоря, 23-летние дата-саентисты, наверно, и не должны работать в стартапах; им следует работать в компаниях, имеющих достаточные мощности и желающих делегировать работу дата-саентистам, пришедшим прямиком из колледжа. Очень многие карьеры были разрушены ещё до своего начала — студенты data science, нанятые в третьей волне в компанию серии C, где первые две волны найма или не обеспечивают никакого менторства, или их менторство просто отстойно, потому что они начинали свою карьеру таким же образом.
Плохое самообразование
С другой стороны, это вина не только компаний и менеджеров; самих дата-саентистов можно обвинять в очень плохом карьерном росте. Это вполне нормально для людей, только начинающих свою карьеру, однако на каком-то этапе резюме дата-саентистов начинают опережать реальное накопление навыков, и меня это не может не бесить.
Похоже, основной тип карьерного роста, который практикуют дата-саентисты — это изучение API какого-нибудь инструмента градиентного бустинга или потребление поверхностных + неглубоких + нерелевантных знаний. Лично мне не нравится такая траектория обучения, поскольку я никогда не ощущал, чтобы основном узким местом в моей работе было незнание какого-то инструмента градиентного бустинга. Скорее, основными узкими местами обычно были ужасная инфраструктура и отсутствие данных (качественных), поэтому всегда казалось естественным изучать эти аспекты, чтобы расчистить себе дорогу.
Мои пробелы в знаниях обычно были менее грандиозными, чем необходимость изучать работу какой-то сверхсовременной языковой модели или притворяться, что я понимаю какую-то техническую статью на arXiv, испещрённую сложным матанализом в LaTeX-разметке. Лично я получил большую пользу от прочтения первой пары глав сложных учебников (проигнорировав остальные 75% учебника) и от освежения в памяти самых дубовых математических знаний типа «как работают логарифмы». Да, должен признаться: я старик и мне нужно освежать в памяти начала анализа из старшей школы. Возможно, потому, что у меня есть 30 тысяч подписчиков Twitter, я живу в постоянном страхе того, что кто-то начнёт проверять меня вопросами типа «а какая формула у F-теста?», и если я не отвечу, то меня разоблачат. Поэтому мой мозг говорит мне, что я должен постоянно повторять свои знания основ. Наверно, это странный образ жизни, но мне он подходит: присмотревшись к линейной регрессии и основам математики, я внезапно осознал, что многие люди просто притворяются, что понимают всё это, а показной интерес к более сложным темам — просто софистика.
При моём образе жизни я не вижу, как прочтение статьи с предложениями типа «DALL-E — это диффузионная модель с миллиардами параметров» будет вообще релевантна моей работе. Медианный человек, любящий потреблять подобный поверхностный контент, на самом деле уже годы (а может, и никогда) не читал ни главы учебника матанализа. Не верьте им на слово, что они грызли гранит математики, потому что люди постоянно лгут о том, насколько они начитаны (и легко понять, когда они лгут). Ну, типа, чувак, ты действительно хочешь работать с «диффузионными моделями»? Да ты даже не знаешь, как сложить два нормальных распределения! Ты далёк от всяких там диффузий!
Я не хочу винить людей за то, что они тратят своё свободное время на что-то иное, кроме как изучение кодинга или выполнение упражнений из учебников. Чтобы стать настоящими специалистами во многих темах, нужно очень много времени, и это оставляет мало времени на всё остальное. В жизни есть много другого, кроме как ваша чёртова работа или предметные области, важные для карьеры. Один из главных грехов вакансий «дата-саентиста» в том, что наниматели ожидают от людей слишком многого.
Но есть и ещё один аспект: меня интересует, как вы вообще можете быть не любопытны? Как вы можете писать на Python пять лет своей жизни и ни разу не взглянуть на исходный код и не попытаться понять, как он работает, почему он спроектирован именно так, и почему конкретный файл в репозитории находится именно здесь? Как вы можете аппроксимировать десяток регрессий и не попытаться при этом понять, откуда берутся эти коэффициенты и какая линейная алгебра лежит в их основе? Даже не знаю, меня это удивляет.
В конечном итоге, никто на самом деле не знает, чем занимается, и это нормально. Однако из-за того, что компании не развиваются с учётом этого наблюдения, а люди не управляют своим образованием с учётом этого наблюдения, мы застряли в аду глупости, и это сводит с ума.
А вот то, что мне нравится в дата-инжиниринге:
- Чувство автономности и контроля.
- По самой природе моей должности я имеют огромный контроль над инфраструктурой.
- Дата-инжиниринг кажется существенно менее подверженным капризам и указаниям безумного руководства.
- Меньше потребность в софистике.
- О моей работе судят по тому, насколько хороши конвейеры данных, а не не по тому, насколько красивы слайды моих презентаций или сколько модных словечек я могу использовать в предложении. Не то чтобы в дата-инжиниринге нет модных слов и трендов, но они больше навязываются поставщиками услуг SaaS, а не самими инженерами.
- Больше свободного времени.
- Похоже, что благодаря должности дата-инженера я излечился от синдрома самозванца. Кажется, теперь у меня больше возможностей дурачиться в свободное время, не чувствуя вины из-за каких-то аспектов моей работы или опыта. Но, вероятно, это в основном связано с тем, что я перестал быть лакеем менеджеров по продуктам.
- Очевидная и мгновенная польза, не привязанная к KPI.
- Я люблю, когда меня ценят, что уж тут говорить.
- В конечном итоге, дата-саентисты нуждаются во мне больше, чем я в них; именно благодаря мне их труды попадают в продакшн и работают без проблем.
- У меня есть ощущение, что если моей текущей компании придётся прибегнуть к увольнениям, будет глупо увольнять меня, а не дата-саентиста.
- К счастью, я чувствую, что хорошо справляюсь с работой.
- Поработав на различных низовых должностях, связанных с данными, я получил чёткое понимание того, что нужно моим низовым потребителям, а также как относительно легко организовать QC/QA моей работы, как это бы сделал хороший аналитик.
- В своей предыдущей компании у меня часто возникало чувство «я бы спроектировал это гораздо лучше» в отношении нашего стека данных, и я безмерно раздул своё эго, самостоятельно убедившись в обоснованности этих подозрений.
- На текущей должности я могу использовать практически всё, чему научился на протяжении всей своей карьеры.
Со значительным отрывом самое главное здесь — чувство независимости. Сейчас кажется, что единственный, на кого я могу жаловаться — это я сам. (И отвращение к себе гораздо более здравое чувство, чем ненависть к какому-то менеджеру по продукту.) Поскольку отправка кода дата-саентистов в продакшн в моей компании зависит от меня, я имею право вето над большой частью плохого кода. Поэтому если они засунут в продакшен плохой код, это в конечном итоге окажется моей ошибкой.
Я думаю, траектория развития моей карьеры выглядит логично — я бы никак не мог попасть напрямую в дата-инжиниринг и качественно выполнять свою работу, не сделав сначала следующего:
- Изучить несколько стеков данных и сформировать мнения о них с точки зрения нижестоящего потребителя.
- Стать лучше в кодинге.
- Освоить жаргон, которым пользуются дата-инженеры для описания данных (он отличается от того, как описывают данные социологи, финансисты, дата-саентисты и так далее), например, «сущность» (entity), «нормализация» (normalization), «медленно меняющиеся измерения типа 2» (slowly-changing dimension type 2), «теорема CAP» (CAP theorem), upsert, «таблица ассоциаций» (association table) и так далее, и тому подобное.
То есть в конечном итоге у меня нет сожалений о том, что я занимался data science, но в то же время мне нравится переход к дата-инжинирингу. Я продолжаю заниматься data science в том смысле, что определения этих должностей довольно расплывчаты (работая и «дата-саентистом», и «дата-инженером», я тратил примерно 40% времени на написание SQL-преобразований), могу критиковать и давать отзывы по работе, связанной с data science, да и к тому же я недавно на самом деле развёртывал код с достаточно сложной математикой. Можно даже сказать, что я просто дата-саентист, управляющий инфраструктурой data science компании.
Как бы то ни было, это замечательная смена деятельности, и я рекомендую её каждому, кто хорош в кодинге и ненавидит свою работу в data science. Если вы хотите перейти в эту сферу из data science, то советую активно размывать границы между data science и дата-инжинирингом, чтобы подготовиться к переходу. Пишите код для репозитория управления рабочими процессами своей компании; выводите вещи в продакшен (и живые API, и пакетные задачи); учитесь работать с CI/CD, Docker, Terraform; формируйте мнения о том, что передают вам вышестоящие инженеры (что вам нравится, что нет и почему). На самом деле, высока вероятность, что эта работа будет полезнее и интереснее, чем настройка гиперпараметров, так почему бы не начать прямо сейчас?
Простите, в этом посте не будет каких-то выводов, поэтому он заканчивается без кульминации и развязки.