210429 Be you, only better - 과거의 나와 현재의 나에 대한 자기반성

자기반성

지난 과거의 나와 현재의 나 그리고 두려움을 극복하기 위한 자기반성

이번 포스팅에서는 나의 내적으로 좀 의미있는 반성의 시간을 갖으며, 글을 작성해보려고 한다.
반성이 없는 계획과 발전은 의미가 없기 때문에 시간이 많이 흘렀지만, 지난 나의 과거를 다시 되새기고 현재 내가 걱정하는 것과 두려워하는 것을 구체화시켜서 현재의 나를 좀 더 발전시켜 나가고자 한다.

우선 현재의 나는 프론트엔드 개발자로서 취업을 준비하고 있고, 내가 지원하고자 하는 포지션에서 필요로하는 기본적이고 중요한 기술적인 부분을 스스로 공부하며 자기개발을 해나가고 있는 중이다.

현재의 나에게 있어, 가장 큰 두려움은 제대로 된 개발자가 될 수 있을까?이다. 나에게 있어 제대로 된 개발자란, 자기개발을 꾸준히 하고, 견고한 어플리케이션 개발에 대해 끊임없이 고민을 하며, 내가 하는 일과 어플레케이션에 대해 자부심을 가지는 개발자가 되는 것이다.

나는 2018년 10월부터 2020년 4월 17일까지 짧다면 짧은 1년 반이라는 시간동안 일본에서 개발자로 일을 했었다. 그때 당시 내가 개발자로서 일을 하면서 느꼈고, 현재 내가 가지고 있는 두려움에 영향을 준 경험에 대해서 적어보며 직접 이 두려움에 직면해서 극복해보려고 한다.

현재 나에게 가장 큰 영향을 준 계기는 6개월간 담당했었던 헬스케어 관련 안드로이드 어플리케이션 개발경험과 3개월 간 일본 대기업에 파견을 가서 담당했던 개발업무 그리고 퇴사하기 전 마지막으로 담당했던 뉴스 웹 어플리케이션 유지보수 업무였던 것 같다.
이 세 가지 업무에 있어서 공통점은 내가 작성한 코드에 대한 코드리뷰나 피드백이 없었거나 있었다고 하더라도 정말 시간에 쫒기듯이 지나갔던 그런 간단한 피드백이 있었던 업무들이었다.
두 번째 공통점은 첫번째 공통점과 같은 맥락의 내용이지만, 업무를 함에 있어 제대로 된 조언을 받을 수 있는 시니어 엔지니어가 없었다는 점도 있다.

간단하게 공통점들만 추려서 이야기를 했지만, 정말 프로젝트 하나 하나 해나가며 느꼈던 점은 “이렇게 개발하면 안되는데” 라는 자기 고민과 내 커리어에 대한 걱정이었다. 물론 걱정만 한 것은 아니다. 회사가 끝나고 스스로 인터넷의 여러 컨텐츠들을 보며 스스로 자기개발을 한적도 있다. 하지만 실제 회사에서의 업무와 자기개발 사이에서의 괴리감이 컸기 때문에 꾸준히 자기개발을 이어가지는 못했다.
하지만 이러한 경험을 통해서 내가 배웠던 것은 제대로 된 개발을 위해서는 코드리뷰개발문화가 잘 정착된 그런 회사에서 일을 하며, 끊임없이 자투리 시간을 활용하여 개발관련하여 자기개발을 해나가야 된다는 점과 테스트 코드 작성코드 리팩토링을 통해 더 견고하고 확장성 있는 어플리케이션 개발에 대해 끊임없이 고민을 하고 자기발전을 해야 좋은 개발자로 성장로 성장 할 수 있다는 것이다.

이전에 일본에서 개발 업무를 하면서 코드리뷰나 테스트 코드 작성에 대해서 업무에 도입을 하고 싶었지만, 일주일에 몇 번이고 릴리즈를 해야되는 업무환경과 최대한 단기에 많은 프로젝트를 끝내야 하는 근무환경, 돌아가면 다 된다는 식의 마인드를 가진 영업같은 개발부서 담당자와의 마찰로 인해서 그런 부분은 많이 어려웠다.
그래서 지금 나의 가장 큰 목표는 사내에 제대로 된 개발문화가 잘 정착된 회사에 입사하는 것이고, 내가 하고자하는 프론트엔드포지션에 적절한 퍼포먼스를 내며 업무를 할 수 있는 회사에 들어가는 것이다.

