Tips/Life

[Life] '8년 10개월'의 개발자 소회.0 - 회고록

MB Brad KWON 2022. 6. 1. 17:22

사내 발표 자료 정리하면서 영어사전 뒤져보다가 무슨 바람이 불었는지..... 그동안의 개발자 생활을 소회 해보고 싶어졌다. 여러 강연과 술자리에서 많이 했던 얘기들이라 대부분의 주변 분들은 지루해할지도 모르지만, 어리다면 어리고 늙었다면 늙은 한 개발자의 소회 정도로 지나가면서 심심할 때 읽을만한 글이 되기를 바라며 적어본다.

1. 영링, Youngling (2010~2013)

2010년은 군대에서 전역을 한 해이다. 나는 이때부터 인생이 뭔가 빠르게 진행되는 편이었던 것 같다. (* 훨씬 빠른 분들이 주변에 있는지라, 빠르다는 말을 입에서 꺼내지는 잘 못 한다....) 분대장은 일병 때 달았던 것으로 기억한다. 상병 말쯤엔가 분대장을 넘겨주고 인생에 대한 고민을 시작했다. 열심히라면 열심히 살았고, 놀았다면 어중간하게 놀았던 20여 년의 인생을 돌아보면서 나는 내 인생을 위해서 무엇을 했는지 고민을 해봤다. 그리고 앞으로 무엇을 할 것 인가도 고민해보았다. 재미를 위해 개발이라는 직업을 선택했지만, 오로지 재미만으로 덤비기에는 나에게 벅찼던 영역이기는 하다. 천재라면 재미로 시작해서 진리에 다가갔을지 모르지만, 최소한 나에게 만큼은 천재의 DNA가 없었는지 진리에 조금이라도 다가가려면 공부라는 과정이 필요했던 것 같다. 군대 복무를 마치고 인생을 진지하게 설계하기 위해 꾸준히 운동하면서 텐션을 유지하도록 힘썼다. 그리고 학과 공부를 진짜로 열심히 했다. 내 인생에서 공부를 공부처럼 한 시기는 이때가 유일한 듯하다. 요즘에 하는 공부는 먹고살기 위해서 혹은 내가 가진 노하우를 조금이라도 공유해서 남에게 도움이 되기 위해서가 크다. 아무튼 대학교에서 나름 공부를 열심히 하면서 우수한 성적과 장학금을 받으면서 졸업을 했다. 여느 대학생들처럼 나는 아무 생각 없이 무조건 대기업에 들어가고 싶어 했다. 왜냐면 멋있으니까 ㅎㅎ 여느 대학생들처럼 인턴과 공채 면접을 보면서 4학년을 보낸 것 같다. 소소하게 웃지 못할 에피소드들이 생겼지만 이야기가 길어지니까 여기서 거두절미하고, 결론은 모두 탈락. 이때가 2013년 봄이었던 것 같다. 봄 햇살은 그 어느 때보다 따뜻했고 사회에서 나를 필요로 하지 않는다는 냉담한 현실은 차가웠다.

