Memoir

[M] 2021년 상반기 이전의 회고록 - 2018년

anothel 2021. 6. 27.

2017년 4월부터 지금까지 쭈-욱 이어온 개발자로서의 삶을 반추하고, 무려 4년씩이나 방치되어있던 기억들을 이제야 정리하려고 한다.

 

2021년에 반추하는 2018년


1敗

 

1. 무모한 도전(feat. 철저한 준비 없는 도전은 실패만을 안겨줄 뿐이야)


이 전 팀에서 함께 일하던 C# 개발자분이 3N 중  한 곳으로 이직한다는 소식을 접했다. 1년 정도 경력을 쌓고 이직하는 모습을 보고 '아! 나도 열심히 하고 또 잘하면, 서울로 대기업으로 갈 수 있구나'라는 막연한 생각을 갖게 됐다.(오만방자한 태도이며 큰 오산이었다.) 왜냐하면 그분은 신입임에도 불구하고 중고 신입처럼 모르는 것 못하는 것이 없었다. 반면 나는 간신히 이 회사에 들어와 열심히 하긴 했지만 잘하기 위해 열심히 했으며, 탑을 달릴 정도로 잘하는 건 아니었고, 그렇다고 준비를 철저히 하는 것도 아니었다. 그래도 일단 지원했다.(그렇다, 무모한 도전이었던 것이다.) 결과는 탈락의 연속이었다. 간혹 어쩌다 서류가 통과하여 면접을 보게 되면 엉엉 울 정도로 멘털이 탈탈탈 털려서 돌아왔다.

 

2敗

 

2트 때는 전형이 조금 어려웠다. 서류-> 과제-> 필기시험-> 실기-> 기술면접->... 순서였다. 스레드 3개를 만들어서 각 주기별로 출력하는 문제의 과제를 제출했다. 그렇게 과제 전형에 통과 후 면접. CS 기초 지식 및 C/C++ 관련 기초 지식에 대한 필기테스트를 봤다. 그리고 클래스 생성 및 다양한 C++기법을 사용하기 위한 프로그램을 개발하는 실기 테스트를 수행했다. 이렇게 정신없이 필기/실기 테스트를 3~4시간에 걸쳐서 마치고 나서 바로 면접을 봤다.(지금 와서 드는 생각이지만 그 당시 난 정말 많이 부족했다.)

정말 혼이 쏙 빠지도록 면접을 봤고, 또 혼났다. 거기에 이런 유형의 면접이 처음이어서 헛소리만 하다가 돌아온 거 같다. 내가 면접관이었다면 절대 뽑지 않았다. 그리고 다시는 서류에 통과하지 못하도록 조치해야 할 정도라고 생각한다.(그래도 나중에 기회가 된다면 다시 지원해볼 예정이다.)

 

3敗

 

이번 채용은 블라인드여서 문제가 많이 어려웠던 건지, 준비가 부족한 내가 모자란 건지 모르겠다.(사실 둘 다이다.) 거의 손도 못 대고 시간만 갔던 것으로 기억한다. 아, 많이 부족하구나, 더 많이 준비해야 하는구나를 깨닫게 해 줬다. 하지만, 당시의 나는 부족한 실력과 준비에도 불구하고 무모한 도전을 계속했다.

 

4敗

 

지금 생각해보면 당시의 나는 여러 번의 도전을 했다.(최소한 10트 정도는 채웠던 것 같다.) 하지만 과연 어떤 준비를 했는가에 대해서는 쓰려고 해도 쓸 내용이 생각이 나질 않는다. 시간이 오래돼서 그런 것일까?(아니다, 안 해서 그렇다. 기록이라도 해놨다면 기억할 수 있을 텐데)

 

2. 하고 싶은 건 다 해야지(feat. 이직 전쟁의 패배 그리고 두 번째 회사)


그랬어야만 했었다,

 

결국 나는 (그렇게 갈망하던 위치인) 판교의 한 블록체인 기업에 입사를 했다. 판교, 서울 쪽으로 이직하는 게 목표이기도 했고, 동시에 앞자리를 바꾸고 싶었다.