그러기 위해서 개발관련 회사들의 기술 블로그에 대해서 분석을 하며, 내가 이상적으로 생각하는 기업에 입사하기 위해서는 어떤 것들이 준비되어야 하는지 살펴보았다. 공통점은 바로 다른 개발자들과의 협업이 가능한 개발자테스트 주도 개발(TDD), 사용하는 기술에 대한 기본기가 있는 개발자라는 공통 키워드가 있었다.
회사에서는 혼자 일을 하는 것이 아니기 때문에 다른 개발자들과 커뮤니케이션이 매우 중요하다. 개발자들과 원할한 커뮤니케이션을 하기 위해서는 개발 업무에서 자주 사용되는 용어에 대해서 잘 알고 유연하게 남들과 소통할 수 있는 커뮤니케이션 능력이 필요하다.
또한 테스트 주도 개발(TDD)은 작성한 코드들을 모듈화시키고 유지보수나 코드 리팩토링시에 테스트 자동화를 통한 빠르고 견고한 어플리케이션 개발을 하는데 필요하다.그리고 내가 작성한 코드에 대해서는 한 줄 한 줄 모두 이유를 설명할 줄 알아야 한다.

사실은 이런 내용들은 익히 알고 있었지만, 퇴사후 취업준비하는 5개월동안은 취업준비라는 명목하에 개발을 하다보니 급한 마음에 위에서 언급한 나의 마음가짐을 간과하고 무작정 제출하기 위한 프로젝트들을 만들어내기 바빴다. 속으로는 이러면 안되는데라는 생각은 있었지만, 어쩔 수 없다는 자기합리화로 퇴사후 초반 5개월 동안은 그렇게 보냈었다.
물론 되돌아보면 아예 의미없었던 시간은 아니었다. 현재는 제대로 다시 마음을 고쳐먹고 4개월의 시간동안 지난번에 그냥 썼던 개발관련 개념들을 기본적인 개념들과 함께 하나 하나 이유를 공부하고 진행을 하면서, "아, 이게 이래서 이렇게 쓰는구나!"라는 깨달음의 순간들이 정말 많이 찾아왔고, 이러한 중간 중간의 희열감을 통해 더 앞으로 나아가는 나 자신을 발견할 수 있었다.

그런데 현재 나에게 또 다른 걱정아닌 걱정이 생겼다. 바로 사이드 프로젝트를 함에 있어 약간의 걱정과 두려움이 생긴 것이다.
TDD에 대한 개념과 프로젝트에 도입하는 방법에 대해서 개인적으로 깃허브의 레포지토리를 파서 연습도 해보고, 내가 사용하고자 하는 기술스택에 대해서 좀 더 깊이있게 공부를 하며 블로그에 포스팅도 하였다. 이러한 작업을 통해 내가 이전에 알고 있다고 착각했던 개념들에 대해서도 구체화를 시킬 수 있었는데, 막상 프로젝트를 하려고 하면 나의 내면에서는 "잘 할 수 있을까?" 라는 의문이 생겼다.

여지까지 개발관련 리소스가 부족했었기 때문에 부족한 개발관련 리소스를 쌓기 위해 노력을 해왔고, 지금은 여지까지 쌓아온 개발 리소스들을 통해 실체를 만들어서 나 자신의 개발 실력에 대해서 증명을 해야한다.
'두려움은 거짓 증거가 실제처럼 보이는 것이라고 한다.'
내가 지금 이 블로그 포스팅을 하는 이유는 내가 현재, 아니 과거에서부터 걱정을 해왔던 부분들에 대해 좀 더 구체화를 시키고, 직접 대면하기 위해서이다.

오늘부터 본격적으로 내가 여지까지 공부하고 진행했던 내용들에 대한 결과물을 만들어내려고 한다. 프로젝트들은 단순히 제출용이 아닌 내가 여지까지 어떤 공부를 해왔고, 내가 개발에 있어 어떤 부분을 중요시 여기는 개발자인지 보여주기 위한 중요한 부분이라고 생각한다.

프로젝트를 진행할때에는 모든 작업에 대해 Issue를 작성하고, 작업한 내용들은 git flow model로 브랜치도 관리하며 commit 메세지도 꼼꼼하게 적도록 하자. 그리고 작업한 내용들 중에서 내가 중요하다고 생각되는 내용이나 내가 프로젝트를 하면서 깨달은 내용들에 대해서는 반드시 README와 블로그에 꼼꼼하게 글을 남기도록 하자.
추가적으로 모든 프로젝트들은 간단하게 와이어 프레임을 짜고, TDD 방식으로 테스트 코드를 작성해나가며 진행을 해나가도록 한다.

두려움은 거짓 증거가 실제처럼 보이는 것이라고 했다. 뭐가 두려워서 이렇게 머뭇거리고 있는 것인지 모르겠다. 더 이상 두려워하지 말고, 나 자신에 대해 할 수 있다는 믿음을 가지고 더 성장하기 위해서 한 발 내딛어보자.