Monday, January 14, 2019

회사에서 하는 일을 잘 하는 게 자신의 개발 실력을 증명해 주지는 않는다. (1)

제목이 좀 자극적이어도 글을 끝까지 읽기를 권한다.

개발 실력이라는 것?


실무 경험이 없는 그리고 개발자가 되려고 하는 사람 중에는 이렇게 생각하는 사람이 많을 것이다.

- 빨리 회사에 입사해 도움이 되는 사람이 되려고 하는 것
- 회사가 내 개발 능력을 잘 써주길 바라는 것

그런데, 사실 일해보면 알겠지만 위 두 생각은 틀린 생각이다.

일단 회사에 도움이 되는지 안되는지는 일을 함께 해 보지 않고 알 방법은 없다. 뭐 같은 기술을 쓰고 같은 개발을 하는 입장에서는 도움이 된다고 생각할 수 있지만, 근본적으로 일을 하는데 도움이 되고 안되고가 판단의 포인트가 아니라는 뜻이다. 회사는 제품 개발이 되고 수익이 나는 상황을 원하게 되어 있고 그러려면 일 하는 사람에게 요구하는건 개발 하면서 배웠던 개념이라던지, 좋은 개발 문화, 성장할 수 있는 환경, 코드의 품질을 높이는 작업 등등을 원하는 게 아니고 어떻게든 동작하는 코드를 작성해서 버그가 없이, 그리고 일정에 맞춰서 문제 없이 일을 끝낼 수 있는지에 대한 여부만 보게 되어 있다는 것이다. 즉, 시키는 일을 별 문제 없이 잘 해서 월급 줘 가며 일 할 수 있는 사람인지가 회사 쪽에서 가지는 시각이라는 것이다. 뭐 이것도 내가 여차저차 잘 해서 스스로 회사에 도움이 됐다고 생각하면 좋은 케이스이지만 그렇게 개발을 하다 보면 내 개발 실력이 느는게 아니라 회사가 원하는 일에 맞게 잘 훈련되서 거기에 맞춰 열심히 노동력을 제공 해 주고 월급을 받아왔다는 게 팩트인데, 그걸 잘 모른다는 게 사회 초년생들의 흔한 착각이다.

또 회사가 나의 능력을 잘 써주길 바라는 마음이 있는건 좋지만, 아마 반대의 상황으로 흘러가는 게 더 많을 것이다. 즉, 나의 능력과 흥미가 어디 있는지 크게 관심이 없고, 회사가 원하는 방향대로 나의 능력을 그쪽에 맞춰 키워나가는 걸 더 원한다는 것이다. 예를 들면 내가 가진 능력은 코드를 계속 리팩토링 해서 간결하고 유지보수 하기 좋게 코드를 짜는 능력이 있고 그걸 회사 업무 하면서 발휘하기를 원한다. 하지만 회사는 그런 거에 관심이 없고, 당장 2주 후에 만들어야 할 관리자 페이지와 프로모션 페이지를 만들어야 하고, 서버 로직과 DB 쿼리를 잘 짜서 어떻게든 기능을 만들어 내는 데 쫓기게 되는 상황이다. 이런 상황이면 잘 설계되고 잘 리팩토링 된 아름다운 코드는 나오기 어려울 수 밖에 없다. 아니면 시간을 더 투자해 내가 원하는 능력을 발휘해서 리팩토링된 코드를 잘 구현했다고 하더라도 쓸데없는데 시간 썼다고 생각할 가능성이 높다. 개발 문화가 나의 관심사를 발휘할 수 있는 문화가 아니라면 내 진짜 실력이 성장할 기회 조차도 없기 때문에, 애초에 아무 회사나 들어가서 내 능력이 잘 쓰이길 기대하는 거 부터가 잘못됐다. 처음부터 내 관심사에 대해 발휘할 수 있는 문화가 있는 회사를 찾아가서 일하는게 맞다.

이런 시간을 1년, 2년, 3년 보내고 나면 얻는 타이틀이 개발 실력일까?


개발 실력이 늘던 아니던, 성장을 했던 못했던 어쨌든 모두들 사회 생활을 하다  스스로 이렇게 부르게 된다.

"안드로이드 개발 2년차"
"자바 개발 3년차"
"서버 개발 5년차"

뭐 5년차 까지는 괜찮다. 회사 이직 시 연봉 상승에 아주 좋은 연차들이니까. 그런데 그런 시간을 보내온게 실력을 증명하는 길인지 아닌지 잘 생각해 봐야 한다. 일단 좋은 개발문화를 가지지 못한 회사에서 시키는 일과 일정에 쫓겨 일을 했던 사람이면 개발 년차가 크게 의미가 없다. 왜냐하면 내가 성장하기 위한 능력을 키운게 아니고 일 하는 방법을 잘 훈련해서 그렇게 시간을 보내온 거니까.

