스타트업 채용, 정말 언어 문제일까요?

회사에서 파이썬 프로그래머 구하기가 너무 어려우니, 자바로 넘어가자는데 어떡하죠?라는 질문에 대해, 파이썬(혹은 노드, 루비, 클로저)을 계속 써도 되는 이유를 적어보았어요.

스타트업 채용, 정말 언어 문제일까요?
출처: Parveender Lamba from Pixabay

얼마 전 참석한 2023 파이콘에서 이런 고민을 들었어요.

회사에서 자바로 넘어가는 건 어떤지 고민하고 있어요. 파이썬 프로그래머 구하기가 너무 어렵다고... 자바 프로그래머는 엄청 많다면서요?

다른 주제(Django)를 이야기하던 자리여서 답을 하진 않았지만, 계속 생각이 나서 글로 정리해보려해요.

네 줄 요약:

  • 채용하기 어려운 건 언어 탓이 아닐 수 있다.
  • 규모를 키워도 원하는 결과를 얻지 못할 수 있다.
  • 지금 언어 변경 작업을 하기엔 시간이 너무 아깝다.
  • 성능 면에서도 큰 이점을 얻기 어려울 것이다.

이 글의 주장이 아닌 것

  • 자바 쓰지 말자
  • 자바 별로 안 좋다
  • 잘 운영하던 자바 서비스를 다른 언어로 바꾸자

채용의 어려움

파이썬 뿐 아니라 자바를 제외한 모든 언어를 사용하는 회사들은 비슷한 고민을 하더라고요.

요즘 00 프로그래머 구하기가 너무 어려워요. 기술 스택을 자바로 옮겨야 할까요?

채용하는 입장이 아닌 취업 준비자의 입장에서 생각해보죠. 왜 자바를 선택할까요? 대개는 자바를 사용하는 회사가 많고, 이는 채용문이 넓다는 뜻이고, 따라서 취업 확률을 높일 수 있다고 판단하기 때문이겠죠. (자바를 좋아해서 선택한 사람도 있을 텐데, 이런 분들은 논외로 할게요.)

한편 채용 시장에서는 취업 준비자들만 경쟁하지 않습니다. 인재를 두고 회사도 경쟁하는 입장이 되죠. 취업 준비자들은 자바를 사용하는 여러 회사 중 가고 싶은(=지원하고 싶은) 회사를 선택할 때는 회사의 개발 문화나 급여, 복지 등을 고려합니다.

그럼 이제 솔직하게 생각해봅시다. 여러분의 회사가 개발 문화, 급여, 복지 면에서 (주로 자바를 사용하는) 네이버나 카카오와 경쟁할 만한가요? 파이썬 프로그래머를 뽑기 어려운 게 아니라, 보상이나 복지, 사업 아이템 등에서 경쟁력이 떨어지는 건 아닐까요?

출처: 임금 인상의 시대, 벌어지는 임금 격차 (슈카월드)

물론 스타트업은 보상, 복지 면에서 대기업과 경쟁하기 어려울 거예요. 이럴 때는 차라리 파이썬(혹은 노드나 루비, 클로저, PHP 등의 언어)을 사용한다는 것 자체가 다른 요소를 압도하는 경쟁력이 될 수 있어요. 취업 확률이 (자바에 비해) 낮다는 걸 알면서도 특정 언어를 선택했다는 건, 그만큼 언어에 애정이 있다는 말이고 회사에 들어가서도 그 언어를 사용하고 싶다는 말이 되니까요.

규모

이런 질문도 들었어요.

국내 파이썬 프로그래머가 너무 적어요. 파이썬 프로그래머로만 일정 규모 이상을 모으기가 어렵네요.

회사들은 왜 프로그래머를 많이 모으려는 걸까요? 사업은 확장되는데 서비스 개선 속도가 점점 느려져서? 신규 사업을 진행하려는데 기존 프로그래머들은 이미 바쁘니 새로 뽑으려고?

서비스 개선 속도 향상

