Когда так много людей подключаются к науке о данных, как отличить отличный 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.