프로 하스켈러 2일차 | 이상적 프로그래밍 언어

김대현
HappyProgrammer
Published in
5 min readMay 10, 2022

하스켈로 백엔드 개발자 일을 하러 이직한 이튿날, 친절한 온보딩 교육을 받았습니다. 저는 과거에, 새로 합류한 동료에게 온보딩을 진행할 때, 프로그래밍 언어나 프레임워크 교육은 각자 읽어 볼 책 정도만 소개해주고 넘기고, 우리 팀 프로젝트의 특화된 내용만을 조금의 시간을 들여 설명해 주었는데, 그건 참 불친절한 온보딩이었다는 반성을 하고 있습니다.

하스켈의 대수적 자료형(ADT)과 타입 클래스에 대해 알아보고, 주어진 연습 문제도 풀어보는 시간이 있었고, 현재 기획안의 일부 이슈에 대해 토론하는 회의에도 참석한 하루였습니다.

오늘은, 딱히 하스켈에 대해 언급할 내용은 없으니, 제가 어쩌다 이렇게 프로그래밍 언어를 중심으로 이직을 하고 있는지, 언어 관련해서 대체 어떤 생각을 하고 있는지 적어보겠습니다.

이상적인 프로그래머가 선택하는 언어

모바일 앱 개발자의 경우에는 스위프트나 코틀린 등으로 프로그래밍 언어가 거의 확정적이겠지만, 백엔드 개발자가 신규 프로젝트를 바닥부터 진행하는 경우에는, 조금 더 프로그래밍 언어를 선택할 수 있는 자유가 있는 것 같습니다.

어떤 이상적인 프로그래밍 언어가 있다 치고, 그걸 찾아 배워서 활용하면 좋겠습니다만, 그 이상적인 프로그래밍 언어의 기준이라는 게, 개인 기호 영향을 많이 받는다는 문제가 있습니다. 다시 말해, 모든 개발자에게 공통적으로 이상적인 프로그래밍 언어는 아직 없다는 얘기가 되겠죠. 아마, 앞으로도 없지 않을까 생각합니다. 일반인들이 보기에 다 비슷해 보이는 괴짜 집단인 개발자들도, 나름 그들 안에서는 개성들이 강해서, 대동 단결할 단일 대상이 마땅치 않습니다.

바람직한 개발자는 어떤 언어를 선택해 접근하는 것이 좋을지 상상해보겠습니다. 훌륭한 개발자는, 우선 대중적인 언어를 선택할 것 같습니다. 그리고 그 언어를 전문적으로 활용하면서, 다른 언어 커뮤니티에서 쏟아지는 훌륭한 기술이나 문화도 열려있는 안테나로 수신하며, 본인이 선택한 언어 환경에도 끌어올 수 있는 사람이 가장 훌륭할 것 같습니다. 실질적 인정과 대우도 잘 받을 수 있을 테고요.

이상적인 개발자는, 이상적인 최고의 언어를 선택하고 배우는데 에너지를 소모하는 대신에, 적절히 좋은 프로그래밍 언어와 도구들을 효과적으로 활용해서, 본인이나 회사가 원하는 목표 결과물을 신속 정확하게 만들어 내는 데 집중하는 것이 더 많은 부가가치를 만들어 낼 수 있을 것 같습니다. 이상적인 개발자는 이상적인 언어를 선택하는 데 에너지를 낭비하지 말아야 한다는 이상한 이야기를 하고 있네요.

비이성적인 개발자로서는…

하지만, 아쉽게도, 제 개인의 취향과 판단이 그다지 이상적(이성적)이지 못해서, 여러 언어를 쫓아 떠돌고 있습니다. 최근에는 함수형 프로그래밍 언어라는 범주 안에 있긴 합니다만, 그래도 몇 년씩, 클로저, 스칼라, 하스켈을 업무용 언어로 쓰게 되었으니 실질적 효용 측면에서 현명한 선택은 아닌 것 같습니다.

“난 어떤 언어를 써도 결과물을 잘 뽑아낼 수 있다”는 오만한 마음이 있는 건데, 크게 양보해서 그게 사실이라고 칩시다. 그러면, “어떤 언어를 써도 되는 거면, 굳이 왜 희소한 언어를 쓰는 거냐?” “대중적인 언어가 인재의 규모나, 학습 자료, 그리고 파급 효과면에서 훨씬 유리하지 않느냐?”라는 측면에서 아직 마땅한 답을 구하지 못했습니다.