대학교 지도 교수님을 찾아갔다. 내가 깨고 넘을 수 없었던 사회의 벽을 허물어주거나 사다리를 놓아주시지 않을까 하는 기대감도 없지 않아 있었던 것 같다. 그분이라면 나에게 해답을 주지 않을까 하는 작은 희망도 품었다. 정확한 면담 시간은 기억이 나지는 않지만 나름 여러 얘기들이 오갔던 것 같다. 교수님께서는 뭘하고 싶은 지에 대해서 많이 여쭤보셨다. 그래서 면담 끝에 내린 결론은 '하고 싶은 것을 하자' 였다. 나는 하고 싶어 하는 것이 없던 학생이었다. 물론 뭔가 만드는 것이 재미있어서 컴퓨터공학과를 왔지만, 나에게 학생으로서 주어진 미션들을 해결하다 보니 졸업이었다. 나는 무엇을 만들고 무엇을 하고 싶은지에 대한 구체적인 그림이 없었던 것 같다. 지금 기억하기로는 3주 정도 (* 여기서 fix 하자. 왜냐면 이 기간이 매번 말할 때마다 바뀐다. 이제 기억력이 안 좋아진 듯....) 되었던 것 같다...... 학교에서 배웠던 기술들을 집에서 직접 해보면서 나에게 맞는 것과 하고 싶은 것에 대한 탐구를 시작했다. MFC, WPF, PHP, Javascript, JSP, Java, Python, Linux, Window phone, Android, iOS 등 내가 배운 것에 한해서 거의 다 해본 것 같다. 결론은 iOS였다. 서버 쪽의 프로그래밍은 화면이 없어서 지루해 보였으며, Linux는 터미널을 붙잡고 씨름하는 과정이 힘들었다. 데스크톱은 IDE 자체가 워낙 기능이 많고 복잡해서 기존의 전문가들을 따라 잡기가 두려웠으며, Android는 지금과 같이 개발 환경이 편리하지 않아 고생이 심해 보였다. 결국 IDE가 깔끔하고 Document가 잘 되어 있으며, 내가 좋아하는 Apple을 따라 iOS 개발자가 되기로 결심했다. 지금 생각해보면 Xcode가 깔끔했던 이유는 기능이 별로 없어서 였던 것 같다. 왜냐면 지금은 좀 너저분해 보이기 때문이다. 그렇게 하고 싶은 것이 분명해지니까 취직하고 싶은 회사를 고르기도 한편 수월해졌다. 그렇게 나는 첫 회사에 들어갔다.

2. 파다완, Padawan (2013~2017)

첫 회사에서는 나름 빠르게 업무에 적응해 나갔던 것 같다. 아직도 기억하는 것이 기존 서비스를 copy 하는 것을 첫 미션으로 받았다. 사수분께서 내가 어느 정도 하는지 퍼포먼스를 측정하고 싶었던 것 같다. 네트워크는 안 붙여도 되고 UI와 인터랙션만 copy 하면 됐다. 나에게 일정을 물어보셨고 '3일'이라고 대답했다. 사수 분께서는 타이트하다고 하셨고 '5일'을 주겠다고 하셨다. 당연히 나는 3일 만에 끝내고 부족한 부분을 찾아가면서 Xcode에 있는 기능을 이리저리 시험해보고 있었다. 그 당시에 사수 분께서는 내가 만든 것이 괜찮다고 생각하셨던 것 같다. 왜냐면 그다음부터 바로 실전에 투입되었으니까.... 나중에 돌아보면 3번째 회사에서 신입분들을 가르치면서, ‘나도 이런 교육을 신입 때 받았으면 어땠을까'라는 생각을 하기도 했었다. '부러움 반, 시기 반'의 감정이었을지도 모른다.

