빌 밀스, 물리학자이자 학제간 프로그래머

안녕하세요. 저는 빌 밀스(Bill Mills)입니다!

무슨 일을 하시나요?

요즘 저는 좋은 프로그래밍, 사용자 인터페이스 및 사용자 경험의 산출을 이용하여 과학을 더 빠르게 연구하고 훨씬 더 재미있게 만드는 것에 전념하고 있습니다! 저는 캐나다 국립 핵물리학 연구소인 TRIUMF에서 GRIFFIN 실험 웹 기술 전문가이자 소프트웨어 프로젝트 관리자로 일합니다. GRIFFIN은 2014년 후반에 TRIUMF 사이트에 게재된 최첨단 감마선 분석기로, 기존 실험 장치보다 훨씬 효율적이고 높은 비율로 방사선 입자 정보를 기록하게 해줘서 원자핵을 훨씬 더 자세하게 들여다볼 수 있게 도와주는 장치입니다.
GRIFFIN에서 저의 주 임무는 과학자들이 실험과 상호작용하는 방법을 현대화하는 것입니다. 과거에 이 분야에서 하던 실험은 그 순간에 진행되는 일을 과학자들에게 전송하는 기본적인 디스플레이에 의존했습니다. 수많은 표와 그 표 안에 수만 개의 수치가 뭉쳐있는 또 다른 표가 여러 군데에 무작위로 퍼져있다고 생각해 보세요. 수십 년 전에 실험에 상대적으로 적은 수의 단순한 장치만 사용되었을 때는 괜찮았지만 현대 실험에는 수천 개의 탐지기와 데이터 스트림(GRIFFIN 단독으로 매주 200 TB의 데이터를 산출합니다) 과 기본적으로 들어가는 막대한 지원 기반구조가 필요합니다.
저희 실험은 규모가 너무 크고 복잡해져서 체계적이지 않은 인터페이스와 지나치게 단순한 보고 체계로는 관리할 수 없을 정도입니다. 더 안 좋은 점은 수많은 팀이 수시로 GRIFFIN을 사용하려고 한다는 것입니다. 과학자들은 자기 실험을 수행하는 것 외에 복잡한 사용자 인터페이스를 배우는 것을 어려워합니다. 결국, GRIFFIN은 가능하면 세부 사항이나 기능을 유지하면서 사용하기에 직관적이고 쉬운 사용자 인터페이스가 필요했습니다. 바로 이런 이유로 지난 몇 년간 제가 자바스크립트 커뮤니티가 구축한 좋은 아이디어와 기술을 이용해서 과학자가 연구실에 도착했을 때 신속하게 실험을 시작할 수 있도록 도와주는 사용자 인터페이스를 만들었습니다.
사용자 인터페이스 외에도 저는 과학자들이 실제 소프트웨어 개발자들이 사용하는 툴을 이용하여 코드를 작성하는 방법을 현대화하는 것을 돕고 있습니다. 오늘날 컴퓨팅은 이 분야 방법론에서 매우 중심적인 열할을 하고 있어서, 수많은 코드를 작성해보지 않고는 물리학자가 될 수 없을 정도입니다. 그러나 지금까지 물리학계는 좋은 컴퓨팅 교육과 기술을 따라잡아야 할 필요가 있었습니다. 대부분의 물리학자가 프로그래밍을 할 때는 원하는 기능을 (거의) 수행할 때까지 추측해서 만듭니다. 프로그래머들은 개발 과정을 간소화하기 위해 버전 제어와 오픈 소스 소프트웨어 협력과 같은 전략을 개발하였습니다. 만약 과학자들이 이러한 전략을 배울 수 있다면 연구 방법을 한 단계 발전시킬 뿐 아니라 좀 더 개방적이고 재생산이 가능하게 만들 수 있습니다. 모든 분야의 실험실에서는 외부의 신선한 아이디어를 가지고 과학적 기술을 계속해서 발전하고 진보시키는 사람이 필요하고 바로 이것이 현재 제가 물리학과 컴퓨팅 사이에서 이루고자 하는 것입니다.

프로그램을 어떻게 배우셨나요?

