개발자로서의 첫 1년을 회고해보자
벌써 2021년의 끝자락에 와 있고, 나도 이제 정식 개발자로 일한 지 만 1년이 되었다. 더 힘차게 성장하는 2022년을 위해 올해를 짤막하게 회고해보려고 한다. 학교를 벗어나 회사에서 처음 일하면서 느낀 점들을 많이 적을 것 같다. 1년동안 어떻게 성장했는지 당당하게 작성하고 싶었는데, 조금은 스스로에게 박한 글이 되지 않을까 싶다.
회사 업무에 익숙해졌다
회사에서는 모든 것이 협업으로 이루어진다. 이런 변화된 환경 속에서 개발을 하게 된 것이 가장 큰 변화인 것 같다.
무언가 변경을 만들어야할 때 대략 다음의 과정을 따르게 된다. 비즈니스 요구사항을 리뷰하면서 무엇을 구현해야 하는지, 구현이 가능한지, 언제까지 가능한지를 판단한다. 일정이 합의되면 개발을 진행한다( 개발하기 전에는 필요하다면 설계 피드백을 받는다). 코드 리뷰가 완료되면 배포하고, QA에서 버그가 발견되면 수정한다. 마지막으로 운영환경에 배포가 되면 모니터링을 진행한다. (물론 모든 일이 선형적으로 이루어지는 것은 아니었다. 요구사항 파악 단계에서 미리 파악하지 못한 스펙 상 구멍이 있어서 이후의 단계에서 급하게 논의하게 되는 일들도 꽤 있었고, 내가 규모감을 잘못 파악해서 일정에 차질이 생기기도 했다.)
이런 수많은 협업 속에서 깨달은 것은 개발이란 비즈니스 가치를 만들어내기 위한 도구라는 것이다. 자사의 비즈니스를 이해하고 구현하는 것이 개발자에게 매우 중요하다는 것을 느끼고 있다. 요즘 개발자 몸값이 올라가고 있지만, 사업이 성공하기 위해서는 결국 비즈니스 방향성이 중요한 것 같고, 잘 되는 비즈니스를 만드는 것이 개발자에게도 큰 행복인 것 같다. 이런 건 학교에서 공부할 때는 전혀 알 수 없었던 부분이다.
다른 직군에 비해서는 훨씬 적다고 생각하지만, 생각보다도 개발자는 소통할 일이 많다. 그래서 개발자에게 커뮤니케이션 능력을 많이 강조하는 것 같다. 설계나 코드 리뷰 과정에서 동료 개발자들과도 많은 이야기를 하고, 스펙과 일정 관련해서 다른 직군과도 많은 의논을 한다. 처음에는 아는 것이 너무 없어서 말하는 것 자체가 너무 무서웠다. 여전히 커뮤니케이션은 쉽지 않지만, 이제는 회사 시스템과 담당 도메인에 많이 익숙해져서, 이제 주 담당자로서 이야기하는 것에도 많이 익숙해졌다.
개발자로서 제일 많이 달라진 것은 코드를 읽는 속도가 이전보다 훨씬 빨라진 것이다. 이전에는 남의 코드를 읽는 것이 힘들었다. 작성자의 의도를 파악하는 데 시간이 정말 오래 걸렸다. 그런데 현업에서는 코드를 직접 작성하는 시간보다 남의 코드를 읽는 시간이 훨씬 많기 때문에, 코드를 잘 읽을 줄 알아야 한다. 심지어 회사의 코드는 규모도 방대하다. 첫 작업을 할당받았을 때, 복잡하기 그지 없는 코드를 헤매며 너무 고생했다. 너무 코드가 복잡해서 종이에 클래스 이름을 적어가면서까지 파악했었던 기억이 있다. 이제는 회사 코드를 네비게이션하며 파악하는 속도가 매우 빨라졌다.
코드의 히스토리를 파악하는 것도 빨라졌다. 내가 일하는 조직은 운영 중인 서비스의 연차가 꽤 된 만큼, 작업을 시작할 때 히스토리가 중요해질 때가 많다. 일단 커밋 메시지부터 보고, 추가 정보가 필요하면 jira와 위키를 보면서 추가로 정보를 파악한다. 그래도 어려우면 다른 사람에게 물어본다. 이런 과정을 겪을 때마다 기록의 중요성을 많이 느낀다. 나 자신도 몇 개월 전에 했던 작업이 기억이 잘 안나서, jira를 보며 과거의 나에게 도움을 많이 받을 때가 많다. 그래서 미래의 누군가를 위해 작업 배경과 내용을 열심히 기록하려고 노력한다.
디버깅도 빨라졌다. 이건 코드를 읽으면서 디버깅하는 능력이 성장한 것보다는, 회사 업무에 익숙해져서인 것 같긴 하지만... 이슈를 리포트 받았을 때, 배포 상태를 확인하고 로그를 읽으면서 의심 지점을 하나씩 체크해나간다. 아직 운영환경에 대해서는 트러블슈팅을 별로 해본 적이 없어서 여전히 두렵지만, 테스트 환경에서의 파악은 많이 능숙해졌다. 디버깅 과정에서 정말 감사한 것이 로그이다. 정말 로그 없이는 아무 것도 할 수 없어!
그나저나 운영 환경은 여전히 참 무섭다. 운영 환경에서 문제가 발생하지 않게 하기 위해서 모두가 조심하고 있는 것들이 많은데, 사람은 언제든 실수할 수 있기 때문에 가슴이 철렁하는 일들이 종종 생긴다. 지금까지 경험해본 바로는, 사용자가 많기 때문에 절대 해서는 안 되는 변경도 있고, 그렇기 때문에 어느 정도 안고 가는 레거시들도 있다. 혹시나 있을지 모를 버그의 확산을 방지하기 위해서 단계적 배포나 릴리즈를 진행하고, 무언가를 교체하거나 삭제하는 것도 당분간은 as-is와 to-be를 유지하는 것 등도 반드시 필요한 신중함인 것 같다.
이외에도 협업 도구에도 많이 익숙해졌다. git은 이제 익숙해져서 git만큼은 내가 잘 아는 편이라고 자신할 수 있다. 처음에는 복잡하게 느껴졌던 브랜치 전략도 이제는 잘 따르고 있고, 회사의 다양한 도구나 CI/CD 환경에도 많이 익숙해졌다.
약간의 기술적 성장을 이루었다
1년 동안 절대로 만족할 만큼은 아니지만, 돌이켜보면 기술적 성장을 이루어낸 것 같다.
우선은 자바와 스프링에 대한 이해가 깊어졌다(물론 아직 너무너무 부족하다). 사실 학교에서 함수형을 약간 맛보면서 자바 진영은 뭔가 구닥다리 같고 너무 하기 싫었다. 그런데 스프링을 공부하면서 조금 생각이 바뀌었다. 객체 지향이라는 실용적인 아이디어를 기술적으로 매우 잘 구현한 프레임워크인 것 같다. 객체 지향의 철학을 다시 배우고, 비즈니스 로직을 구현하는 데 이 철학이 큰 도움이 되는 모습을 보면서 살짝 감탄을 했었다. 그리고 자바가 오래된 언어이고 verbose하기는 하지만, 계속 언어적으로 발전하고 있기 때문에 잘 공부하고 활용해야겠다는 생각이 든다. 앞으로 자바와 스프링이 다른 기술들에 조금씩 자리를 내어주겠지만, 일단 내가 지금 사용하는 기술을 잘 이해하고 사용하는 것이 다른 기술을 사용할 때도 도움이 될 것이라는 생각이다.
그리고 장기적인 유지보수를 고려하는 개발자가 되어가고 있다. 내가 할 수 있는 한 가독성을 정말 많이 신경 쓰고 있고, 커밋과 코멘트를 잘 활용해서 히스토리를 최대한 잘 파악할 수 있게 하려고 노력하고 있다. 사실 인턴으로 일했던 작은 회사가 코드 퀄리티를 굉장히 중시하는 곳이었다. 그래서 나는 운좋게도 사회에 첫발을 내딜 때부터 클린 코드에 관심을 가질 수 있었다. 그런데 지금 회사에서 일하면서 내가 유지보수를 하는 입장이 되어보니 좋은 코드에 대한 갈증이 더욱 강해진다. 내가 작성하는 코드가 누군가에게 함정이 되지 않기를 바라며 노력하고 있고, 내 작업을 하면서 기존 코드를 정리하거나 쓸모없는 코드를 삭제하는 것도 조금씩 하고 있다.
또 기술적 결정에 근거를 가지려고 노력하고 있다. 학생 때는 사실 작동만 되면 끝이었고, 테스트 케이스만 통과하면 더 이상 신경쓰지 않았다. 그런데 회사에서는 모든 기술적 결정에 반드시 근거가 존재해야 한다. 그 근거가 빈약하거나 시야가 좁을 수는 있어도, "그냥 그랬어요"라는 말은 하면 안 된다. 내가 결정을 못 내리겠으면 선택지를 여러 개 만들고 각각의 장단점을 정리해서 의견을 구한다. 이건 모든 직장인들이 공감할 것 같다.
이 외에도 조금씩 기술적 성장이 있었던 것 같다. 이건 특정해서 말하기는 어렵지만, 입사 초반에는 기술적인 회의를 하면 내용을 거의 이해할 수가 없었는데, 이제는 상당 부분을 이해할 수 있고, 가끔은 내 의견을 낼 수도 있게 되었다. 그동안은 이해하는 것만으로 벅찼지만, 앞으로는 나도 도움이 되는 팀원이 될 수 있도록 더욱 노력해야 할 것 같다.
아직 성장이 절실하다!
사실 커리어적으로 보았을 때 나는 올해가 그리 만족스럽지 않다. 100%는 절대 바라지 않지만(그리고 바람직하다고 생각하지도 않지만), 그래도 더 성장할 수 있는데 너무 되는대로 흘러갔던 것이 아닌가 한다.
학생 때는 주기적으로 진행하는 시험과 과제를 통해 나의 진척도를 정량적으로 평가받는다. 피드백이 잦기 때문에 내가 얼마나 잘하고 있는지 파악하기 쉽고, 좋은 결과가 나오면 해왔던 그래도 계속 잘하면 되고, 안 좋은 결과가 나오면 어떻게 더 잘할 수 있을지 대책을 세우면 된다. 커리큘럼을 성실하게 따라갈 의지만 있다면, 매학기 어느 정도의 성장은 보장되어 있다.
하지만 회사에서의 성장은 자기주도적으로 꾸려나가지 않으면 훨씬 이뤄내기 어려운 것 같다. 커리큘럼 같은 것도 없고, 피드백이 자주 있지 않을 뿐더러 즉각적이지도, 정량적이지도 않기 때문에 바로 행동 강화로 이어지기 힘든 것 같다. 상사로부터 피드백을 받기도 하지만, 상사가 나 하나만 지켜보고 있지는 않다. 스스로 자신의 업무 과정을 돌이켜보고, 실천 방안을 세우고, 다시 피드백 과정을 반복하는 것이 중요한 것 같다. 또한 그저 그런 성과를 낸다고 해서 인생에 당장 큰일이 일어나는 것이 아니기 때문에 자기계발에 소홀해질 수 있는 것도 지속적 성장이 어려운 이유인 것 같다.
1년을 돌이켜보면 업무적으로, 그리고 기술적으로 노력해야 할 부분이 많은 것 같다.
우선 업무적으로는 조금 더 적극적인 자세가 필요할 것 같다. 지금까지는 1년차로서 그저 해내는 것에 큰 가치를 두고 있었는데, 프로답지는 않았던 것 같다. 아무리 상황이 어려워도 일을 제대로 해내는 것이 프로라고 생각한다. 나는 일의 퀄리티도 떨어질 때도 종종 있었고, 내가 개선할 부분을 찾기 보다는 상황 탓부터 하는 경우도 있었다.
일례로 올해 프로젝트 3개를 진행했었는데, 도메인 지식도 기술 역량도 부족한 나로서는 정말 스트레스를 많이 받았다. 모든 프로젝트가 그러하듯이 일정은 늘 타이트했고, QA 기간에 너무 버거움을 느끼며 나를 이렇게 일하게 만드는 회사가 잠깐 미워졌었다. 그런데 사실 QA 기간에 힘들었다는 말은 내가 버그를 많이 만들었다는 사실이고, 이는 내가 스펙을 완전하게 숙지하지 못하고 있었다는 뜻이다. 돌이켜보면 내 나름대로 서버 개발을 해두고 "다 했다!"라며 한동안 프로젝트를 던져두었었다. 영향이 꽤 큰 변경이었던 만큼 더 꼼꼼하게 확인하고, 우려가 되는 부분은 관련된 사람들과 더 많은 의논을 사전에 진행했다면 좋았을텐데, 최소한의 일만 하는 것에 나는 만족했던 것이다.
우리는 바쁘고 일정에 쫓긴다. 그 가운데에서도 집중력을 유지하며 감정을 잘 통제하고, 커뮤니케이션을 잘 하고, 좋은 의견을 제시하고, 일을 완성도 있게 마무리 하고, 개선까지도 하는 것이 진짜 프로인 것 같다. 그냥 저냥 하는 것에 만족하지 않고 한 걸음 더 나아가 보려는 사람이 프로인 것 같다. 매순간 최선을 다한 사람과, 적당히 하는 데 만족한 사람의 몇 년 후는 정말 다를 것이라는 생각에 갑자기 아찔해진다. 몇 년 후에 후회하지 않으려면 난 탈바꿈이 필요하다.
기술적으로도 아쉬움이 많다. 사실 업무 외에 공부를 열심히 했느냐?라고 물으면 나는 대답에 자신이 없다. 스터디에 몇 개 참여함으로써 얕게 알게 된 것은 많아졌지만, 이것이 진실로 의미 있는 성장은 아닌 것 같다. 완전히 몰입해서 성장한 기분이 전혀 아니다. 워낙 큰 회사이고 많은 기능이 분화되어 편리하게 갖추어져 있기 때문에, 내가 하는 것은 다 된 식탁의 모양새를 살펴서 숟가락을 놓는 정도이다. 나에게 이 모든 편리함을 다 빼앗고 혼자서 만들어보라고 하면, 난 할 수 있을까? 외부에서도 볼 때에도 내 이력서가 매력적일까? 솔직하게 말하면, 난 자신이 없다.
기술적인 성장은 스스로 하는 것 같다. 회사에서는 항상 기술적으로 도전적이고 흥미로운 과제만 하는 것이 아니라, 지루하고 소모적인 일도 하게 된다. 회사의 성장과 나의 성장이 일치하지 않는 경우가 많다. 내가 회사의 품에서 벗어나서도 실력 있는 사람이 되기 위해, 그리고 업무적으로 지치는 시기에도 계속 개발에 흥미를 잃지 않고 성장한다는 느낌을 받으려면 스스로 성장하는 법을 알아야할 것 같다.
쌓여 있는 기술서가 너무 많다. 아직 오를 산이 많다는 의미이니까 기뻐해야 하는 건가... 아무튼 새해에는 이 책들을 열심히 읽고 업무에서도 실천해보고, 오픈 소스도 많이 봐 보고, 업무를 진행하면서도 내가 성장할 수 있는 요소를 끼워넣어 보는 등 다양한 방법으로 기술적 성장을 도모해봐야겠다
내년을 기대하며
"노동 소득은 의미 없어! 회사에서 너무 일을 열심히 하는 것은 바보같은 짓이야!" 요즘 젊은 세대 사이에서는 꽤나 만연한 생각인 것 같고 나도 어느 정도 동의한다. 지금 당장 재테크나 해야 하는 거 아니야?라는 생각이 들기도 했었지만, 내가 내린 결론은 "지금은 일부터 잘하자"이다. 지금 사회초년생일 때 노력해서 폭발적으로 성장하는 것이 가장 좋은 투자인 것 같다. 사람은 시기마다 열심히 해야 하는 것들이 있는 것 같은데, 지금 나는 개발자로서 성장하는 것이 장기적으로 가장 좋은 선택이라는 생각이 든다. 내년 이맘때에는 훨씬 긍정적으로 희망찬 어조의 회고를 기대한다.