Когда так много людей подключаются к науке о данных, как отличить отличный R-кодер от остальных?
В новую эру науки о данных все бросаются на подножку. Рекрутеры получают резюме и резюме со всем жаргоном: R, Python, Javascript, что угодно. Во многих случаях люди добавляют навык в свое резюме на основе недельного обучения в колледже или пары курсов Datacamp.
Лучший способ определить чьи-либо навыки владения определенным языком программирования - это поставить перед ними задачу и посмотреть, как они это делают. Вы не можете просто доверять молва в этих вещах, и вы действительно не хотите, чтобы в вашей команде или организации был кто-то, кто не в состоянии овладеть необходимыми вам критически важными навыками.
Установка практических упражнений по кодированию дает два преимущества. Во-первых, вы можете проверить, знает ли человек, как подходить к решению возникшей проблемы, и может ли он действовать независимо в своей работе. Во-вторых, вы можете определить поведение при кодировании, которое указывает на высококвалифицированных программистов.
Вот пять таких вариантов поведения, в частности, для R-кодеров, многие из которых, как мне кажется, применимы к различным другим языкам программирования:
Комментирование
Независимо от того, на каком языке говорят, хорошие кодеры часто и хорошо комментируют. Это свидетельствует о заботе о воспроизводимости и, вероятно, указывает на то, что они по опыту знают, насколько важно комментировать.
Где и как часто комментировать - это вопрос суждения и зависит от сложности задачи, но хорошие программисты комментируют на достаточно подробном уровне. Например:
# load libraries library(dplyr) #' Function to search starwars names by first letter of name #' #' @param x Character value to search as first letter #' #' @return a vector of names first_letter_char_search <- function(x) { starwars %>% dplyr::mutate(first_letter = substr(name, 1, 1)) %>% dplyr::filter(first_letter == x) %>% dplyr::select(name) }
Форматирование
Форматирование кода очень важно для легкого чтения и понимания работы. Правильно отформатированный код показывает, что кодировщик потратил время и усилия на то, чтобы его или ее код был как можно более читабельным, что опять же влияет на воспроизводимость и дальнейшее сотрудничество.
Хорошее форматирование также показывает, что кодировщик знает правила форматирования для своего языка, что обычно является признаком того, что у него есть приличный опыт в этом. Вы увидите некоторые типичные соглашения о форматировании R в блоке кода выше (хотя в зависимости от устройства, которое вы просматриваете, эта статья может отображаться не так, как я надеюсь). Интервалы и отступы являются одними из самых фундаментальных аспектов строгого форматирования.
Пространство имен
Это зависит от используемого языка, но в таких языках, как R, пространство имен показывает заботу о среде, в которой работает кодировщик. Чтобы было ясно, пространство имен означает вызов и функции и ее пакета в вашем коде. , а не просто функцию. Например, вызов lubridate::ymd()
вместо просто ymd()
. Опять же, в приведенном выше блоке кода вы увидите соответствующее наименование функций.
Пространство имен имеет два преимущества. Во-первых, это предотвращает проблемы, когда две функции из разных пакетов имеют одинаковое имя. Если вы загружаете два пакета, и оба они имеют общее имя функции, R всегда будет использовать функцию из последнего загруженного пакета, если вы не укажете пространство имен для своей функции. Во-вторых, это помогает другому пользователю решить, какие пакеты ему нужно установить, если он просматривает фрагмент вашего кода.
Эффективность кода
Хорошие программисты будут беспокоиться об эффективности своего кода и своих процессов. Это может принимать разные формы:
- Повторяющийся код можно абстрагировать, чтобы одна функция могла выполнять повторяющуюся работу. См. Мою статью здесь для получения дополнительной информации.
- Код с высокой степенью вычислительной мощности можно реконструировать, чтобы уменьшить нежелательное дублирование или неэффективные манипуляции.
- Код, работающий с объектами базы данных, может максимально манипулировать данными на сервере, чтобы избежать переноса больших объемов данных на локальные машины - см. Другую мою статью здесь.
Это может стать серьезным отличием в определении отличных кодеров. Мне прислали код, который смехотворно и бессмысленно неэффективен - потребовались сотни строк, чтобы сделать то, что было возможно, в нескольких строках. Точно так же я видел код, который настолько элегантен в своей абстракции и эффективности, что вам просто нужно расслабиться и восхищаться мастером своего дела в действии.
Очистить
Великие программисты прибирают за собой. Они не оставляют в своей среде вещей, которые могут противоречить их следующей задаче или привести к уязвимостям безопасности. Самая распространенная проблема, которую я видел, - это когда люди пренебрегают отключением от баз данных после того, как получили то, что им нужно. Мне нравится видеть красивые аккуратные блоки кода, в которых кодировщик поздоровался и попрощался. Хорошо быть вежливым даже с базами данных.
Если вы привлекаете или нанимаете программистов, подумайте, как вы можете установить практические упражнения, чтобы проверить их навыки и посмотреть, сможете ли вы определить некоторые из этих положительных форм поведения. Я очень рекомендую это.
Изначально я был чистым математиком, затем стал психометриком и специалистом по анализу данных. Я увлечен применением всех этих дисциплин к сложным вопросам людей. Я также помешан на программировании и большой поклонник японских ролевых игр. Найдите меня в LinkedIn или Twitter.