대개 회사들은 서비스 개선 속도가 느려진 프로그래머를 더 많이 뽑아서 이를 극복하려고 합니다. 벽돌 옮기는 노동자가 많아지면 벽돌을 더 많이 옮길 수 있다는 식의 생각 때문인데요.

(벽돌 옮기는 일에서도, 옮길 수 있는 벽돌 수는 사람 수에 비례하지 않습니다. 사람이 많아지면 동선도 겹치고, 지시 사항 전달력은 떨어지고, 벽돌 무더기가 사라지는 만큼 벽돌을 가지러 가야 할 거리는 늘어나니까요. 생각할 부분이 많다는 뜻입니다.)

이런 생각은 프레데릭 브룩스가 ⟪맨먼스 미신⟫이라는 책으로 정리합니다. 느려지는 프로젝트에 사람을 더 투입하면 프로젝트 진행이 더 느려진다고 말이죠. (무려 1975년에 발간된 책이지만 여전히 오해가 만연한 현실이 아쉽네요.)

프로그래밍 분야의 고전으로 손꼽히는 프레데릭 브룩스의 ⟪맨먼스 미신

신규 사업

우리는 기존 프로젝트가 아니라 새 프로젝트에서 일할 사람을 뽑을 거니 괜찮겠지?라고 생각하실 수도 있는데요. 어떤 형태로든 기존 프로젝트와 엮일 수밖에 없습니다. 그리고 이는 (기대만큼) 속도를 낼 수 없는 환경이라는 뜻이죠.

새 프로젝트가 정말 새 프로젝트일까요? 기존 프로젝트를 운영하며 쌓인 보물 같은 데이터와 전혀 엮이지 않을 건가요? 기존 팀원들이 구축해 둔 효율적인 시스템(인하우스 도구나 클라우드 인프라, 채용 프로세스 등)을 정말로 포기하나요? 이렇게 물어보면 대개는 '아, 그건 아니고 정말 필요한 A와 B 정도만 연결하려고요.'라고 대답하죠. 식탁 위에 5만원 한 장이 놓여 있는데 밥 먹으러 나갈 때 가져가지 않을 사람이 누가 있겠어요.

하지만 바로 그 지점들을 연결하는 데에도 기존 팀원과 새 팀원의 시간과 노력이 들어갑니다. 어찌저찌 연결이 무사히 끝났다 치죠. 새 프로젝트가 생각보다 인기를 끌고 사람이 몰리면, 연결 지점으로 인해 기존 프로젝트에도 영향이 갑니다. 또다시 기존 팀원들의 시간과 노력이 필요해지죠. 그냥 되는 건 아무 것도 없어요.

그럼 아예 다른 사무실에서, 기존 프로젝트와 아무런 연결점 없이 새 프로젝트를 시작하면 어떨까요?라고 물으실 수도 있겠죠. 그렇다면… 창업을 축하합니다!

개발팀은 프로그래머 + 디자이너 + PM + C/S + HR + ...

프로그래머를 많이 뽑는다는 말은 이 프로그래머들과 함께 일할 디자이너와 PM, 고객 서비스 담당, 인사 담당자들도 함께 뽑아야 한다는 말입니다. 앞서, 프로그래머 채용하기가 어렵다는 고충 때문에 고민을 시작하셨을 텐데요. 제 짧은 경험으로, 좋은 PM과 좋은 디자이너를 채용하기도 엄청나게 어렵습니다. 게다가 이렇게 사람이 늘면 인사, 재무를 담당할 분들도 추가로 구해야하고요. 단순히 '프로그래머 00명이 더 필요해'에서 끝나는 일이 아니라는 말입니다.

두 명을 채용하려고 했는데 예상치 못한 한 명을 더 채용해야 할 수도?

타이밍

어떤 분들은 지금 규모를 확 늘리진 않더라도 나중을 고려하면 자바가 유리하지 않은지 물어봅니다. 우리 서비스는 세계적인 서비스가 될 꺼니까!

아직 코드 규모가 작을 때 자바로 옮겨야, 규모가 커졌을 때도 채용에 걸림돌이 적지 않을까요?

