1차 프로젝트 팀과 함께 멘토링을
발표도 끝난 마지막날 저녁에 진행하게 되었다.
마음 편히 다양한 부분들을 여쭤볼 수 있어서 오히려 더 좋았던 것 같다.
강의와 특강과는 또 다른 인사이트를 얻어갈 수 있는 시간이었다.
가장 인상깊게 남은 것은 기록을 잘 하는 것과
알고리즘 공부를 꾸준히 더 해야겠다는 것.
화이팅..!
이전 직장의 경우 비트버킷을 사용했고, 규모가 큰 편이어서 개발환경에서는 2, 3명의 코드 리뷰가, 상용 환경에서는 상위 직책자의 코드 리뷰가 있어야 Merge 할 수 있었습니다.
코드의 잘못된 부분 외에도 지식 공유 차원에서 리뷰를 하기도 하고 자바 버전을 올리며 버전에 따라 달라지는 부분에 대해서 토론을 나누기도 합니다.
가장 중요한 것은 ‘팀’ 프로젝트니까 협업입니다. 실무에서도 가장 중요한 것은 커뮤니케이션이고, 협업 과정에서 어떤 갈등이 있었고 어떻게 해결하였는지, 생겨난 불편함에 대해서는 어떤 규칙들을 정하고 개선하였는지 경험해보는 것이 중요합니다. 1차 프로젝트를 진행하면서 경험한 개선할 수 있는 부분들을 2, 3차에서도 주도적으로 개선하는 경험을 가져간다면 면접 등에서도 어필할 수 있는 부분이 될 수 있을 것입니다.
두번째로는 알고리즘 등의 공부입니다. 프로젝트 기간에는 바쁘겠지만 틈틈히 해두는 것이 좋습니다. 코딩 테스트는 면접의 관문 역할을 하여, 알고리즘이 약하면 취업과 이직에 허들이 될 수 있습니다. 신입 때 알고리즘 역량을 쌓아놓으면 나중에 이직할 때도 큰 도움이 됩니다. 목표하는 회사가 코딩테스트를 보지 않는다면 당장은 깊게 공부하지 않을 수도 있지만 코딩 테스트를 잘하면 정할 수 있는 폭이 넓어지게 됩니다. 국내 기업들의 코테를 준비하기 위해서는 프로그래머스 기준으로 3, 4단계까지는 공부하는 것이 좋다고 생각합니다.
마지막으로는 하나를 하더라도 깊게 해야 한다는 것입니다. 프로젝트에서 어떤 부분을 담당하더라도, 단순 구현을 넘어 내부 코드 등을 살펴보고 디버깅해보고 한단계 더 깊게 학습하는 것이 중요합니다.
지금 팀은 TPM (Technical Program Manager), PD (Project Director), BE, FE, DE (Data Engineer) 이렇게 이루어져 있습니다. TPM과 PD가 방향성과 기획 등을 맡고 DE는 구현에 필요한 데이터들을 관리하는 등 많은 직분들의 사람들과 협업을 진행하게 됩니다.
스크럼 방법도 진행하고 있는데 스프린트는 2주 단위로 진행됩니다. 스프린트를 시작하며 기간동안 해야하는 작업을 스쿼드와 정하고, 매일 10 ~ 30분 정도로 짧게 데일리 스크럼을 진행하고 있습니다. 2주 동안의 스프린트 기간이 끝나면 회고하는 시간을 가집니다.
컴퓨터 공학과를 전공하였지만 코딩에 관심을 본격적으로 가진 것은 4학년 정도였습니다. 늦게 시작했다고 생각하여 빠르게 경력을 쌓고자, 작은 곳이라도 갈 수 있는 곳에 취업해 일을 시작하였습니다. 그러나 그렇게 들어간 첫 직장은 주변 환경이 생각보다 좋지 않았습니다. 코인 열풍의 시기이기도 해서 사내에서는 코딩이나 학습에 대한 열정보다는 다른 이야기들이 많았고 결국 그곳을 떠나야겠다는 마음을 먹게 되었습니다.
만약 그때로 돌아가게 된다면 좀 더 준비해서 첫 스타트를 좋은 곳에서 시작할 것 같습니다. 모든 것들과 마찬가지로 주변 환경은 매우 중요하기도 하며, 이전 직장은 이직할 때 연봉협상의 기준이 되기도 합니다.
사람들마다 상황이 달라서, 나이의 문제, 경제적 어려움 등의 상황으로 빠르게 취업을 해야하는 상황이 있을 수 있습니다. 그러나 시간적 여유가 있다면 준비를 길게 가져가며, 자신이 갈 수 있는 최대한의 좋은 곳에 가보는 것이 이후 커리어에도 좋은 영향을 미칠 것이라 생각합니다.
신입 때에는 기록을 적극적으로 많이 하지 않았습니다. 시간이 조금만 지나도 이전 일들은 기억이 나지 않기 때문에 매일 하는 회사 업무들과 새로 학습한 내용들에 대해서는 문서화를 하는 것이 중요합니다. 이후에 다시 찾아 볼 수 있도록 기록을 잘 남기는 것이 중요하다는 것을 시간이 많이 지나고 깨닫게 되었습니다.
저는 원래 이론을 먼저 공부하는 것을 좋아하는 편이었는데, 이론만 공부하는 것과 직접 사용해 보는 것과는 이해도가 다르다는 것을 경험하게 되었습니다. 실제 실무에 사용되는 것과 이론으로 공부한 것의 차이도 있었고요. 그래서 최근에는 학습에서 실습의 비중을 높여서 공부하는 중입니다. 실제로 업무에서 사용해가며 배우면 이해도가 빨리 높아지는 것을 경험할 수 있습니다. 하지만 물론 단순히 사용만 해보는 것으로는 깊이가 부족해서 그 깊이를 채울 수 있는 이론 공부도 너무 중요한 것 같습니다.
하지만 시간적 문제와 선택과 집중이 중요하기 때문에 대략적으로 프론트 영역이 백엔드와 어떻게 연동되는지, 넘어간 예외를 어떻게 처리하는지 등의 전반적인 플로우의 이해 정도는 필요하다고 생각합니다.
백엔드 개발자는 프론트엔드 개발자와 많이 협업하게 되기 때문에 관련 내용은 많이 알수록 좋습니다. 어떤 일을 하다보면 백엔드, 프론드엔드의 경계가 애매해질 때가 있는데 그럴때 관련 지식이 있다면 빠르게 의견을 제시할 수 있게 됩니다.
다만 큰 조직의 경우는 백엔드 개발자는 백엔드만 담당하고, 프론트엔드 개발자는 프론트엔드만을 담당하게 되어 연관되는 부분이 적지만 그럴 때에도 관리자 페이지 정도는 백엔드 개발자가 담당하는 경우도 있기 때문에 최소한의 프론트 지식은 있어야 한다고 생각합니다.
개발할 때 스프링을 사용하면 편합니다. 어노테이션 등을 사용하면 알아서 프레임워크가 해주는 일들이 많기 때문입니다. 그렇지만 실제 현업에서는 다양한 트러블슈팅 경우들이 있는데 내부 원리를 알아야 해결할 수 있는 경우가 많이 있습니다.
개발이 급하면 깊이 있는 공부를 진행하기 어려울 텐데요, 그럴 때는 필요한 부분들을 메모해놓았다가 주말이나 개인 시간 등에 내부적인 코드를 살펴보고 확인해보며 디버깅하는 시간이 필요합니다.
초반 2, 3년 동안에는 비교적 늦게 시작했다고 생각해서 평일, 주말 상관없이 모든 시간에 코딩만 했었습니다. 그런데 이렇게 하다보니 번아웃도 오고 많은 어려움들이 있어서 추천하지 않습니다.
지금도 여전히 많은 시간을 코딩에 쓰고 있지만 이제는 적당한 취미 생활도 가지고 있습니다. TMI 이지만 작년부터 배드민턴을 시작했는데 업무 스트레스 해소에 많은 도움이 되고 있습니다.
중요한 영역인 만큼 면접에서도 관련 질문들을 많이 다루는데, 스트레스는 어떻게 풀고 어떤 취미가 있는지, 일할때는 일에 몰입하고 취미를 즐길 때는 그것에 몰입하는 것이 멋진 모습이라고 생각합니다.
나중에 지원하게 될 때, 어떤 기회가 생길지 모르기 때문에, 신입 뿐만 아니라 1, 2년차 포지션 정도까지는 지원해보는 것을 추천합니다.
또한 채용공고를 통해서 회사가 어떤 일을 하고 있는지, 입사 후 어떤 일을 하게 될지 자세히 읽어보는 것이 중요합니다. 채용공고를 상세하게 적는 회사는 괜찮을 회사일 확률이 높기 때문에 채용공고가 자세한 회사를 고르는 것도 좋은 방법이 될 수 있습니다.
면접에서는 언제나 질문할 수 있는 시간이 주어지게 됩니다. 이때 질문 할 수 있는 것들에 대해서 템플릿을 만들어보고 리스트로 준비해서 가져가게 된다면 회사에 더 많이 관심이 있다는 좋은 인상을 주기 좋습니다. 입사 후 담당하게 될 업무, 기술 스택 등에 대해서도 자세히 물어보고 회사의 개발문화, 협업 방식, 등의 내용에 대해서도 물어볼 수 있습니다.
또 면접 내용을 녹음해서 그것을 기반으로 질문을 정리해보는 것도 좋습니다. 많은 면접을 정리해보면 비슷한 내용들이 많기 때문에 면접을 복기하며 다음번 면접을 준비할 수 있게 됩니다.
프로젝트가 끝날 때마다 했던 일들과 기여, 배운 내용들을 정리해 꼼꼼하게 모아두는 것이 중요한데, 저는 분기마다 이력서를 관리하고 다듬으며 빈번하게 관리하고 있습니다.
면접 담당으로 들어갔을 때 잘 읽히는 이력서는 일관성이 있고 자신이 했던 내용이 수치적으로 눈에 들어오는 것들이었습니다. 본인이 했던 업무에 대해서 글로 남기는 사람은 신뢰할 수 있다는 생각이 드는데, 기술블로그나 깃허브 등을 꾸준하게 하는 사람들은 많이 없는 것 같습니다. 신입은 경력이 없기 때문에 이런 것들이 자신을 어필 할 수 있는 무기가 될 수 있습니다.