"내가 개발 3년 했으니까, 어느 정도 인정 받을 수 있겠지?"

라는 생각은 매우 위험하다. 개발 문화가 좋지 않은 곳, 즉 여태까지 일정에 쫓겨가며 시키는 일을 마무리 하는 것에 시간을 보내온 개발자는 비슷한 환경에서 일하는 다른 회사에서는 대우 받을 수는 있을 것이다. (왜냐하면 등급이 올라가면 더 단가를 후려치고 월급은 조금만 더 줘도 되니까) 그런데 대부분 이직을 원하는 회사는 개발 문화가 좋은 곳을 원한다. 카카오라던지 네이버, 우아한 형제들 이런 곳일 것이다. 그런 곳에 이력서를 넣고 면접을 한번 보러 가보자, 그러면 자신이 얼마나 형편없는 개발자였는지를 뼈저리게 느끼게 될 것이다. (물론 서류 전형이 통과될 수 있는지 없는지에 대한 여부는 논외이다.)

그 회사들이 원하는 면접의 형태에 코딩 테스트가 있다. 알고리즘 문제 해결이라던지 프레임워크나 특정 기술적 상황에서의 문제 대처 방법과 왜 그렇게 생각하는지에 대해 면접을 진행을 할 것이다. 하지만 회사에서 했던 일은 그런 것과 상관 없는 것들을 해왔기 때문에 면접을 잘 볼수 없게 된다. 혹은 그런 경험을 했고 잘 알고 있다고 하더라도, 그걸 남들한테 보여주거나 설명해 본 적이 없기 때문에 분명히 아는 건데도 어버버 하면서 말이 제대로 안나오게 되는 경우가 허다할 것이다. 그리고 그 경험을 한 후 부터 부랴부랴 알고리즘 공부도 하고 원하는 직군의 기술들에 대해 공부를 한다. 그런데 또 그게 잘 될리가 없다. 왜냐하면 갑자기 안하려던 걸 하니까 힘들고, 실무 하기 전에 공부할 때도 그런 레벨로 공부를 해보지 않았기 때문이다. 그런 레벨로 공부를 해보지 않았다는게 무슨 의미냐 하면 따라하기식 강의나 그저 그런 스터디모임에서 뭐 하나 제대로 끝내보지 못한 채로 수박 겉핥기 식으로 조금 "따라" 해 본게 전부인데, 면접 질문은 그런 수준이 아니라 근본적인 기술적 수준에 대한 것이나 그 해결 방법, 또는 왜 이런 기술과 방법을 썼는지와 같은 걸 물어보기 때문에 그런 걸 공부해 보지 않았으면 대답을 할 수가 없다는 것이다. 또 공부해 봤다고 하더라도 블로그 같은 곳에 잘 정리를 해 놓거나 어느 커뮤니티 사이트에서 발표 혹은 스터디 모임 주도 정도를 해보지 않았다면 어려운 일이 된다.

진짜 문제는 따로 있다.


결정적으로 가장 큰 걸림돌은 현실과의 타협이다. "나 정도면 이 회사에서 더 잘할 수 있어", "여기 말고 다른데 가도 크게 달라질까?", "당장 다음달 까지 마감 프로젝트 있는데, 그거 끝나고 다시 생각해보자" 이런 식의 타협은 현재 다니는 회사에 안주하게 되고, 시간은 계속 흐르고 이직 타이밍은 미뤄진다. 더 웃긴건 회사에서는 어느 정도 연차가 차면 시니어급 레벨로 인정해 주고 manager 노릇도 할 수 있기를 기대하는데, 여태까지 시키는 일만 한 채로 몇 년을 지내왔을 뿐이라 그런 능력이 또 갑자기 생길리가 없다. 아마 처음 드는 생각은 이럴 것이다. "아니 나도 잘 모르는데 누굴 알려줄 수 있을까?" 그리고 이 때 쯤 다들 힘들어한다. 그런다고 해서 회사에서 연봉을 많이 주는 것도 아니다. 그 시점에서 내가 몇 년차 개발자라는 걸 어필해도 먹힐리가 없다. "몇 년 동안 했는데 그거 밖에 안되냐?" 라는 말로 공격 당하면 서러움이 눈 밑과 목구멍까지 울컥하고 올라오게 된다.

그러면 개발 실력이라는 건 회사에서 하는 일 아니면 어디에서 오는 건지 다음 편에서 얘기해 보기로 한다.

No comments:

Post a Comment