Exercism 기여자로서 Ryan Potts를 만나 이야기를 나눈 인터뷰예요. 그와 Jeremy Walker가 Delphi, Exercism에 기여하면서 배운 것들, 그리고 아직도 "오프라인"인 산업에서 프로그래밍한 경험에 대해 이야기해요.
안녕하세요 Ryan. 시간을 내어 이야기 나눠 주셔서 고마워요. Ryan은 Exercism에서 Delphi 트랙의 메인테이너세요. 어떻게 Delphi를 시작하게 되셨어요?
저는 아버지가 세운 회사에서 일하고 있어요. 그 회사는 80년대에 Microsoft Pascal로 시작해 나중에는 Borland의 Turbo Pascal을 쓰면서 소프트웨어를 개발해 왔어요. 저는 96년에 회사에 들어왔는데, 그 무렵 회사에는 DOS가 아니라 Windows에서 돌아가는 소프트웨어를 만들어 달라는 요청이 들어오고 있었어요. 마침 Borland가 얼마 전 Delphi 1을 출시한 상태였고, 우리에게는 더할 나위 없이 잘 맞았어요. 그동안 개발해 온 유닛 대부분을 그대로 쓸 수 있었으니까요. Windows를 지원하려고 VB나 VC로 처음부터 다시 시작할 필요가 없어졌어요.
그리고 지금도 일상에서 Delphi를 쓰고 계세요?
네, 제가 일하는 곳에서는 자동차 산업의 R&D 테스트와 소량 배치 테스트에 쓰이는 기계를 만들어요. 타이어, 자동차 시트, 에어백 인플레이터를 테스트하고 충돌 테스트도 하죠. 여기서 만드는 모든 시스템은 전 세계 여러 자동차 제조사와 그 협력사들이 사용해요.
제가 작업하는 소프트웨어는 이런 다양한 종류의 기계를 제어하는 데 쓰여요. UI를 개발하고, 테스트의 자동화 부분을 위한 테스트 시퀀스를 짜고, 아날로그와 디지털 양쪽의 각종 입출력 지점을 통합해요. 교육을 거의 받지 않은 사람도 편안하게 쓸 수 있도록 최대한 사용자 친화적으로 만들어야 하죠.
제 일에는 웹 프로그래밍이 전혀 필요 없어요. 하는 일이 전부 Windows에서 Delphi로 이뤄져요. 가끔은 C++로 작은 "커스텀 명령"을 재빨리 만들어서 데이터 수집 프로세서 보드에 올리기도 하는데, 그 보드는 컴퓨터의 PCI 슬롯에 들어 있는 병렬 컴퓨터로, 자체 CPU와 메모리, OS를 갖추고 있어요.
웹 프로그래밍을 전혀 하지 않는 분과 이야기하니 정말 흥미로워요. 오늘날에는 꽤 드문 일처럼 느껴지는데, 그게 업계를 그대로 반영하는 게 아니라 제가 매일 접하는 신호 대 잡음비 때문일지도 모르겠어요.
네, Exercism에 참여하면서 컴퓨터 업계의 "다른 쪽 절반"이 어떻게 사는지 조금은 들여다볼 수 있었어요. 테스트 주도 개발(TDD), GitHub 다루기, 오픈 소스 프로젝트에서 일하기 같은 것을 많이 배웠죠. 배운 것 중 상당수는 제가 하는 업무의 품질을 높여 줬어요.
정말 반가운 얘기네요. 제가 Exercism에서 가장 좋아하는 점 중 하나가 바로 그 "다른 쪽 절반은 어떻게 사는가" 하는 분위기예요. 자기 사각지대를 깨닫고, 존재하는지도 몰랐던 것들을 배우게 되니까요. 트랙 메인테이너로 활동하면서 그런 배움이 더 커지셨을 것 같아요?
그래요. 예전보다 테스트를 더 많이 쓰고 있어요. 항상 TDD인 것은 아니고, 때로는 테스트가 먼저가 아니라 나중에 오기도 하죠. 그래도 코드를 구성하는 방식에는 영향을 줬어요. 테스트를 더 쉽게 하려고 불필요한 의존성을 걷어내게 됐거든요.
저는 problem-specifications 저장소에서 이슈와 PR을 검토하는 데 많은 시간을 써요. 그곳에서 Exercism 연습 문제를 언어에 독립적인 방식으로 정의하죠. 논의에서 많이 배웠어요. 어떤 제안된 변경이 표면적으로는 간단해 보여도, 이어지는 대화에서 문제점이 드러나기도 하거든요. 덕분에 인내심도 더 길러졌고요. 일할 때 기술적인 문제에서 다른 가능성도 찾아보게 됐어요.
멘토링에 대해서도 더 많이 배웠어요. 특히 방법만 아는 것과 그 바탕에 있는 이유를 아는 것의 차이가 얼마나 중요한지요. 저는 몇몇 프로그래머와 함께 일해요. 그들 대부분보다 나이가 어리지만 회사에는 그들보다 오래 있었기 때문에, 기계 동작의 순서를 짜는 더 효율적인 방법을 알려주거나 어떤 작업을 왜 특정한 방식으로 해야 하는지 설명할 수 있을 때가 많아요.
Exercism을 넘어서 Delphi MVP이기도 하시다니 정말 멋져요! 어떻게 그렇게 되셨어요? 함께하고 계신 강한 Delphi 커뮤니티가 있나요?
Delphi 트랙을 처음 준비하던 단계에서, 오픈 소스 라이선스를 받을 수 있을지 알아보려고 Embarcadero의 Jim McKeeth 님에게 연락했어요. 그러면 Delphi로 새 연습 문제를 개발하고 사람들이 풀 리퀘스트로 기여할 수도 있으니까요. 주고받은 메일에서 Jim이 저를 Embarcadero MVP 프로그램에 초대해 줬어요.
Delphi Praxis는 제가 잘 아는 온라인 커뮤니티예요. Google+에도 트래픽이 많지만 이제 사라지는 추세라 다른 곳으로 가야 해요.
다른 사람들이 볼 수 있게 Delphi로 만든 오픈 소스 앱이 있으세요?
있어요! Exercism의 Windows CLI 설치 프로그램은 오픈 소스이고 전부 Delphi로 작성했어요. 학습자에게 필요한 Exercism CLI의 올바른 버전(32/64비트)을 자동으로 판단해서 CLI를 내려받고, 압축을 풀어 알맞은 위치에 넣어 줘요. 이 설치 프로그램은 15,000번 내려받아졌는데, 꽤 자랑스럽게 생각해요!
정말 대단한 성과예요! 인터넷 프로그래밍을 거의(혹은 전혀) 하지 않는 분으로서, Delphi로 이 설치 프로그램을 만들면서 어떤 어려움을 겪으셨어요?
설치 프로그램은 처음에는 C#으로 작성돼 있었어요. 오래된 상태였고, 제가 개선할 수 있을지 해보기로 했죠. 그런 일은 해본 적이 없었지만 Delphi에 필요한 도구가 있다는 건 알고 있었어요. 먼저 원래 C# 코드를 살펴보면서 뒤에서 어떤 일이 어떤 순서로 벌어지는지 이해하고, 같은 작업을 Delphi로 해내려고 했어요. Embarcadero 문서 사이트에서 REST 클라이언트를 만들 때 컴포넌트들을 제대로 엮는 방법을 설명해 주는 예제 코드를 찾았어요. Delphi에 딸려 오는 REST Debugger라는 편리한 도구도 알게 됐죠. 그걸로 설치 프로그램이 제대로 동작하는 데 필요한 여러 HTTP 호출을 입력해서 테스트할 수 있었어요. 호출이 제대로 동작하면 디버거가 필요한 컴포넌트의 복사본을 만들어 주기 때문에 코드에 붙여 넣을 수 있었어요.
Exercism에 더 깊이 들어가고 싶은 분, 어쩌면 메인테이너가 되고 싶은 분을 위해, Ryan이 걸어온 여정을 들려주실 수 있나요?
저는 Akron Code Club이라는 지역 MeetUp 모임의 회원이에요. 한 달에 한 번쯤 모여서 보통 둘씩 짝을 지어, 모임에 제안된 코드 카타를 풀어요. 2016년 8월 모임에서 Exercism이 제공하는 연습 문제를 풀기 시작했어요. Exercism과 다른 학습 사이트들을 쓰면서, 이런 온라인 프로그래밍 사이트가 더 많이 Delphi나 Pascal을 선택지로 제공하면 좋겠다는 생각이 들었어요. Exercism 사이트와 Exercism GitHub 저장소를 둘러보다가, Exercism이 새 언어 트랙 추가에 항상 관심이 있다는 걸 알게 됐죠. Katrina에게 어떻게 연락하는 게 가장 좋을지 확신이 없었어요. 2016년 8월에 Gitter로 연락해서 Delphi 추가를 제안했던 것 같아요. 두 달쯤 뒤에 미안하다는 답장을 받았고, 그때 Katrina가 Gitter를 하지 않는다는 걸 알게 됐어요. 아무튼 Katrina는 제가 아직도 Delphi Pascal 트랙 추가 작업에 관심이 있는지, 그렇다면 시작해 보자고 했어요.
지금은 새 언어 트랙을 요청할 수 있는 저장소가 있고, exercism/exercism 저장소에 이슈를 열어 프로젝트 메인테이너에게 언제든 연락할 수 있어요.
좋아요. 이야기 나눠 주셔서 감사하고, Exercism을 위해 해주신 모든 일에도 감사해요!
천만에요! 즐거웠어요. Exercism을 위해 할 수 있는 일을 하면서 참여하는 게 좋아요. 직접 해보면서 배우는 거죠!