회고록

사수의 부재(Feat. Clean Code)

KEMON 2022. 12. 16. 02:26
728x90

올해는 팀에 변화가 매우 큰 해였다.

8월에 FE팀장 겸 나의 사수가 퇴사를 하였고 12월에 나보다 1년 정도 경력 많은 동료가 퇴사를 하였다.

 

내가 이 회사에 오게 된 이유 중 하나인 좋은 동료가 사라진 셈이다...

 

사실 FE팀장은 이 회사의 창업 멤버로 FE와 BE(python Django)를 담당하고 있었다.

나도 첫 시작은 SI회사였기 때문에 Spring위주로 했었으며 나(FE)와 팀장님(FE+BE) 둘이 개발한 프로젝트가 있어서 자연스레 프로젝트 유지보수 BE까지 나에게 인수인계되었다.

그래서 8월부터 굉장히 바쁜 삶을 살았던 것 같다. 

 

이전 SI회사에서도 사수의 부재를 경험한적이 있었다. "사수의 부재는 최고의 성장 기회이다" 라는 말과 함께 나의 첫 사수분은 팀장이 되어 프로젝트를 떠나 팀원 관리를 하러 떠났다. 이 말이 굉장히 와닿는 해였다.

프론트엔드 뿐만아니라 백엔드, AWS를 접할 기회가 많아졌으며 자연스레 서비스의 흐름을 더 잘 이해하게 되었다.

다만, 굉장히 이해하기 힘든 코드들이 많았고 이를 해석하는데 다소 시간이 걸렸다. 

 

이때부터 보는 눈이 달라진것 같다. 이전에는 React, Redux, Javascript 등 프론트엔드의 기본 개념들을 위주로 공부했다면 이제는  이 코드를 왜 이렇게 했었지? 그동안 당연하게 써오던 코드에 의문이 들었고 디자인 패턴, 효율적인 폴더 구조, 클린코드에 관심을 가졌고 다른 프론트엔드 개발자들은 어떻게 하는지 궁금해졌다.

 

다른 프론트엔드 개발자들의 생각을 듣고싶어 유명 회사의 기술 블로그, 유튜브를 찾아봤고 리팩터링2판 이라는 책으로 스터디를 한다는 글을 보고 책의 목차를 보았는데 맘에 들어서 구매했다.

리팩터링 2판

12단원 중 4단원 까지 읽었지만, 처음 1단원에 등장하는 리팩터링 예시들을 보고 바로 감탄하였다.

리팩터링 전에 등장하는 코드방식이 현재 우리 코드에서도 많이 보였고 리팩터링 후 매우 깔끔한 코드가 되었기 때문이다.

이책을 읽으면서 바로 프로젝트에 적용시켰다. 

  • 함수명은 주석을 대신할 수 있을 정도로 명확해야한다.
  • 중첩함수를 통해 함수 내의 기능별 복잡한 구문을 깔끔하게 정리한다.
  • 동일한 로직코드를 여러 함수내에서 사용할 경우 함수로 추출한다.

 

위 세가지를 우선적으로 적용시켰고, 그 결과 가독성이 매우 매우 매우 좋아졌다.

깔끔해진 코드를 보며 아름다운 구조물을 보는듯한 기분과 뿌듯함을 느꼈다. (개발자라면 어떤 말인지 공감할 것이다.)

이러한 뿌듯함으로 인해 자연스레 코드 리팩터링, 클린 코드에 더 관심이 갔고 유튜브를 찾아보는 도중  진유림님의 토스 SLASH 2021 - 실무에서 바로 쓰는 Frontend Clean Code를 감명깊게 봤다.

영상에서 나오는 내용들이 제목답게 실제로 경험했던 사례들이 나왔기 때문이다. 특히, 기존의 코드에 새로운 기능을 추가할 때 pr에서는 문제가 없지만 전체적으로 보면 복잡한 코드가 된다는 말에 공감했고 해당 코드들을 리팩토링 한 과정을 보며 당연하게 여긴 내 자신을 반성하였다.

  • 클린 코드 !== 짧은 코드
  • 하나의 목적을 가진 코드가 흩뿌려져 있을 때는 뭉쳐서 응집도 강화
  • 하나의 함수가 여러가지 일을 할 때에는 분할
  • 상황에 맞게 유동적으로 함수의 추상화

 

유튜브를 보며 가장 인상깊었던 내용은 위 네가지이며 마찬가지로 프로젝트에 적용시켰다.

물론 100% 적용시켰다는 말은 아니다. 아무래도 경험치가 부족해서인지 유튜브에서 봤던것 만큼 혁신적인 개선이 되지는 못했다.

그렇치만 또 다시 가독성이 매우 좋아졌다.

 

끝으로, Clean Code는 나혼자 적용한다고 되는게 아니기때문에 나의 경험을 가지고 해당 책과 유튜브 주소를 FE동료에게 공유하였다.

앞으로 적극적으로 FE팀원들에게 PR 코드리뷰 시 중점적으로 clean code를 전파해야겠다는 생각과 나도 뱀의 머리가 아닌 용의 꼬리로써 저런 좋은 동료들과 일을 해보고싶다는 생각이 들었다.

728x90