해들리 위컴은 어떻게 수많은 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 커뮤니티에 공헌한 것들은 이러한 수년 간의 경험과 지식의 정리, 그리고 기술적 진보를 이해하는데 들인 노력의 산물이라고 할 수 있을 것이다.  


참고

https://www.quora.com/How-is-Hadley-Wickham-able-to-contribute-so-much-to-R-particularly-in-the-form-of-packages