저는 프로그래밍을 CERN의 LHC에서 ATLAS 실험을 했던 대학원생일 때 시작했습니다. 그 당시에는 재앙이었습니다! 저는 학부 때 프로그래밍 수업을 정확히 하나 수강했습니다. 그리고 F를 받았죠. 저는 코딩을 전혀 할 줄 몰랐고 정말 소질이 없다고 확신했습니다. 그런데 박사과정 학생이 되고 나서 갑자기 매일 코딩을 하게 되었습니다. 5년 동안 저는 제 논문의 핵심을 구성하는 정교한 분석 패키지를 그럭저럭 만들어냈습니다. 그러나 그 당시에는 정말로 프로그램을 제대로 배우지는 않았습니다. 저는 대학원에서 과학계가 프로그래밍에 얼마나 무지하고 관심이 없는지 경험했습니다. 그리고 올바르게 배운다면 엄청난 도약을 할 수 있을 거라는 것도 말입니다.
제가 실제로 프로그램을 배운 때는 대학원 이후입니다. 많은 전문 학계도 마찬가지지만, 과학과 직접적으로 연관된 직장은 대학원 이후 흔치 않습니다. 제가 일자리를 찾을 때 밴쿠버 웹 개발 업계에서 유명한 웹 개발자인 제 파트너는 제게 자바스크립트를 배우고 지역 소프트웨어 모임에 참여하라고 제안했습니다. 이는 매우 훌륭한 조언이었습니다. 밴쿠버에서는 소프트웨어 스타트업 활동이 활발해서 제가 웹 설계와 개발에 관한 기본적인 사항을 배울 때 저를 반겨주고 지원해 줬습니다. 밴쿠버 개발자와 소통을 하며 저는 컴퓨팅 기술뿐만 아니라 기법에도 매우 풍부한 문화가 존재한다는 것을 깨달았습니다. 그것은 과학 분야에서는 볼 수 없는 세련된 장인정신이 깃든 컴퓨팅이었고 전 이 두 분야를 합치기 위해 일해왔습니다.

일하지 않을 때는 무엇을 하시나요?

프로그램을 짜지 않을 때 저는 프로그래밍을 가르칩니다! 저는 Ladies Learning Code의 멘토입니다. 이 프로그램은 코드를 배우고 싶은 여성을 위해 진입장벽을 낮춰주는 교육 복지 프로그램입니다. 그리고 Software Carpentry에서 교수할 수 있는 자격증을 거의 이수해서 매우 기분이 좋습니다. 이 프로그램은 과학자를 대상으로 코딩을 가르치는 부트캠프형 워크숍 프로그램입니다. 또 저는 지금 InterdisciplinaryProgramming.com을 구축하고 있습니다. 이 사이트는 자원봉사 개발자들과 코딩 멘토를 찾는 과학자들을 연결해주는 무료 서비스를 제공합니다. 그리고 저는 메이커 운동 (Maker Movement)를 연구실에 적용해서 생태학과 농업학계에 몸담은 동료들이 실험을 현대화할 수 있도록 Arduino를 이용한 프로토타이핑이나, 실험을 현대화하기 위한 다른 오픈 하드웨어에 관해 배우는 것을 도와주려고 가능성을 모색 중입니다.
또 가능하면 많은 컨퍼런스에 참석하여 과학을 좀 더 빠르게 개선하고 질을 높이기 위해 많은 프로그래머들과 협력하려고 합니다. 아래 동영상은 안젤리나 파브로(Angelina Fabbro)와 제가 2013년 포루투칼 리스본 LXJS에서 발표한 것으로, 발표는 과학자와 프로그래머가 하나가 되어 협력하는 것에 관한 내용입니다.
저는 정말로 컴퓨터와 멀리 떨어질 때는 지역 환경 단체에서 자원봉사 활동을 합니다. 저는 자연과 인간의 관계를 바로잡는 것에 관심이 많고, 밴쿠버에서 SPEC에서 잠시 기고 및 연구를 했습니다.

처음 시작하는 프로그래머에게 충고의 한 말씀을 해주세요

타고난 기술 같은 것은 없다는 것을 절대로 잊지 마세요. 물론 뛰어난 프로그래머들을 보고, 자신이 ‘진정한’ 프로그래머와 동떨어지거나 애초에 부적합한 사람이라고 생각할 수 있습니다. 그러나 저는 오늘날 웹상에서 가장 뛰어난 프로그래머를 만날 수 있었고 이들 모두 똑같은 경험을 했습니다. 이들은 모두 시작했을 때 흉내나 내는 가짜 프로그래머라고 느꼈고 누구도 처음에는 쉽다고 생각하지 않았습니다. 물론 지금은 그 누구보다도 쉽게 하지만요. 코드를 딱 한 줄이라도 스스로 썼다면 여러분은 진짜 프로그래머입니다. 그리고 여러분이 계속해서 코딩을 하고 배운다면 어느 순간 달인이 될 것입니다.
로딩 중