Автор статьи: Дмитрий Володин

Analytics Engineer в Trafficstars

Всем привет, я Дмитрий Володин, Analytics Engineer из TrafficStars. Сегодня я хочу немного порефлексировать на тему спроса на R и целесообразности его изучения.

Текст будет выражать личный опыт и мнение, я не буду проводить аналитическую работу по сравнению средних зарплат и количества вакансий на разных языках. Скорее поделюсь своими мыслями. И постараюсь оставаться не предвзятым по максимуму.

R как первый язык

R был моим первым языком программирования, который я использовал именно в работе. В школе были QBasic и Pascal, в институте был ещё Fortran. Была попытка начать учить Python, но как-то не зашло. А вот с R случилась любовь (или мэтч) с первого взгляда.

R называют сложным языком. Во многом как раз из-за того, что он векторный. В R не существует скалярных структур данных. Приходится сразу воспринимать векторы и списки как цельные объекты, к которым применяются функции, возвращающие вам по сути новые объекты. То есть сразу в голове держать и изменение всей коллекции и отдельно её элементов.

Но я считаю эти аспекты R наоборот его преимуществом для тех, кто не знает программирования и единственным инструментом аналитики данных для кого был Excel. Векторизованность присуща формулам в электронных таблиц (а ещё какие-то элементы функциональной парадигмы). И если вы не знакомы с программированием, но вам приходилось проводить анализ данных в Excel, то я настоятельно рекомендую начать изучать R, потому что вам будет легче. Потому что R в первую очередь именно про работу с данными и их анализ.

Ещё одним важным преимуществом R я считаю простоту получения первых результатов. Крайне важно для только ещё обучающегося аналитика получить первые вменяемые результаты. Даже в базовом R, без всяких tidyverse, вы можете получить информативный график, агрегированные данные и стат выводы буквально в пару строк кода без всякого boilerplate.

Но что делать потом, когда азы понятны и можно даже уже работать и получать зарплату? Учиться дальше. R имеет превосходные возможности по статистическому и машинному обучению. С визуализацией (а тем более интерактивной) у языка тоже полный порядок. Написать и доставить аналитическое веб приложеие на Shiny с одной стороны просто, но при этом функциональность можно задать любую: от простого графика с параметрами, до управленческого дэшборда с функциональными элементами. Также в MLflow и Spark есть интерфейсы на R, то есть писать аналитические приложения на современном стеке можно (и нужно) и на R.

К тому же очень редкий разработчик сейчас знает только один язык. R не только отличный первый язык, но и удобный мостик к другим языкам для работы с данными. Из R очень легко вкатиться в SQL, так как подход к работе с таблицами очень похож. Да и с тем же Python проблем не будет, если чуть более погрузиться в императивную парадигму и подучить алгоритмы.

Для меня R остаётся идеальным языком для начала карьеры в работе с данными. Но на нём одном замыкаться точно не стоит.

R как второй язык

Тут я буду больше фантазировать, потому что личного опыта нет. Если вы из академической среды с опытом в Fortran/Matlab/SPSS/Stata/APL, то R для вас может стать современным, но при этом довольно привычным инструментом работы с данными. Боюсь разжечь в комментариях пожар этими утверждениями, напоминаю, что это моё мнение, основанное на небольших теоретических знаниях о перечисленных инструментах.

Если вы уже крутой дата саентист и занимаетесь дип лёрнингом на Python, то и вам стоит посмотреть в сторону R. Хотя бы для расширения кругозора. Или для более удобных способов обработки и визуализации данных. Ну и для огромного арсенала статистических инструментов. Да к тому же привычные Torch, TensorFlow с Keras и H2O есть и в R.

Вот для бэк- и фронтендеров я не буду советовать свой путь в анализе данных (если уж решились) начинать с R. Во-первых, наверняка в вашем привычном языке что-то уже есть для анализа данных, например библиотеки визуализации данных в JS. Во-вторых, проще будет с Python, так как это язык общего назначения.

Рынок труда

Самая больная тема для всех R-специалистов. Да, вакансий на R в разы меньше, чем на Python. Даже только в сфере работы с данными. Но ведь есть и обратная сторона: аналитиков на R гораздо меньше, чем на Python. То есть конкуренция может быть примерно одинаковой. А преимущества из первой части статьи всё ещё на месте.

К тому же компаниям, особенно небольшим, достаточно индифферентно, на каком языке вы работаете с данными. Там рады, что в принципе вышли из порочного круга 1С+Excel.

Освоив R и выбрав корпоративный карьерный путь, вы рано или рано натолкнётесь на SQL. А зачастую и его одного достаточно для получения неплохой работы. Я получал оффер в крупную российскую компанию на должность ведущего дата инженера после тестирования только SQL и немного теории. Причём на Hadoop стек, с которым я не был знаком и о чём сообщил, конечно же.

Ажиотаж вокруг айти пока ещё не утихает и многие стремятся в этот поезд запрыгнуть. Следующий мой совет будет не для абитуриентов, студентов и выпускников вузов, а для тех, кто решает сейчас менять свою карьеру. Я вам рекомендую начать свой путь именно с анализа данных на R. И становиться аналитиком в своей отрасли. Может быть прямо в вашей текущей компании. Так у вас будет два огромных преимущества: знания современных и мощных инструментов для анализа данных и широкий опыт в индустрии (то, что за бугром называют domain specific knowledge и считают огромным преимуществом для аналитиков). Ну а дальше набирайтесь опыта и новых знаний и ваша карьера будет активно развиваться. Строго говоря, это правило применимо для любой профессии. Учиться надо до самой пенсии, но и там не стоит останавливаться.

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

Комментарии (5)


  1. chernish2
    00.00.0000 00:00
    +3

    Спасибо за статью. Я программист с приличным опытом, когда стал изучать R, векторизация всего и вся очень понравилась, но вот отсутствие языковой структуры как таковой очень сильно оттолкнуло. Я имею в виду отсутствие контрактов на название функций, отсутствие единого стиля написания кода, который есть в настоящих языках программирования (в том смысле, что, как говорят, R придумали не программисты, а математики).

    В общем несколько лет использую Python и pandas, гораздо легче с ними работать, хотя тоже во многом не так приятно, как, скажем, с Ruby.

    Давно посматриваю на Julia, но какая-то она тоже странная, как кажется. Несколько раз пытался писать код, но не пошло.


    1. Tzimie
      00.00.0000 00:00
      +1

      А мне Джулия после Питона очень зашла


      1. chernish2
        00.00.0000 00:00

        Поделитесь, чем она Вам показалась приятнее или удобнее, за исключением времени исполнения конечно?


        1. Tzimie
          00.00.0000 00:00
          +1

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