나는 디자인 패턴을 좋아하던 아이였다. 모든 문제를 디자인 패턴과 알고리즘으로 해결해 나가기를 좋아했다. Deview 2020에서도 발표했지만 난 참 디자인 패턴을 사랑한다. (* Deview 2020 발표 영상) 회사에서 끊이지 않는 버그로 QA 단계에서 기간이 촉박할 때, State pattern이나 Strategy pattern 등을 이용해서 문제를 해결하기도 했다. 여러 프로젝트에서 참 요긴하게 써먹었던 것 같다. 그리고 디자인 패턴이라는 물건이 참 유용한 것은 사실이다. 하지만 나중에 안 사실이지만, 그 때는 디자인 패턴을 너무 빡빡하게 써서 경직된 코드를 생산했던 것 같다. 디자인 패턴을 모르거나 의도된 설계 외로 기능을 확장하려 하면 손 데야하는 것이 많아지는 Side effect가 생기는 사례들이 발생한 것이다. 이때 느낀 것이 도구는 도구일 뿐이라는 사실이다. 우리는 알게 모르게 디자인 패턴이나 아키텍처들에 경도되거나 숭배하게 된다. Trend를 따라가는 멋있는 개발자 혹은 어려운 문제를 풀기 위한 나만의 공식을 알고 있는 유능한 개발자로 보이기 때문이다. 그런데 너무 심취하다 보면 잘난 척하거나 위에서 언급한 바와 같이 경직되어 확장성이 없는 코드를 만들어 유지/보수의 비용을 늘려버리는 결과를 초래하기도 한다. 우리는 도구가 많을수록 좋다. 문제를 풀기 위해 다양한 도구를 대입하고 유연하게 문제를 풀 수 있다면 이것이 진짜 큰 능력이 아닌가!! 단지 내가 사랑하고 아끼는 도구가 이번에는 적합하지 않을 때, 다시금 생각해보는 여유와 현명함은 필요한 것 같다. 본인이 항상 답은 아니고, 남의 답이 맞는지 틀리는지에 대한 최소한의 검증은 필요한 것 같다.

그렇게 첫 회사에서 1년 반 정도의 시간이 흐른 것 같았다. 어느 회사든 1년 이상 다니면 적응 하기 마련이다. 나름 회사에서 아는 사람도 많이 생기고 방귀 좀 뀐다고 할 수 있게 된다. 그때 나에게 또 다른 충격이 다가왔다. 회사 선배님의 소개로 나갔던 커뮤니티에서의 일이었다. 1년이 지나 '신입'이라는 딱지를 떼고 만나는 개발자들과의 소통에 대한 기대가 컸던 것 같다. 지금이야 '신입'이고 싶지만, 그때는 '신입'이라는 글자가 창피했던 것 같다. 그런데 여기서의 충격은 뒤풀이 자리에서 개발 얘기를 하는데 그 대화의 절반을 못 알아들었다는 것이다. 나에게는 정말 충격이었다. 솔직히 아직 경력이 2년 미만이라, 지금 보면 갓난이지만 그래도 개발자인데 스스로 너무하다는 생각이 들어서 자책했다. 경력 2년 미만의 주니어 개발자는 그 자리를 겪으면서, '앞으로 더 많은 시간을 이 업계에서 보낼 텐데..... 시장에서 매장당하기 딱 좋겠다'라는 걱정부터 앞섰다. 발전이 없고 무지해져 가는 나의 미래 모습이 그려지기 시작했다. 이렇게 가만히 있을 수는 없을 것 같았다. 이때부터 스터디에 나가거나 발표자로서 나서기 시작했던 것 같다. 동기를 부여하기 위해서 발표 자리마다 손을 들었고, 스터디를 만들기도 하고 따라다니기도 했다. 스터디를 통해서 많이 배웠다. 절반도 못 알아듣던 대화에서 어느 순간 점점 알아듣는 말들이 많아지고, 나중에는 대화를 주도하게도 되었던 것이다. 그렇게 보내던 중에 첫 이직의 유혹이 찾아왔다. 이때가 2015년 가을이었던 것으로 기억한다.

