들어가며
안녕하세요. 최근에 회사에서 신입 개발자 대상으로 특강을 진행했습니다. 한 달 남짓 고민해서 준비한 내용 중에 다른 개발자분들도 보시면 좋을만한 내용을 일부 발췌해서 글로 재구성합니다. 아마 현업에서 이미 오랫동안 일을 하셨던 분들께는 익숙한 개념이겠지만 이제 막 회사에서 업무를 시작하는 신입, 주니어 개발자분들께는 미리 알아두면 좋을만한 주제들일 것 같아요. 고럼 간단히 살펴보겠습니다 :)
성장의 도구들이란?
지금까지 회사에서 일을 하면서 자연스럽게 형성된 저의 가치관과 일하는 방식입니다. 총 세 가지를 얘기해 볼게요.
- 질문하는 방법
- 코드 리뷰
- 기록과 공유
질문하는 방법
팀 협업에서 질문을 잘하는 건 중요합니다. 질문을 통해 개인이 효율적으로 문제를 해결하면 팀 전체 퍼포먼스에도 긍정적인 영향을 끼치기 때문이죠. 보통 팀에 처음 들어오면 다음 세 가지 고민 때문에 동료한테 질문하는 걸 주저합니다.
- 물어보면 저 사람 방해하는거 아닌가?
- 이거 모르면 나 무시할텐데..
- 뭐라고 물어봐야 되지?
좋은 팀은 신입 개발자의 질문에 호의적입니다. 더 잘하고 싶어서 스스로 고민해 보고 질문하는 개발자에게 잘해주죠. 질문은 많이 할수록 좋습니다. 다만, 아래와 같이 단순한 질문은 지양해야 합니다.
- XX 에러가 납니다. 어떻게 해결해야 되나요?
- 팡요님, 이거 잘 모르겠는데요..
질문은 동료에게 내가 풀지 못한 문제를 해결해 달라고 부탁하는 게 아닙니다. 문제를 해결하기 위해서 힌트나 실마리를 얻는 과정이죠. 따라서, 질문에는 내가 한 시도와 아는 부분, 도움이 필요한 부분을 정확히 포함하는 게 좋습니다. 위 1번 질문에 이 세 개를 담아볼게요.
- 제가 XX 에러가 나서 ~를 찾아보고 A 방법, B 방법을 시도해봤는데 잘 안풀리는거 같아요. 제가 프록시 개념은 알고 있는거 같은데 이 문제에 적용이 잘 안되는거 같네요. 혹시 어떻게 해결할 지 알고 계시나요? :)
이렇게 질문을 구체적으로 하는 것도 중요하지만 그에 못지않게 제한 시간을 설정하고 비동기로 질문하는 것도 중요합니다. 제한 시간은 보통 최대 하루 정도 설정하고 그 이후에도 해결이 어려우면 동료한테 물어보는 게 더 효율적입니다. 그리고 동료를 방해하지 않고 배려하는 관점에서 깃헙 이슈에 질문을 자세히 적거나 별도 미팅을 잡아 물어보는 것도 좋아요.
🍔 요약 : 질문에는 시도, 아는 것, 도움이 필요한 부분을 담을 것. 문제 해결을 할 때 제한 시간을 설정하고 비동기로 물어볼 것.
코드 리뷰
서비스를 운영하는 팀에서 코드 리뷰는 다음 2가지의 목적을 갖습니다.
운영 중인 서비스가 안정적으로 돌아갈 수 있게 현재 버그와 잠재 버그를 줄이고 팀 구성원의 역량을 올리는 효과가 있죠. 가끔 코드 리뷰에 대해서 다음과 같은 오해를 하기도 합니다.
코드 리뷰는 경험이 많은 동료의 코드와 지식을 엿볼 수 있는 통로입니다. 내가 작성한 로직에 대한 피드백을 받고 새로운 지식이나 기술을 배울 수도 있죠. 코드 리뷰를 잘 받고 싶다면 PR에 아래 내용을 꼭 넣어보세요.
- 해결하려는 문제
- 주요 변경 내용 요약
- 변경 전과 변경 후 비교 결과
- 참고 문헌
- 중점적으로 리뷰 받고 싶은 부분
이렇게 하면 PR을 리뷰하는 사람이 더 빠르게 맥락과 변경 의도를 파악할 수 있습니다. 인원이 많을수록 보통 내가 코드를 읽는 시간보다 다른 사람이 코드를 읽는 시간이 더 많아지므로 PR 본문을 좀 더 자세히 작성하면 효과가 커집니다.
PR을 읽을 때 하트와 따봉으로 공감과 칭찬을 하는 것도 중요합니다. 기본 개념이나 API 등 쉽게 검색할 수 있는 내용보다는 작성자의 의도나 시도에 대해서 질문을 해보세요. 나보다 연차가 많고 시니어기 때문에 맹목적으로 수용하는 건 금물입니다. 공식 문서나 표준, 다른 사례들과 꼭 비교해 보면서 비판적 사고를 하세요.
🍔 요약 : 코드 리뷰는 리뷰어를 위해 PR 본문을 자세히 작성하고, 리뷰를 할 때는 칭찬과 공감에 기반한 비판적 사고를 할 것.
기록과 공유
성장하기 위해서 매일매일 배운 내용을 기록하는 걸 TIL(Today I Learned)이라고 합니다. 취업하기 전에는 취업용 포트폴리오로 인식되지만 입사 후에는 성장을 위한 도구로 쓰입니다. 날마다 배운 내용을 TIL에 잘 기록하여 팀 단위나 조직 단위로 공유하게 되면 성과로도 인정받을 수 있고 자연스럽게 새로운 기회들이 따라옵니다.
가끔 이 TIL이 조직을 위한 문서로 정제되는 경우가 있는데 이 문서화 과정에서 코드 작성 능력을 향상시킬 수 있습니다. 글의 목차를 설계하고 요약하는 과정이 코드를 추상화하고 구조화하는 과정과 유사하기 때문이죠. 따라서, TIL을 습관화하고 때로는 잘 정리된 글을 문서로 남겨 조직, 전사 단위로 공유해 보세요. 이런 작은 기록과 공유가 컨퍼런스, 출판의 기회로도 연결될 수 있습니다.
TIL은 잘 정리해서 블로그 게시물로 활용할 수도 있습니다. 꾸준한 TIL과 블로그 게시물 관리는 셀프 브랜딩과도 연결될 수 있으니 스스로 동기를 부여해 보는 건 어떨까요? :)
🍔 요약 : 나의 성장을 위해 TIL을 꾸준히 기록하면 조직의 성과와 셀프 브랜딩으로 이어질 수 있다. TIL로 문서화 능력을 기르면서 깔끔한 코드를 작성하는 감도 길러보자.
마무리
오늘 살펴본 주제들은 제가 신입일 때 누가 얘기해 줬으면 얼마나 좋았을까 하는 생각도 듭니다. 실무에서 이미 이 주제들을 빠삭하게 잘 사용하고 계신 분들께는 스스로 한번 돌아보는 계기가 되었으면 좋겠네요. 취업하고 이제 막 시작하는 주니어 개발자 분들께는 많은 도움이 되길 희망합니다. 다음에 또 재밌는 주제로 찾아뵐게요! :)