본문 바로가기

취업이야기

실무와 첫이직

연애를 책으로 배웠어요 from unsplash

개발을 책으로 배웠어요

이론과 실전의 괴리는 온실속 화초에게 예상치 못한 역경을 제공합니다. 책은 잘 짜인 실험실 상황에서 어떻게 개발을 하는지에 대해서만 가르쳐 주지만, 실전은 웅덩이와 낭떠러지들로 이루어진 아마존입니다. 어떻게 생존하면 되는지에 대한 완벽한 답은 없지만, 그래도 책에서 배운 내용을 토대로 확장시켜나간다면 무사히 탈출할 수 있죠.

 

혼자서 공부만 하던 시절에는 자바를 공부했었지만 실제로 일을 시작할 때 사용한 언어는 파이썬이었습니다. 처음 합류한 팀에서 개발 실력이 있는지 검증을 하기 위해서 파이썬으로 간단한 베이스 프로젝트를 과제로 내주었는데 기간은 1주였습니다. 자바로 한다면 부족한 시간은 전혀 아니었지만, 파이썬은 생활코딩 강의 5개 본 개 전부여서 심리적 압박이 컸습니다. 파이썬을 모른다고 해서 찾아온 기회를 걷어찰 수는 없었습니다.

다행히도 파이썬은 개발 언어 중에 가장 배우기 쉽고 자바와 비슷한 패러다임 언어이기 때문에 문법만 조금 다를 뿐 대동소이했습니다. 그래서 인터넷에서 찾아본 위키 문서를 이틀 정도 보면서 예제 코드들을 따라 해 본 후 바로 개발에 들어갔습니다. 파이썬과 장고 프레임워크를 사용해야 하는 프로젝트였는데, 장고에서 기본적으로 제공해주는 마이그레이션라던지 ORM 이라던지 책에서는 보지 못한 개념들을 알고 있지 못해서 실수를 반복하며 배울 수밖에 없었습니다.

데이터베이스 마이그레이션 파일들은 기록들로 보관하고 있어야 하므로 수정하거나 지우면 안 되고 추가만 해야 합니다. 처음에는 그런 사실을 알지 못했기에 멋대로 지우고 뒤늦게 오류 내용을 발견하게 되면 내용을 수정했습니다. 그러다가 에러가 나면 전혀 관련 없는 에러 내용으로 채워지기 때문에 원인을 찾아내기까지는 한참이 걸렸습니다.

책에서 가르쳐주지 않는 것 중 꼭 알아야 할 것 중 하나가, 실생활에서 사용하는 서비스들은 24시간 정상 작동 되어야 하는 경우가 대부분이라는 것입니다. 그래서 한밤중이라도 에러가 난다면 누군가는 그 에러를 수정해야 하죠. 그리고 그 누군가는 바로 저라는 사실.

이런 이야기는 어느 책도 이야기해주지 않죠.

뭘 모르는지 알아가는 시간

혼자 개발을 할 때는 내가 아는 기술들만 사용하기 때문에 제가 실력이 좋다던가 제가 잘한다는 착각에 빠져 살았습니다. 하지만 다른 개발자들과 코드를 공유하고 개발하다 보면 같은 문제를 훨씬 아름다운 방법으로 풀 수 있다는 것에 감탄하게 됩니다. 예를 들면 저는 여러 줄에 거쳐 지저분하게 코드를 작성했다면 제 팀원은 이미 다른 사람이 구현해 놓은 라이브러리를 사용해서 한 단어로 해결하는 것이죠. 구글링만 잘하면 개발 잘할 수 있다고 생각했던 저에겐 큰 충격이었습니다. 우물 안 고인 물이었던 것이죠.

비슷한 일화로 어느 날, 자바만 알면 될 거라고 생각하던 저에게 함수형 언어와 스칼라는 신선한 충격이 찾아왔습니다. 함수형 언어에서 지향하는 패러다임은 제가 처음에 생각하던 프로그래밍과는 차이가 있었습니다. 예를 들어 자바는 절차와 객체를 지향하는 언어이지만 함수형 언어는 수학에서의 함수처럼 개발한다는 특징이었습니다. 1 더하기 1은 당연히 2가 되어야 하는데, 개발을 하다 보면 항상 그런 것만은 아니죠. 1 더하기 1이 처음에는 2가 되지만 때에 따라 3이나 4가 되는 경우도 허다합니다. 함수형 언어는 그런 걸 처음부터 배제하자는 목적으로 설계되어있었습니다.

프로그래밍의 세계는 알면 알수록 깊이가 깊어지기만 해서 제가 이 업계에서 살아남을 수 있을지 고민이 생겼습니다. 처음에는 호기롭게 좋아하는 걸 하면서 살자는 목적 하나로 끝까지 밀어붙였지만, 막상 들어오고 나니 아름다운 금강산이 펼쳐져 있기보다는 혹독한 에베레스트가 기다리고 있었습니다.

또 다른 일례로, 깃(Git)이라는 기술도 지금은 개발자 사이에서는 굉장히 잘 알려진 기술이지만 혼자 개발할 때에는 그런 게 왜 필요한지 이해하기도 어려웠습니다. 사용해야 한다는 것만 머리로 알고 있었기 때문에 사용하고는 있었지만 하나의 브랜치만 사용하는 안 좋은 습관이 들려 있었습니다. 마치 맥북을 사서 윈도우를 설치하는 꼴인 셈이죠.

