본업

지속적인 코딩 공부의 어려움

오더키 2023. 8. 8. 08:21

서론

코딩을 잘하려면 지속적으로 코딩 공부를 해야 한다. 데이터 사이언티스트들은 보통 파이썬이나 R로 코딩을 많이 하고, 또 학교에서도 그렇게 가르친다. 어떤 수업은 과제와 프로젝트를 파이썬 코드로 작성해서 제출해야 하고, 또 어떤 수업은 R로 작성해야 한다. 학교에서는 당연히 취업 후 어떤 언어를 쓰며 일하게 될지 모르니 여러 언어를 가르쳐 주는 게 맞다. 나도 대학원을 다닐 때 파이썬, R, STATA, SAS 등 프로그래밍 스킬을 요구하는 통계 프로그램 및 기타 여러 언어를 배웠다. 대학원생일 때 인턴을 몇 군데 회사에서 했었는데 그때 한 곳에서 정말 대단한 사수를 만나 파이썬 프로그래밍에 대해 진지하게 배울 수 있었고, 그것이 졸업 후에 먹고사는 길로 연결이 되었다.

본론

회사를 다니다 보면 보통 하나의 프로젝트를 짧게는 한 달부터 길게는 몇 년도 하다 보니, 맨날 쓰는 함수와 비스무리한 구성의 스크립트만 짜게 되어 어느 순간 다양한 코딩 방법을 까먹고 도태되기 십상이다. 따라서 지속적으로 코딩 공부를 해야 하는데, 말이 쉽지 퇴근 후 코딩문제를 따로 풀어보거나 회사 일 외의 개인적인 프로젝트를 하며 낮에 하던 코딩을 밤에 또 한다는 것은 정말 고역이다. 물론 코딩에 미친 사람들을 종종 볼 수 있는데, 밥 먹고 코딩문제 풀 생각만 하고, 풀다가 막히면 주변 사람들한테 막 물어보고, 풀릴 때까지 집착한다. 테크 회사를 다니다 보면 흔히 있다. 

종종 리쿠르터들에게 이메일이나 링크드인 메세지를 받게 된다. 우리 회사에 관심 있냐? 스크리닝 인터뷰 해볼 생각이 없냐? 묻는다. 내 기준 들어본 적 없는 회사는 거르지만 빅테크 회사에서 그런 제안이 오면 사실 재미로라도 한 번쯤 응하게 된다. 누가 아는가? 잘돼서 고연봉으로 이직하게 될지도 모를 일 아닌가? 나도 작년에 팽중 한 곳에서 연락을 받아 이직 생각은 없지만 재미로 인터뷰를 보기로 했다. 인터뷰를 보려면 코딩 스크리닝부터 통과를 해야 하고 그것을 통과하려면 억지로라도 코딩 공부를 해야 하니 동기부여가 될 것 같았다. 대학교 1학년 때부터 코딩을 배웠지만 코딩이라는 것을 진지하게 생각해 보고 공부를 해 본건 작년이 처음이었던 것 같다. 그동안 인턴이나 풀타임으로 직장을 어떻게 찾아 옮겨 다녔는지 모를 일이라고 깨닫기도 했다. 

한 두달을 온라인 강의를 들으며 알고리즘 위주의 문제들로 100문제 넘게 풀어 본 것 같다. 처음으로 코딩이라는 게 잘 맞는 선생님한테 배우면 재미가 있을 수도 있다는 것도 알게 되었다. 세상에 이렇게 잘 가르치는 사람이 있다는 것에도 놀랐다. 먼저 연락이 온 팽 중 한 군데 말고 다른 팽 회사들도 지원했다. 또 나름 관심 있던 회사들에도 이력서를 냈다. 나름 학벌과 이력은 뻔지르르 한 편이라 또 채용시장이 호황일 때라 그런지 전부 인터뷰를 잡을 수 있었다. 두 달을 잘 배웠다고 느낀 게 그중 반은 통과하고 반은 떨어졌다. 나중에 기회를 봐서 떨어진 곳에서 내준 문제들을 풀어서 여기에 올릴 것이다. 

