Uploaded avatar of iHiD

Erik Schierboom 인터뷰

@iHiD
7년 초과 전

Erik Schierboom과의 인터뷰입니다. Erik이 여기서 Jeremy Walker와 함께 함수형 프로그래밍, Exercism 트랙 메인테이너 활동, 그리고 곧 도입될 Exercism 풀이의 정적 분석에 대해 이야기해요.

안녕하세요, Erik. 첫 번째 Exercism 기여자 스포트라이트에 등장해 주셔서 감사해요! Erik은 Exercism의 구석구석에 기여하고 계시고, 프로젝트 전반을 다루면서 얻은 통찰도 멋져서 꼭 소개하고 싶었어요!

그럼 배경부터 조금 여쭤볼게요. Exercism에는 처음 어떻게 참여하게 되셨어요?

2014년에 Scala를 사용하는 함수형 프로그래밍 강의를 들었어요. 그 강의를 마치고 나서 Scala 실력을 더 키울 방법을 찾다가 Exercism을 알게 됐어요. 얼마 지나지 않아 푹 빠져서 Exercism의 다른 언어 트랙도 하기 시작했죠. 제 풀이에 사람들이 남겨 준 댓글에서 큰 도움을 받은 덕분에, 저도 C# 트랙의 풀이에 댓글을 달기 시작했어요. 그러다 어느 시점에 C# 트랙 메인테이너를 맡아 달라는 제안을 받았고, 기쁘게 수락했어요. 5년이 지난 지금은 C#과 F# 트랙의 멘토이자 C#, F#, Scala 트랙의 메인테이너이고, 여러 트랙이 공유하는 문제 명세 작업도 돕고 있어요.

좋네요. Exercism이 아주 초창기였을 때부터 참여하셨군요. 잘 모르는 분들을 위해, Exercism 메인테이너가 된다는 게 무슨 뜻인지 설명해 주시겠어요?

그럼요. 추상적으로 말하면, Exercism 메인테이너는 트랙의 "건강"을 책임져요. 실제로는 새 연습 문제를 만들거나, 기존 연습 문제를 업데이트하거나, 다른 메인테이너가 올린 풀 리퀘스트를 검토하는 등 아주 다양한 일을 뜻할 수 있어요. 또 하나 중요한 부분은 트랙의 연습 문제 순서를 알맞게 정해서 학생들이 최대한 좋은 학습 경험을 하도록 하는 거예요. 메인테이너가 된다고 해서 앞에서 말한 활동을 전부 해야 하는 건 아니라는 점도 알아 두세요. 한두 가지 활동에만 집중해도 전혀 문제없어요.

감사해요! 그런데 C#, F#, Scala에 집중하시면서도 Exercism의 거의 모든 언어 트랙을 해보셨잖아요. 학습자 입장에서 특히 좋아하는 트랙이 있나요?

제가 해본 모든 트랙에서 정말 많은 걸 배웠지만, 가장 좋아하는 트랙은 단연 Haskell 트랙이에요. 흥미로운 개념이 많은 훌륭한 언어일 뿐만 아니라, 멘토들의 수준이 정말 놀라웠어요. 그다음으로 좋아하는 건 Kotlin과 F# 트랙인데, Kotlin과 F#은 설계가 아주 잘 되어 있고 실용적인 언어라서 즐겁게 프로그래밍하게 돼요.

네, Haskell 멘토들에 대한 좋은 이야기를 많이 들었어요! 그렇게 많은 트랙을 해보면서 코딩에 대한 흥미로운 통찰을 많이 얻으셨을 것 같아요. 그 경험에서 특별히 배우신 게 있나요?

아, 정말 많아요! 다양한 언어를 다뤄 보면 문제에 접근하는 여러 방식을 접하게 돼요. 이런 다양한 접근 방식이 제 코딩 스타일에 어떤 식으로든 영향을 줬는데, 아마 함수형 언어가 저에게 가장 큰 영향을 줬을 거예요. 이제는 가능하면 항상 함수형 개념을 쓰려고 해요. 함수형이 아닌 언어에서도요. 그런 언어들도 서서히 함수형 기능을 받아들이고 있죠.

또 하나 배운 건, 언어마다 다르긴 해도 실제로는 꽤 비슷한 언어가 많다는 점이에요. 그래서 몇 개만 익혀 두면 새 언어를 배우는 게 훨씬 쉬워져요. 예를 들어 Haskell을 알면 F#이나 Scala도 비교적 빨리 익힐 수 있어요. 언어를 더 쉽게 바꿔 가며 쓸 수 있으니, 새 언어를 배우는 건 커리어에도 도움이 될 수 있어요.

마지막으로, 언어를 배울 때 멘토가 옆에서 이끌어 주면 그 과정이 훨씬 즐겁고 효과적이라는 걸 배웠어요.

저도 같은 걸 느꼈어요. 다른 사람에게 배우는 건 정말 큰 배수 효과가 있죠! 실용적인 측면에서 보면, 언어마다 필요한 환경 설정은 어떻게 하셨나요? 저는 새 IDE를 배우는 게 좀 부담스럽게 느껴질 때가 많아요. 언어를 공부하실 때 익숙한 에디터를 계속 쓰셨나요, 아니면 그 언어다운 경험을 해보려고 에디터를 바꿔 가며 하셨나요?