요새는, 그저 제가 “프로그래밍 언어”를 배우는 것 자체에 관심과 흥미가 많은 편이라는 걸 인정하는 게 낫겠다는 생각입니다. 한국어나 영어 같은 일상 언어도, 간혹 언어 학습 자체를 즐기는 분들이 있잖아요? 여러 나라 말을 유창하게 구사하는 사람들도 있고요. 그분들만큼 실용적이거나 훌륭하지는 못하지만, 전 프로그래밍 언어에 흥미가 있는 편인 거죠. 그 흥미를, 업무와 연관 짓겠다는 무모함도 함께 갖추고 있고요.

적어도 지금의 판단으로는, 최소한 함수형 프로그래밍의 현업적 가치는 높게 보고 있고, 하스켈도 미니멈 향후 몇 년간 즐겁게 배우며 지낼 것 같습니다. 지금 생각에는 그래도 3년은 가지 않을까 생각하는데, 제 변덕이 꽤 심해서 또 알 수 없죠. 오늘의 제 마음도 잘 모르는 하루하루인데, 먼 미래의 제 마음은 어찌 알겠습니까.

얼마나 가겠어

3년이라는 가상의 기간을 놓고 생각해보면, 꽤 짧은 기간일 텐데요, 그게 또 꼭 그렇지도 않습니다. 네카라쿠배당토 같은 남들 보기에 대단히 훌륭하다고 인정받는 회사들도, 직원들의 평균 근속연수를 보면 깜짝 놀란다고 들었습니다. 정확한 통계는 찾아봐야 하겠지만, 대략 1~3년 사이였던 것 같습니다. 적어도, 보통의 회사가 원하는 근속 기간에 비하면 대단히 짧은 기간일 테지요.

우선은 이 기간을 늘리는 것이 중요하겠지만, 여러 이유로 그게 쉬운 일은 아닐 터입니다. 현실적으로는, 그 기간 안에 최대한 성과를 뽑을 환경을 만들고, 그 기간이 지난 사람은 박수받고 떠나고, 또 새 사람이 들어서 성과를 손실 없이 이어갈 수 있게 노력하는 것이 실용적인 대응법일 것 같습니다.

저는, 어쩌면, 알 수 없는 미래의 어떤 일들에 대해 너무 장기적으로 고민하고, 최적의 선택을 하려고 많은 에너지를 낭비하는 게 아닐까 생각해 봅니다. 사실, 그러기에는 제가 알고 있는 정보가 너무 부족한 데다 주변의 환경도 계속 빠르게 바뀌는데 말이죠.

아무튼, 적어도 당장에는 최적의 선택이라 믿는, 함수형 프로그래밍, 그리고 하스켈 백엔드 개발로, 그저 일단 집중해서 몰입하는 게 제가 지금 해야 할 실천이 아닐까 생각합니다. 이 글을 읽으시는 분들도, 그때그때 회사나 동료들과 협업을 잘하셔서, 원만히 잘 지내면서도 업무 성과를 이어낼 수 있다면 좋겠습니다. 그때그때 잘 맞는 하루하루가 이어져 길어지면, 그게 효과적인 근속이 되는 겁니다. 잘 맞지 않는 상태라면 기간만 길어봤자, 그게 무슨 의미가 있겠습니까. ㅎㅎ

장기하의 “얼마나 가겠어”를 소개하며, 오늘 글을 마무리합니다.

https://www.youtube.com/watch?v=BKh3U0Wp4ZE

아, 모르지, 얼마나 갈지는, 나도 모르지~ 그래도 한번 길게 이어지길 기대해 봅니다.

P.S. 이런 단기적인 선택 성향은, 저 개인의 성향과 선택이며, 제가 최근 입사한 회사의 구성원 들은 장기적 플랜과 확고한 믿음이 있으니 오해 없이 지원하시길 바라겠습니다. 오롯이 저 개인의 내면적인 이야기였음을 강조합니다.

--

--

김대현
HappyProgrammer

시니어 백엔드 개발자. 함수형 프로그래밍을 선망하며 클로저, 스칼라, 하스켈로 도전하며 만족 중. 마이너리티 언어만 쫓아다니면서도 다행히 잘 먹고 산다. 최근엔 러스트로 프로그래머 인생 확장.