이곳이 내가 온라인 강의를 들으며 코딩 문제풀이를 한 곳이다.

물론 나는 이직을 하지 않았다. 2023년이 시작되며 테크 회사들이 칼을 뽑아 들고 직원들을 내치기 시작했다. 내가 인터뷰를 본 회사 전부가 그랬다. 지금 다니고 있는 회사는 내가 맡은 프로젝트에 내 후임이 없어 장기적으로 안정적인 곳이다. 심지어 올해 말 승진 후보자로 올랐다. 일도 손에 익고 맨날 하는 코딩 같지만 그 한 두 달 바짝 공부한 것도 공부를 한 것이라 그런지 갑자기 능률이 좀 오르기도 했다. 후배들이 뭐뭐 안된다고 할 때도 나서서 시범을 보여주며 솔루션을 제시해 주기도 했다. 공부의 성과가 있는 것 같아 내심 뿌듯했다.

그런데 그것도 잠시, 나는 또 코딩 공부를 멈췄다. 지속적으로 밤마다 나뭇잎 갯수를 세고, 위로 갔다 옆으로 갔다 왔다갔다하는 코딩 문제들에 흥미를 완전히 잃었다. 나는 좀 닥치면 잘하는 스타일이라 그런지 이론으로만 배우는 알고리즘 문제는 재미가 없다. 회사에서 하는 일은 어떻게 해서든 솔루션을 찾아내서 작동을 시켜야 하니 눈에 불을 켜고 하게 된다. 재미가 있을 때도 있다. 

아무튼 장기적으로 코딩 공부를 한다는건 너무나도 어렵다. 그래서 스스로에게 동기부여를 하기 위해 블로그에 문제들을 일주일에 한두 개 정도 써보고 풀이 방법도 적어보려고 한다. 망각의 동물인지라 한 두 달만 지나도 새까맣게 까먹고

내가 이걸 풀었다고?

라고 말하는 나를 항상 발견한다. 

결론

지속적인 코딩 공부를 하는 것은 정말 엄청난 노력이 필요하다. 단기로 3개월, 6개월 문제 풀이만 바짝 해서 어떻게든 취업은 할 수 있겠지만, 나는 근본적으로 코딩을 아주 잘하는 사람이 되고 싶다. 내가 인턴일 때 만난 그 대단한 사수처럼 파이썬 천재가 되는 것이 나의 단기적인 목표다. 어? 이거 만들어 보고 싶어? 그럼 구글에 Syntax 한번 찾아보는 일 없이 줄줄줄 써 내려가는 그런 사람말이다. 한 회사와 인터뷰를 하는데 주피터 노트북에서 주어진 문제 풀이를 시켰다. 그때 한참 나도 회사일에서 데이터브릭스 노트북에 판다로 이것저것 하던 때라 구글 한번 검색하지 않고 전부 풀었다. 문제 중에는 Json을 parsing 해서 다른 칸 만들어서 넣으면 되는 간단한 것도 있었는데 평소에 판다에서 map이랑 lambda 안 쓰는 사람이면 당연히 구글에 좀 뒤져보면서 해야 된다.

그때 내가 문제풀이하는 걸 지켜본 사람이 적잖이 놀란 모양이다. 리쿠르터가 연락이 와서는 생전 그렇게 잘하는 사람 처음 봤다고 했단다. ㅎㅎㅎ 암튼 그 회사도 못 갔다. 그 회사에 레이오프 대란이 불어서 몇 년 있다 다시 시도해 보려고 한다. 못 간 게 다행이다 조상신이 도왔다고 느꼈다. 다시 그때가 될 때까지 그리고 그 후에도 코딩공부는 지속적으로 해야 한다. 스스로 끊임없이 동기부여를 해야 하는 것, 지속적인 코딩 공부의 어려움이다.