분명 면접 볼 당시에는 입사 후 3개월 동안의 평가를 거쳐 앞자리를 바꿔준다고 했는데 입사하고 나서는 그냥 바로 정규직으로 하는 대신에 연봉을 조금 낮추자고 했다. 나는 그러자고 할 수밖에 없었다.

당시의 나는 세상 물정을 잘 몰랐던 것 같다. 더군다나 잘 다니고 있던 아주 건강하고 튼튼한 친정 회사를 버리고, 스스로의 선택으로 하고 싶은 걸 다 실천하던 터라 다른 생각할 틈이 없었다. 심지어 집 문제도 해결이 안 되어서 약 7개월 정도 고시원 생활을 했다.(아마 이때 2차적으로 내가 많이 망가진 것 같다. 의식주의 소중함을 처음으로 느꼈다.)

판교에 올라오고 고시원에서 남는 시간에 책도 좀 읽고, 공부도 좀 할법한데, 그러지 않았다.(지금 생각해보면 문제 투성이었다.) 대신 회사에서만큼은 정말 열심히 했다. 아마도 SI업체와 블록체인 스타트업 기업에서 배운 것들을 바탕으로 지금 먹고살고 있지 않나 싶을 정도로 두 기업에서 다 배웠다고 해도 과언이 아니라 생각한다.

이 회사에서는 블록체인이 무엇인지 암호화폐가 무엇인지를 공부했고, 직접 구축한 리눅스 가상 환경에서 비트코인, 이더리움 등 다양한 암호화폐를 분석하며, C/C++과 golang의 랭귀지를 다졌고, 분석기법과 노하우를 터득했다.

 

3-1. 얻은 것들(feat. 이직 준비보다 더 중요했던 그런)


이직과는 별개로 개발일을 하면 할수록 늘어나는 실력(이라기보단 노하우)이 눈에 보였다. 왜냐하면 그 전의 실력이 바닥이었기 때문에 혹은 실력이라고 할 만큼의 경험을 쌓지 않았기 때문일 것이다.

다뤄야 하는 코드의 양이 50만 라인 이상의 상당히 거대한 레거시 코드였기 때문에, 수정하기가 까다로웠다. 더군다나 임베디드 기반의 애플리케이션 코드이면서, 이미 상용화 및 양산에 들어간 코드였기 때문에 아주 철저히 설계된 메모리 구조로써 타이트하게 짜여있었다. 그래서 조금의 수정이나 잘못된 메모리 접근이 있을 시에 프로그램은 셧다운 됐다.(신기하게도로그램이 죽고 어버리고 나서 탱크는 멈추면 안 되기 때문에 재부팅이 됐다.) 하나씩 하나씩 정신 똑바로 차리고 코드를 제대로 수정해야만 했다.

그리고 국방 SW 신뢰성 테스트를 수행해야 했는데, 그간 짜 놓은 많은 양의 위험수위 높은 코드들이 쏙쏙 스니핑 됐다.(CodeSonar를 사용했었다.) 물론 하나씩 하나씩 정신 똑바로 차리고 제대로 그리고 모두 수정했다. 이건 팀원 8명 중 나에게만 쥐어진 특권(?) 같은 것이어서 남몰래 기분 좋은 마음으로 모두 뜯어고쳐버렸다. 그러면서 마틴 파울러 저서의 리팩터링 책을 접하게 되었는데, 이 책을 보며 지금 내가 짜 놓은 코드에 어떻게 적용할 수 있을까에 대해서 엄청나게 고민을 했다. 어떻게 해서든 다 적용시키고 싶었다.(스스로가 독서를 통해 다른 사람의 기술을 취득하고 내 코드에 적용하는 그 짜릿함은 말로 이루 다할 수 없다. 다음에 시간 내어 리팩터링의 기술에 대해서 한번 더 분석해야겠다.)

개발자라면 반드시 소지해야 한다고 생각해왔던 정보처리기사를 취득하기도 했다. 정말 엄청난 우연이고 천만다행이라고 생각한다.(3트 만에 성공하여 취득한 건 우리들끼리의 은밀한 비밀로 남았으면 한다.)

 