시점을 논하자면 가장 먼저 해야할 질문은 '지금, 서비스 개발이 아닌 언어 이전에 투자할 시간 여유가 있나요?'입니다. 비즈니스 로직을 A 언어에서 B 언어로 옮기기만 하면 되는 거 아냐? 라고 생각하실 수도 있죠. 하지만 그동안 A 언어로 만든 서비스를 개발, 운영하면서 쌓았던 노하우들도 한꺼번에 사라진다는 걸 기억해야 합니다.

지금 만들고 계신 서비스가 인스타그램만큼 커지리라는 확신이 있나요? 그렇다해도 지금의 언어를 자바로 바꿀 이유는 되지 않습니다. 인스타그램은 파이썬과 Django로 만들어 놓은 서비스를 잘 운영하고 있어요. 언어 대신 런타임을 개조하면서까지요.

회사가 커가는 동안 언어를 하나만 고집하라는 말은 아닙니다. 기존에 잘 운영하던 프로젝트나 서비스를 굳이 다른 언어로 바꾸는 데 시간을 소모하지는 말자는 뜻입니다.

성능

앞서 말했듯 인스타그램이 여전히 파이썬과 Django를 사용합니다. 깃헙Shopify는 루비 온 레일스를 사용해요. 페이스북이 PHP라는 건 유명하죠. 이 회사들은 런타임을 개조할지언정 언어를 바꾸지는 않았어요.

큰 회사들이 사용하니까 덮어놓고 쓰자는 건 아니고, 현실 세계에서 어떤 언어의 성능 자체는 크게 문제 삼을 만하지 않다는 뜻입니다. 10ms를 1ms로 줄여야 하는 상황이라면 언어를 신중하게 선택해야 겠지만, 5초를 1초로 줄여야 하는 상황이라면 문제는 다른 데(비효율적인 SQL 쿼리문이나 잘못짠 비즈니스 로직) 있을 거예요.

그리고 언어를 선택하는 기준에 처리 속도만 존재하지는 않습니다. 프로그래머의 코딩 속도도 중요한 기준인데요. 비슷한 로직을 처리하는 데 필요한 코드 분량은 동적 언어가 정적 언어보다 적은 편이고, 이는 코드를 작성하는 데 드는 시간이 적다는 뜻입니다. 실력 편차를 고려하지 않는다면, 프로그래머의 생산성 면에서 동적 언어가 더 유리하겠죠. (로직이 복잡해질수록 정적 언어가 더 유리하다는 점을 지적하는 분이 계시고, 정적 언어와 동적 언어가 서로의 장단점을 점점 더 흡수하고 있기는 합니다.)

학습 자료의 양

창천향로님은, 자바 공화국이라는 글에서 자바 기반의 좋은 자료가 많고 이를 통해 일반 프로그래밍 지식을 배울 수 있으니 한 번쯤 자바를 배울 만하다고 말씀하셨는데요. 이 사실은 인정할 수밖에 없네요. 입문, 중급, 고급 등 다양한 수준에서 자바 기반의 자료는 잘 갖추어져 있습니다.

그렇다고 다른 언어 기반의 자료는 형편없는가? 하면 그 정도는 아니예요. 제 체감상 정말 좋은 자바 입문서가 세 권이라면 다른 언어에도 한두 권씩은 있어요. 아주 어려운 주제에 대해서도 어지간해서는 한 권씩은 꼭 있습니다. 어떤 주제를 배우지 못할 정도로 자료가 부족하진 않을 거예요. 책 말고 인터넷을 눈을 돌리면 사정은 더 나은 편이고요. (요즘은 AI 번역 기술도 더 힘을 주네요.)

결론

채용하기 어려운 건 언어 탓만은 아닐 수 있고, 규모를 키워도 원하는 결과를 얻지 못할 수 있고, 언어 변경 작업을 하기엔 시간이 너무 아깝고, 성능 면에서도 큰 이점을 얻기 어려울 거예요.

그러니 우리가 좋아하는 언어인 파이썬을, 루비를, 노드를, 클로저를, Go, 러스트, PHP를 계속 사용합시다. 여러분의 사업에도 그게 이득이 됩니다.

COMMENTS

}