회고

오늘은 "강의를 진행할 때 도움주는 서비스" 릴레이 프로젝트를 진행하였다. 이번주 요구사항이 있었지만, 지난주에 맡았던 사람들이 각자 브랜치에서 작업하며 코드가 파편화되어 있었다. 따라서 기능 구현보다는 팀원들과 페어 프로그래밍을 진행하며 협업을 해보고자 하였다. 각 팀원은 5~10분동안 화면을 공유하여 드라이버로서 코드 작성을 하였고, 나머지 6명은 네비게이터로서 이슈 해결 방법 및 좋은 코드 작성을 위해 토의하였다. 저번주에는 두 명이서 Front End 작업을 페어 프로그래밍하였는데, 이번에는 7명이서 진행해보며 페어 프로그래밍의 장점을 더욱 느낄 수 있었다.

개발 생산성이 향상된다.

프로젝트 관점에서 보았을 때는 생산성이 저하될 수 있으나, 개인적으로는 실시간 코드 리뷰를 진행하며 보다 완성도 있고 안정적인 코드를 작성할 수 있기 때문에 개발 생산성이 증가된다. 숙련된 개발자가 아니라면, 개개인은 오류를 범할 수 있으며 불안정한 코드를 생산할 가능성이 있다. 따라서, 개인적인 관점으로 생각해보면 생산성이 향상된다고 생각한다.

7 명의 네이게이터가 하나의 화면을 보며, 실수할 수 있는 부분과 불필요한 코드를 빠르게 고칠 수 있다. 실시간 코드 리뷰를 진행하기 때문에 버그 발생 빈도가 상당히 줄어든다. 구체적으로 한 팀원이 아래와 같은 코드를 작성하였다.

fs.mkdir(__dirname+'/uploads', function(err) {
  if(err)
    callback(null, __dirname+'/uploads');
  else
    callback(null, __dirname+'/uploads'); 
});

위와 같이, 개개인은 누구나 실수할 수 있으나, 페어 프로그래밍을 진행하면 이러한 불필요한 코드를 빠르게 수정할 수 있다.

fs.mkdir(__dirname+'/uploads', function(err) {
  callback(null, __dirname+'/uploads');
});

특정 분야에서 뛰어난 팀원의 코드 작성 과정을 볼 수 있다.

이번 프로젝트에는 Express 프레임워크를 잘 다루는 팀원들이 많았다. Express 프레임워크를 학습해본적이 없었기 때문에, 팀원들이 작성하는 코드에 대해 궁금한 점을 바로 물어보며 기술적으로 많이 배울 수 있었다.

팀원 모두가 이해하는 코드, 기능을 만들 수 있다.

각자 기능 구현에만 충실하다면, 개발 속도가 빠를 수 있으나 완성도는 떨어질 수 있다. 페어 프로그래밍을 진행한다면 모든 코드에 팀원들의 생각이 반영되기 때문에, 다음에 누가 해당 기능을 전달 받더라도 빠르고 정확한 이해를 기반으로 개발을 진행할 수 있었다.

코드 리뷰 중요성

마스터님께서 말씀하셨던 협업의 의미에 대해 다시 생각해보고 느껴볼 수 있었다.

협업이 반드시 분업을 의미하는 것은 아니다.
충실히 각자의 기능만 개발하여 매우 좋은 기능을 만들었다해도, 전체적으로 합쳤을때는 괴상한 결과물이 나올 수 있다.

개인적으로 이러한 분업에서 발생하는 문제를 제거하고 완성도 있는 결과물을 도출하기 위해서는 코드 리뷰를 진행해야 한다고 생각한다.

적절히 분업을 하였다면, 팀원 모두가 각각의 결과물을 이해하는 과정인 코드 리뷰를 진행해야한다. 만약 팀원이 구현한 코드를 이해하지 않고 넘어간다면, 여기서 부터 코드 파편화는 시작된다고 할 수 있다. A 기능을 구현하는데 다른 팀원이 개발한 B 기능이 필요하다고 가정하자. 코드 리뷰 과정을 진행하였다면, B 기능을 빠르게 이해하며 불필요한 시간 낭비를 줄이고 Team Code를 만들 수 있다.