왜 시작했는가
대학교를 다니면서 개발을 좋아하지만 막상 어떻게 개발해야 하는지 알지 못한 채. 그저 만들고 싶은것만 구글링 해가면서 만들어나갔다. 결과물을 만들어 낼 수는 있었지만 막상 얻게된건 구글링으로 검색하여 다른 사람의 코드를 덕지덕지 붙여서 완성하게 된 그런 결과물.
해당 결과물에 대해서 설명 할 수 있는가. 라고 하면 설명 할 수 없는 그런 결과물이었다.
졸업 이후 취업 준비를 하게 되면서 다른 사람은 코드를 어떻게 작성하는지 어떻게 짜는 코드가 좋은 코드인지 저 사람들에 비해 내가 부족한 것은 무엇인지. 메타인지를 하기 시작했다.
그렇게 차근차근 기본기를 쌓아가면서 6월부터 시작하게 된 프로그래머스 데브코스 백엔드 과정 부트캠프에서 코드 리뷰를 통해 내가 지금까지 무엇을 잘 못 알고 있었는지. 앞으로 어떻게 공부해나가는게 좋을지 많은 방법들을 알게 되었고, 그리고 학교 후배들에게도 내가 지금까지 개발 공부를 하면서 겪었던 시행착오들을 설명해주면서 올바른 방향으로 나아가기를 바라며 신청을 받아 코드 리뷰를 진행하게 되었다.
과제
과제는 부트캠프에서 내어준 과제랑 동일한 과제를 내주었다. 해당 과제를 내어주면서 많은 고민을 하였고, 후배들의 코드에서 비슷한 상황이 발생했을 때 멘토님, 서브멘토님에게 받은 조언들을 그대로 녹여서 전달해 줄 수 있을 것이라고 생각하였다. 그리고 코드리뷰의 대상은 후배 2명. 이제 막 4학년 2학기를 시작한 후배들이었다.
과제의 내용은 다음과 같이 내주었다.
공부를 하면서 nextstep 에서의 과제 조건, 부트 캠프에서의 과제 조건, 개인적인 조건들을 포함하여 과제를 다듬었다. 그리고 주어진 과제는 1주일. 들어와서 멘토님들에게 들은 개발자로서 가장 중요한 것은 요구사항을 제한 시간안에 구현 해낼 수 있는 능력이 개발자로서 갖춰야 할 가장 중요한 능력이라고 말씀해주셨기에 그러한 조건도 걸게 되었다.
저런 구현 능력이 있는 사람을 뽑아야하기 때문에 요즘의 기업에서 코딩 테스트를 보는게 아닌가 생각한다. 즉 코딩 테스트 라는 것을 코딩 테스트 자체만으로 보지말고 어떠한 문제 상황을 맞닥드렸을 때 그 문제를 어떻게 바라보고 어떻게 해결 할 것인가 라는 측면으로 바라본다면 왜 코딩테스트를 봐야 하는지에 대해서 어느정도 받아 들일 수 있을 것이다.
리뷰
코드 리뷰를 진행하면서 신경 썼던 부분은 총 두 가지이다.
- 어떠한 코드를 작성하더라도 상대방의 근거가 담겨 있을 수 있기 때문에 상대방의 근거를 듣고 판단하기.
- 모르는 내용을 전달 해줄 때 정확한 지식을 전달하기.
먼저, 첫 번째는 협업을 하면서 팀원들에게도 가장 먼저 하는 말이다. 개발은 답이 없고 문제를 해결하기 위한 방법은 수두룩하다. 그리고 그 과정에서의 트레이드 오프 들이 존재한다. 즉, 더 좋은 답안은 있을 수 있지만 각자 개개인이 내놓은 답안은 틀린 답안이라고 할 수는 없는 것이다.
따라서, 후배들에게도 "코드 한 줄을 작성 할 때 자신의 생각을 담아서 코드를 작성해봤으면 좋겠어. 그래야 내가 무슨 질문을 했을 때 그걸 답 할 수 있는 근거가 될거야." 라는 말을 전달을 해주었다. 이는 아마도 학부 시절 경험했던 나의 근거없는 코드 짜는 것에 대한 자기 혐오 였을 수도 있을 것 같다.
두 번째, 부트캠프 시작 이후 한 달 후에 작성했던 회고에서 피어 리뷰에 담겨있던 내용이었다. 남이 도움이 필요한 것이 있으면 언제든 손을 내밀어서 도와줄 수 있는 사람. 많은 내용을 알고 있어서 도움을 많이 받았지만 종종, 남에게 도움을 너무 주고 싶어서 자신이 잘 못 알고 있는 지식을 전달 할 가능성도 있음. 이라는 피드백을 받았다.
나의 잘못된 지식 전달로 인해 이후에 언러닝을 해야 한다면 시간 소모가 상당하기 때문에, 이런 부분에도 많은 부분 신경을 썼다.
리뷰를 진행하면서 한 후배는 굉장히 덜렁거리는 성격이었고, 다른 후배는 개발을 하면서 깊게 생각을 하는 후배였다. 서로에게 피드백 방향을 달리 하였다.
먼저, 덜렁거리는 후배에게는 코드를 작성하면서 가져야 할 마음 가짐과 개발자란 무엇인지. 그리고 어떠한 지식을 전달 받았을 때 어떻게 학습하는 것이 좋은지. 그리고 지금 부족한 것들이 무엇인지를 알려주었다.
두 번째로, 다른 후배는 습득력이 빠르고 고민을 많이 하는 스타일이기에 더 고민 할 수 있는 거리를 던져주었다. 이번 과제는 객체지향적으로 코딩을 하는 방법을 배우는 것이기 때문에, 객체의 책임을 어떻게 분리하는 것이 좋은 것 같은지. 그리고 이러한 코드를 작성했을 때의 발생 할 수 있는 다른 문제점은 없는지. 이런 식으로 스스로 해결책을 찾아나갈 수 있도록 도움을 주었다.
나 자신도 코드 리뷰를 받으면서 멘토님이 이 문제에 대한 해결책을 주시지 않고 고민할 거리를 던져주시는 이유가 뭘까? 라는 생각을 했었다. 직접 리뷰를 해보면서 느낀거지만 이 친구라면 이러한 문제에 대한 해결책을 찾을 수 있을 것 같다. 라는 신뢰가 있으셨던 것 같다.
마지막으로 좀 더 성장하기를 원하는 한 학생에게 내가 겪었던 시행착오와 함께 앞으로 어떻게 성장하는 것이 좋을지. 물론 지금 내가 가지고 있는 방법이 옳은 방법이 아닐 수 있지만, 멘토님 그리고 동료들에게 성실함과 학습 방법에 대해서는 많은 부분 칭찬을 받았기에 그걸 고스란히 적었다.
회고
코드 리뷰를 하기 전 가진 생각이 있다. 내가 코드 리뷰를 통해 후배들에게 많은 것을 가르쳐 줄 수 있을까? 그럴 만한 실력일까? 하지만 동료들과 코드 리뷰를 하면서 느낀 부분은 내가 생각하지 못했던 부분들을 많이 알아갈 수 있다는 것이다. 우리가 책을 읽는 이유. 다른 사람이 오래 고민하고 자신의 것으로 만든 내용을 책을 통해 빠르게 지식을 습득 할 수 있다는 것이다. 후배들에게 앞으로 어떠한 방향성을 가지고 나아가는 것이 좋은지. 그리고 내가 알고 있는 것을 명확하게 전달하는 것. 그러한 부분들을 알 수 있었다.
하지만 막상 좋은 부분만 있는 것은 아니었다. 나 또한 코드 리뷰를 처음 받을 때 컨벤션에 대해서 많은 지적을 받았었는데, 코드 리뷰 이후에도 종종 컨벤션을 지키지 않는 문제를 많이 볼 수 있었다. 그리고 이러한 것을 똑같이 경험 할 수 있었다.
"리뷰를 해줄 때 똑같은 말을 반복하는 것이 정말 좋지 않구나." 라는 생각을 하게되었고 나 또한 코드 리뷰를 할 때 기본적인 컨벤션을 제대로 지키지 않고 있는지를 항상 확인하며 코드를 작성해야겠다는 마음가짐을 가지게 되었다.
최종적으로 두 후배들에게 많은 부분을 배울 수 있었다는 얘기를 들었을 때 정말 뿌듯하고 피곤했지만 하길 잘했다는 생각이 들었다. 나 뿐만 아니라 앞으로 더 많은 동료 개발자들이 더 잘 성장 할 수 있는 환경이 될 수 있도록. 그런 환경을 만들 수 있도록 나도 성장을 해나가자.
'회고' 카테고리의 다른 글
나는 어디로 나아가고 있는가. (0) | 2024.01.18 |
---|---|
2023년 연간 회고 (2) | 2024.01.01 |
5월 3주차 회고 (0) | 2023.05.22 |
프로그래머스 데브코스 백엔드 4기 면접 회고 및 합격 (0) | 2023.05.19 |
5월 1주차 회고 (1) | 2023.05.07 |