해들리 위컴은 어떻게 수많은 R 패키지를 개발할 수 있었을까?
R 에는 수많은 패키지들이 존재한다. 이들 중 어떤 패키지를 활용해서 데이터를 분석하고 결과를 도출해야 할까? 힘드게 문법을 읽힌 패키지가 아무도 쓰지 않는 패키지 였다면? 개발자가 더 이상 유지보수를 하지 않는다면? 다른 패키지의 함수들과 호환이 되지 않는다면? 우리의 시간은 제한되어 있기에 패키지 선정에 신중해야하며 위험이 존재하기도 한다. R packages for data science 라는 슬로건을 내걸은 Tidyverse 는 R 유저들에게 고민에 빠진 R 유저들에게 그 방법을 제시한다. Tidyverse 는 같은 철학은 공유하는 데이터과학을 위한 R 패키지들의 모임이며, 함께 사용할 수 있도록 디자인되었다.
Hadleyverse 라고도 불리는 Tidyverse 패키지들
놀라운 것은 tidyverse 에 속한 패키지들의 많은 부분이 한 명에 의해 개발되었다는 것이다. 해들리위컴은 R 패키지 그룹인 Tidyverse 에 속한 dplyr, readr, tidyr, ggplot 와 같은 패키지들의 개발자로 유명하며, 그가 R 에 기여한 공헌도는 어마어마하다. 특히 tidy data 의 개념과 Leland Wilkinson 의 The Grammar of Graphics 을 구현한 층층이 쌓아 그래프를 그리는 ggplot2 는 가장 유명하다.
2014년 Quora 에 어떻게 해들리 위컴이 이렇게 많이 R 에 기여할 수 있었는지에 대해 질문이 올라왔는데, 해들리 위컴이 직접 답변을 달았다. 그 내용은 아래와 같다.
1. 글쓰기 (Writing)
그는 매일 아침 60~90분 동안 글쓰기를 한다. 아침에 일어나서 가장 먼저 하는 것이 글을 쓰는 것이다. 그가 글 쓰기를 중요시하는 첫 번재 이유는 직접 쓴 글은 스스로 참고하는데 유용하기 때문이다. 예를 들어, 그는 C++ 을 항상 코딩하는 것이 아니기 때문에, 참조가 필요한데 자신이 쓴 Rcpp 에 대한 글을 참조한다고 한다. 두 번째로, 글쓰기는 지식과 Tool 의 갭을 매울 수 있고, 이는 새로운 문제를 해결하는 방법을 고안하는데 도움이 된다고 한다.
2. 읽기 (Reading)
그는 많이 읽는다. 약 300개의 blog 를 follow 하고 있고, Twitter 나 Stack Overflow 의 R tag 가 달린 글을 자주 본다고 한다. 물론 대부분의 글은 자세히 보지는 않지만, 이러한 수많은 글에 스스로를 노출시킴으로써 기술적인 변화를 따라가는데 도움되며, 새로운 프로그래밍 언어와 다른 사람들이 R 을 통해 데이터를 다루는 방법을 꾸준히 보고 어떠한 문제가 생겼을 때, 그 '이름' 을 빠르게 인식할 수 있다. 따라서 googling 등을 통해 가능한 해결법을 찾는 것을 더욱 빠르게 한다.
3. 청킹 (Chunking)
문맥의 전환 (Coxtext switching) 은 매우 비싼 것이다. 많은 패키지들을 한 번에 작업하면, 이도저도 아니게 된다. 따라서 그는 대부분의 시간에서는 자신의 패키지들에 관한 어떠한 이슈나 아이디어를 점점 쌓아가고, 그렇게 쌓인 것 많아졌을 때 쯤, 그 패키지를 개선하는 작업에 며칠 간의 시간을 보낸다.
마지막으로 그는 오래전부터 R 패키지 개발에 시간을 보냈기 때문에 그러한 경험이 축적되어 새로운 패키지를 순식간에 만들어낼 수 있는 지식과 경험을 보유하고 있다고 할 수 있다. 그의 학위 논문도 데이터를 exploration 하고 modeling 하는 R 패키지에 관한 것이었다. (http://had.co.nz/thesis/) 결국 그가 지금까지 R 커뮤니티에 공헌한 것들은 이러한 수년 간의 경험과 지식의 정리, 그리고 기술적 진보를 이해하는데 들인 노력의 산물이라고 할 수 있을 것이다.
참고
'Tools > R' 카테고리의 다른 글
R 중급 - 서브세팅 (Subsetting) (0) | 2019.04.09 |
---|---|
R 중급 - 데이터 구조 심화 (Data structure) (0) | 2019.04.09 |
R 중급 - apply 계열 함수 정리 (apply, lapply, sapply, tapply, mapply) (7) | 2019.04.01 |
일관성 있는 R 코드 작성하기: 해들리 위컴의 R 코딩 스타일 가이드 (0) | 2019.03.25 |
R - dplyr 을 통한 데이터 변형과 장점 (0) | 2019.03.24 |