3-2. 기억 혹은 추억(feat. 그리운 건 그대, 혹은 나의 그때)


아무래도 친정 회사이다 보니 기억할 거리도 많고 추억할 거리도 많은 것 같다.(이런 회사를 너무나도 쉽게 떠난 것 같아 아쉽지만 지금 와서 후회하면 무엇하랴.)

프로젝트 초기에는 팀장님이 안 계셨다. 기존 팀장님께서 퇴사하신 후 장기출장 가셨던 차장님이 오셔서 팀장님이 되셨다. 사실 업무 분장도 엉망, 환경도 엉망, 본인도 엉망 등 모든 게 엉망이었다. 하지만 팀장님의 탁월한 리더십과 다른 팀원분들의 능력으로써 많은 부분 개선되고 해결됐다고 생각한다.(본인은 거들었을 뿐)

거의 매일 야근을 했다. 정말 거짓말 없이 일주일에 딱 5일 정도 야근을 했다. 당시 나는 크로스핏을 했었는데 다행히도 크로스핏 클래스가 9시 이후에도 있어서 야근 후 운동을 갔다. 집에 가면 쓰러지고 다음날 출근하고.(반. 복.)

한 번은 회의에서 의견을 내기도 했다.(나는 단지 브레인스토밍 방식의 회의라고 생각해서 자유롭게 의견을 냈을 뿐이었다.) 당시 1,2차 개발자와 3차 개발자를 나눠서 따로 개발을 진행하고 있었다. 문제는 3차 시제에서 자꾸만 새로운 기능이 추가되는 것이다. 이렇게 추가되는 기능들은 1,2차에도 적용이 되어야만 했다. 당시 나는 1,2차 개발자였는데 자꾸 새로운 기능이 3차에만 추가되고 한참 후에야 그 사실을 알게 되어서 코드를 롤백을 한 적이 한두 번이 아니었고, 이게 너무 비효율적이라고 생각했다. 그래서 개발자 모두 3차에 붙어서 개발을 마친 후 1,2차에 붙자고 제안했다.(지금 생각하면 사실 별거 아닌 걸로만 보이는데 이 당시에는 이걸 설득시키는 게 왜 이렇게 어려웠는지 모르겠다.)

3차 시제는 Qt에서 작업하다 보니 따로 장비가 필요하지 않았고, 윈도에서 테스트가 가능했다. 반면, 1,2차 시제는 장비에서만 테스트가 가능했었는데, 이 또한 윈도에서 테스트했으면 좋겠다고 환경을 요청했다. 이게 양산된 지 10년도 더 된 장비이다 보니 빌드 및 테스트 환경이 WinXP에서만 가능했고, 이러한 환경은 프로젝트를 수주했던 NXX1에서 주어야만 할 수 있는 것이었다.

나의 의견은 100% 적용되어 모든 개발자는 3차 시제에 붙어서 각 파트를 나눠 업무 분장했고, 추후에는 구축된 1,2차의 테스트 개발 및 테스트 환경(데스크톱, 리눅스)에서 개발을 진행했다.(정말 뿌듯한 상황이었다.)

 

3-3. 첫 회사의 근무강도(Lvl: 99)


근무강도는 정말 강력했다. 작성해야 하는 문서는 2000 ~ 2500장 정도 됐던 것 같다. 매일 야근을 하기도 했고, Ot, Dt&e 테스트 시에는 탱크가 있는 홍천으로 가야 했다. 월요일 새벽에 출발해서 금요일 밤에 내려왔다. 힘들었지만 재밌고 추억에 남는 그런 시절이다.(가끔은 그때의 내가 그립다.)

 

4. 마무리


지금 와서 회고해보니 당시의 나는 원하는 것을 쟁취하기 위하여 취해야 하는 노력에 대한 분석이 조금 부족했다. 혹은 내가 원하는 것이 무엇인지에 대한 분석이 부족했던 것 같다. 이를 보완하려면 다른 사람들은 어떤 생각을 갖고 어떻게 살아가는지 알아보기 위해서 다양한 분야의 독서를 했으면 어땠을까 하는 생각이 든다.

 

댓글0