첫 회사에서는 개발에는 언어를 사용하는 방법도 다양하게 배우고, 언어 외에 개발 전반적인 것들에 대해 배운 기회였습니다. 하지만 모든 것을 알 수 없기에, 얕고 넓은 지식도 중요하지만 좁고 깊은 지식이 필요해 보였습니다. 기술자란 그런 사람들이니까요.

스칼라 로고 from scala-lang.org

커리어를 위한(?) 이직 결정

유튜브에서 개발과 게임 방송을 하시는 케빈님이 계시는데 호주에 일찍 정착하셔서 개발자로서 인생을 살고 계십니다. 가끔 라이브 방송을 보곤 했는데, 호주에서 스칼라 개발자를 많이 뽑는다는 이야기를 가끔 하십니다. 첫 번째 글에서 이야기 드렸지만, 제 최종 목적지는 호주였습니다. 그렇기에 저는 스칼라를 제 메인 언어로 삼기로 마음먹게 됩니다.

한국에서 스칼라 개발자가 된다는 건 사실 큰 결심이 필요합니다. 취업이나 이직이 매우 어려워서 먹고사는 문제까지 직결 될 수도 있습니다. 하지만 이 당시에는 그런 걸 조언해주는 사람도, 말리는 사람도 없었습니다. 사실 주변에서 그런 사려 깊은 조언을 해주었더라도 들었을지는 의문이네요. 지금까지 제 글을 읽어오신 분들이라면 제 무모함은 이제 익숙하시겠죠. 전 한번 마음먹으면 경주마처럼 앞밖에 볼 줄 모릅니다.

첫 회사에서 5개월쯤 근무했을 당시 어떻게 하면 스칼라를 제대로 사용하면서 경력을 쌓을 수 있을까 고민하고 있었습니다. 그러던 중 한 회사에서 경력직 개발자를 뽑고 있는데, “현재 사용하는 코드는 자바인데, 현재 신입 개발자밖에 없어서 기존 코드 관리에 어려움을 겪고 있으니, 서비스가 유지된다는 조건에 언어사용에 제한은 없다”라고 했습니다.

사실 이 시기에는 고민이 많았습니다. 첫번째로, 일단 제가 경력직으로 이직한다면 다른 신입 개발자 친구들을 챙겨서 팀을 리드 해야 할 텐데, 저도 경력이 이제 1.5년밖에 안되었기 때문이었고, 두번째는 이직을 한다면 스칼라를 쓰고 싶어서가 가장 큰 이유인데 스칼라를 실무에서 써본 적은 없었기 때문입니다. 스칼라를 함수형으로 제대로 구현할 자신은 없었습니다. 함수형으로 구현하지 못한다면 그냥 자바와 다를 게 없었습니다.

일단은 만나서 이야기를 들어보고 결정하는 게 좋겠다 싶어서 면접을 일단 보았는데, 뜻밖에 큰 연봉을 제시해주셔서 저는 제안을 받아들일 수밖에 없었습니다. 우리는 자본주의 사회에 살고 있으니까요.

현재 받는 연봉보다 훨씬 많은 금액이었고, 스톡옵션도 부여해서 함께하고 싶다는 제안이었습니다. 회사와 연결해준 친구가 좋은 말을 많이 해주어서 좋은 계약 조건을 받았던 것 같습니다.

 

저는 그렇게 얼마나 큰 리스크가 존재하는지 알지 못한 채 첫 이직을 덜컥 결정하게 됩니다. 이직한 회사에서는 스칼라를 쓰며 꽃길을 걸을 것 같지만, 개발자와 관리자 중간의 모호한 경계에서 시련을 겪게 됩니다. 몸도 힘들었지만, 마음은 훨씬 더 힘든 시간이었습니다.

이직한 회사에서의 경험은 정말 할 얘기가 많으므로, 다른 시리즈로 따로 기술하는 게 좋을 것 같습니다. 개발에 대해 배우기보단 인생과 회사 생활에 대해 더 많이 배운 시간이었습니다.

 

개발에 흥미를 갖게된 계기부터 시작하여 첫 이직까지의 이야기까지 적으며 회상해보니 정말 앞뒤 안가리고 달려들었던 시간들이 부끄럽기도 하고 다행이라는 생각도 듭니다. 가장 중요한건 시도하는것 같아요. 책상에 앉아서 개발자하려면 이거 해야되 저거 해야되 라며 각만 재고 있었다면, 안되는 이유만 나열하다가 죽도밥도 안됬을 것 같습니다.

 

첫 회사가 팁스 입주사였는데, 오피스 벽면에 이런 말이 써있어서 공유해 봅니다.

 

The biggest risk is not taking any risk - Mark Zuckerberg”
“아무 위험도 감수하지 않는게 가장 위험하다 - 마크 저커버그”

 

개발자 취업 <- Previous

Next -> 부록

 

(추가) 파이썬과 자바가 대동소이하다고 표현하였는데, 이는 그 당시 레벨에서 대동소이 할 뿐 각각의 언어를 깊게 파고들면 다른점이 많답니다.