예전에는 언어에 따라 개발 환경을 새로 설정하는 게 좀 번거로웠는데, 요즘은 대부분의 언어를 비교적 쉽게 설정할 수 있어요. 그다음에는 그 언어에 가장 좋은 경험을 주는 IDE를 찾으려고 해요. 저는 Windows와 Mac OS를 번갈아 쓰기 때문에 IDE가 크로스 플랫폼이어야 하죠. 훌륭한 크로스 플랫폼 IDE의 예로 Visual Studio Code가 있는데, 저는 Haskell, JavaScript, TypeScript, Elm, Elixir 트랙에서 이걸 써요. 다른 트랙에서는 JetBrains IDE를 쓰는데, C#과 F#에는 Rider, Java, Scala, Kotlin에는 IntelliJ IDEA, 그리고 Ruby에는 RubyMine을 써요(참고: 이것들도 모두 크로스 플랫폼 IDE예요). 보시다시피 저는 언어마다 최고의 경험을 얻으려고 여러 에디터를 쓰고 있어요. JetBrains IDE들은 물론 서로 꽤 비슷하지만요.

작은 팁 하나: 오픈 소스 프로젝트의 핵심 기여자라면 JetBrains에 무료 오픈 소스 라이선스를 신청할 수 있어요!

정말 유용하네요. 감사해요! 그런데 C#, F#, Scala의 메인테이너이시잖아요. 이 언어들에 특히 끌리는 이유는 무엇인가요?

C#은 2002년에 나왔을 때 바로 제가 가장 좋아하는 언어가 됐어요. 설계가 잘 되어 있고 우아한 언어이고, 도구와 문서도 훌륭해요. 언어 자체도 꽤 빠르게 발전해서 항상 새로운 걸 배울 게 있다는 것도 좋아요! 마지막 장점은 뛰어난 .NET (Core) 프레임워크 위에서 동작한다는 점이에요.

F#도 첫눈에 반한 언어예요. 우아한 문법과 풍부한 함수형 언어 기능 덕분에, 특히 도메인 모델링을 할 때 더 적은 코드로 더 많은 일을 할 수 있다는 걸 알게 됐어요. F# 역시 객체 지향 기능을 갖추고 기존 .NET 코드와 잘 연동되는 아주 실용적인 언어예요. C#과 같은 .NET (Core) 프레임워크에서 동작하죠. 또 하나의 강점은 도구인데, 함수형 언어 중에서는 최고 수준이에요. 덤으로, 제가 가장 좋아하는 언어 입문 자료 중 하나인 fsharpforfunandprofit 웹사이트도 있어요.

Scala는 저를 함수형 프로그래밍에 입문시켜 준 언어라서, 그런 이유로 제 마음속에 특별한 자리를 차지하고 있어요. F#처럼 실용적인 언어이고, 그 이유도 거의 비슷해요. Java 생태계와 잘 통합되어 있어서 함수형 프로그래밍을 널리 알리는 데 정말 큰 역할을 했어요.

Scala로 함수형 프로그래밍을 시작하시고 F#을 멘토링하시면서도, Haskell 트랙을 최고로 꼽으신다는 게 흥미롭네요. Exercism에서 함수형 프로그래밍에 뛰어들고 싶은 분에게는 이 중 어떤 걸 먼저 해보라고 추천하시겠어요?

좋은 질문이에요! 저는 F#에 한 표를 던지고 싶어요. 가장 익히기 쉬운 언어라고 느끼기 때문이에요. 주된 이유는 F#이 다른 두 언어보다 덜 복잡하기 때문이죠. F#의 뛰어난 도구와 문서도 시작할 때 큰 장점이에요. 다만 F# 트랙을 끝내고 나면 Haskell 트랙에도 꼭 참여해 보시길 권해요. Haskell에는 F#에 없는 멋진 고급 기능이 있거든요.

Exercism의 앞으로의 계획을 꽤 많이 알고 계시잖아요. 프로젝트에서 특히 기대되는 게 있나요?

계획 중인 개선 사항 중에서 저는 풀이의 정적 분석이 가장 기대돼요. 제출된 풀이를 프로그램으로 분석해서 흔한 문제점이나 제안을 찾아내고, 그 풀이에 자동으로 댓글을 달아 주는 시스템을 만들자는 아이디어예요. 그러면 멘토들이 흔한 문제점이나 제안에 댓글을 달 필요 없이 더 흥미로운 문제에 집중할 수 있으니 큰 도움이 될 거예요.

관심 있다면 제가 만든 초기 프로토타입인 C# 트랙 분석기를 한번 보세요. .NET Compiler Platform을 사용해서 C# 코드를 정적으로 분석해요.

네, 저도 정적 분석이 거의 가장 기대되는 부분이에요. 벌써 프로토타입을 만들어 두셨다니 정말 멋져요. 정적 분석이 가져다줄 속도 향상이 Exercism을 크게 개선할 거라고 생각해요. 그리고 이걸 확장해서 완전 초보자에게 코딩을 가르칠 수 있다는 점이 정말 기대돼요. 진짜 판도를 바꿀 변화라고 봐요.

마지막 질문이에요. 마음 가까이 두고 있는 개인 프로젝트나 뜻깊게 생각하는 활동 중에 소개하고 싶은 게 있나요?

저에게 Exercism에 참여하고, 오픈 소스 코드베이스에 기여하고, 사람들을 멘토링한 경험은 정말 보람찼어요. 많은 걸 배웠고, 멋진 사람들도 알게 됐고, 많은 사람을 도울 수 있었다고 느껴요.

여러분도 참여할 수 있을지 한번 알아보시길 권하고 싶어요. 좋아하는 언어가 있고 사람들이 그 언어를 배우도록 돕고 싶다면, Exercism에 멘토로 등록해 보세요. 코드를 쓰는 쪽이 더 좋다면, 오픈 소스 프로젝트 하나를 골라 기여해 보세요. 들리는 것보다 훨씬 덜 무섭고, 하고 나면 정말 뿌듯할 거라고 장담해요!

멋져요! 시간 내어 이야기해 주시고, Exercism에서 해 주신 모든 일에 감사해요!

2019년 01월 21일 · 유용했나요?