여느 개발자들처럼 Linked-in을 통하여 헤드헌터분께 연락을 받았고 나름 준비하면서 잃어버렸던 이력서나 면접의 감을 되찾아 갔던 것 같다. 그렇게 SKT에 합격을 했다. 너무 가족같이 지냈던 회사였던 지라, 최종 면접 볼 때쯤에 친한 분들에게는 진행 중인 사실을 공개했던 것 같다. 하지만 최종면접까지 합격하고서는 중소기업 상생법으로 인하여 입사 취소를 겪었다. 친한 몇몇 분께서는 이미 술자리에서 나의 진행 중인 사실을 얘기하셨고, 회사에서는 이미 공공연히 나는 나갈 사람으로 점찍어있었다. 어느 순간, 나갈 사람이 아닌 나가야 하는 사람처럼 내 스스로 느껴졌다. 회사에서는 TO 등의 이유로 사람이 나가고 들어가는 문제에 민감한 것은 사실이다. 하지만 나를 둘러싸고 있는 전체가 나를 나갈 사람처럼 대우한다면 회사를 다니기 여간 피곤한 일이 아닐 수 없다. 그래서 요즘에도 주니어 분들에게 이직을 할 때는 입사일이 확정되는 그 순간까지 발설하지 말라고 한다. 심지어 나에게 조차도 말하지 말라고. 회사와 동료는 나의 인생을 책임져 주지 않는다. 결국에는 자기가 살아남아야 한다. 동료들과 서로 도움을 주고받고 친해질 수 있지만, 최종 결정과 책임은 오로지 본인에게만 존재하는 것이다. 그렇게 나는 나가야 하는 사람으로서 열심히 이직을 시도했고 2번째 회사에 당도하기 이른다.

2번째 회사까지는 막내로 살았다. 선배 노릇도 해보고 싶었지만 나름 막내가 편했다. 양쪽으로 눈치 볼 필요가 없기 때문이다. 2번째 회사에서는 협업과 정확성에 대해 많이 배웠던 것 같다. PT(Point)와 PX(Pixel)의 차이를 안 것도 이 시기이다. 일을 잘하기 위해 노력했지만 제대로 알고서 하는 것이 중요함을 느꼈던 시기인 것 같다. 이때부터 무언가를 배울 때에는 깊게 파려고 노력했던 것 같다. 얼추 안다고 넘어갔다가 피보는 일이 언젠가는 생긴다. 물론 지금도 게으름과 무지가 나에게 더 깊게 갈 필요가 없다고 손짓하지만, 그것을 이겨내기 위해 발버둥 치면서 파내려 가곤 한다. 디자이너와 기획자 분과 협업하면서 새로운 도구들도 경험하고, UI와 Animation 등을 다루면서 프로그래밍에서 벗어나 UX 등에 관해서도 이해를 하게 된 듯하다. 아무래도 모바일 개발자는 다른 개발자와 다르게 한정된 화면에서 최고의 경험을 고객에게 선사하기 위해 노력해야 한다. 그리고 다른 플랫폼에 비해서 경험을 생산하기 위한 자원들이 넉넉한 편이다. (가속도계, 카메라, 자이로 센서, 자기력계, 마이크, 스피커 등. 메모리는 부족할지 모르지만...) 이를 최대한 활용하고 디자이너와 기획자들과 고민을 같이 하면서 최고의 경험을 고객에게 선사하기 위해 노력했던 것 같다. 그 과정에서 다른 직군의 지식도 좀 듣게 되고, 그 사이의 갭을 메우기 위해서 개발 영역에서도 공부를 더 하게 되었던 것 같다. 구체적으로 기획자들과 디자이너들의 요구사항대로 구현하기 위한 여러 가지 기술과 트릭들을 공부했다. 그리고 뭔가를 위해서 직군에 상관없이 격렬하게 토론하기도 했다. 이상하게도 이때는 열띤 토론으로 서로 상처받을 것 같지만 회의가 끝나면 모두 쿨가이가 되어 회의실을 떠났다. 이 또한 나에게는 새로운 경험이었다. 그렇게 2번째 회사에서의 생활이 지나갔다.

* 글을 적다 보니 생각보다 길어졌다. 소소한 이야기는 배제하고 굵직했던 사건 위주로 적었지만... 어느샌가 나이를 먹어서 라떼 이야기하는 것에 재미가 들린 듯하다. 챕터 3은 다음에 이어서 적는 것으로 해야겠다. '8년 11개월의 개발자 소회'가 되기 전에 적어보는 것을 목표로...

P. S. [Life] '8년 10개월'의 개발자 소회.1 - https://maskkwon.tistory.com/m/296