축구와 소프트웨어 개발 - 02 로테이션

Posted by 엘키의 주절 주절 on November 27, 2022

개요

모든 팀 스포츠가 개발과 닮은 부분이 많다.

아직도 많은 회사가 1인 개발자인 경우가 꽤 있고, 그게 가능한 직군에 속한다지만, 보통 작은 개발팀이 4~6명, 10명 정도의 팀이 일반적인 것 같다.

개발실로 묶이는 인원을 치자면 20~100명 정도로 조직되는 경우가 많다.

균형이라는, 공정이라는 미명하에 같은 업무를 분배하는 경우를 적지 않게 봤다.

물론 개발은 스포츠가 아니다 보니, 포지션, 뛰는 인원, 선발/교체에 대한 구분이 없기에 이 것도 나쁜 방법은 아니지만, 결국엔 일의 분량이나 종류가 같을 수 없기에 현실적으로 카테고리가 다른 업무던, 업무의 양이던, 업무의 무게감이던 다르게 배정 될 수 밖에 없다.

축구

축구는 어떤가? 위에서 언급한대로, 스포츠이다보니 11대 11로 경기해야 한다.

아무리 좋은 선수를 많이 데리고 있어도, 한 경기 90분에는 11대 11로 경기해야 한다. 대회에 따라 교체 가능한 선수도 달라진다.

선수에 대한 관점을 몇가지를 변수로 나열 할 수 있을텐데,

  1. 선발/교체
  2. 포지션
    • 공격수
    • 미드필더
    • 수비수
    • 골키퍼
  3. 역할
    • 수비적
    • 공격적
    • 균형적
    • 침투
    • 수비 가담
    • 라인 컨트롤
    • 맨 마킹

실제론 당연히 더 복잡하다. 전술에 따라 세부적인 포지션, 주요 임무 등이 아주 많이 다르게 펼쳐진다.

개발

개발은 또 어떤가? 스포츠가 아니다 보니, 모든 구성원이 플레이 해야 한다.

우리가 자각하지 못하고 있을 뿐, 많은 팀장이 팀원들의 업무를 다르게 배정한다. 또 각기 다른 역할이 필요하다.

개발자의 업무 예시

  1. 아키텍트 설계
  2. 기능 개발
  3. 개발팀간 조율
  4. 코드 리뷰
  5. 문서화
  6. 단위 테스트
  7. 개발자 테스트
  8. 버그 수정
  9. 서비스 트러블 슈트
  10. 장애/이슈 대응

이외에도 많기도 하지만, 대부분의 회사가 여기서 +- 된 업무를 처리한다. 이렇게 많은 업무가 존재하는데, 이를 모두 다 대응하기란 쉽지 않다.

한 종류의 서비스만 맡는 경우라고 해도, 업무양이 과다해지기 십상이다.

그래서, 적절한 역할 분배가 중요하다.

역할 분배와 로테이션

축구에서 역할과 로테이션

축구는 보통 포지션은 정해져 있다.

2002 월드컵 당시 멀티 플레이어라는 말이 유행했던 것처럼, 다양한 포지션을 소화하는 선수들이 없는 것은 아니지만, 기본적으로 잘하는 포지션이란 존재한다.

대부분의 리더는 최대한 그에 맞춰 효율을 내려고 시도한다.

로테이션의 경우 같은 포지션의 선수를 둘 이상 보유했을 때, 컨디션과 최근 폼, 전술적 적합도, 다른 선발 선수와의 조화 등을 감안해서 선발/후보/명단 배제를 선택하게 된다.

개발에서 역할과 로테이션

개발에서는 조금 관점이 다르다. 애초에 선발/후보/명단 배제라는 개념이 없기 때문에, 모두가 경기를 뛴다.

그렇다면 로테이션은 어떻게 이뤄지는가?

바로 역할을 주기적으로 바꾸는 데에 있다.

사실 많은 팀이 정체 되고, 소통이 부족해지거나, 공감대가 부족해지는 경우가 특정 업무만 반복 적으로 수행하는 문제다.

이런 문제에 대한 해결책으로, 업무와 역할은 로테이션 되는 것이 좋다.

그러기 위해선 많은 기록과, 업무 프로세스의 유연함 같은 대비가 많이 필요하겠지만, 그럼에도 가져 올 수 있는 장점은 아주 많다.

로테이션을 통한 장점

  1. 업무 공백 리스크가 줄어든다.
    • 생각보다 많은 회사가, 많은 팀이 담당자 부재시 업무가 정체 되거나, 정지 된다.
    • 로테이션은 담당자의 부재에 대한 대응이 가능하게 해준다.
  2. 디테일한 회의/코드 리뷰가 가능해진다.
    • 업무 이해도가 올라갔으므로, 코드 리뷰를 적극적으로 해줄 수 있게 된다.
    • 회의도 마찬가지로 서로 이해도가 높은 상태에서 유의미한 회의가 가능해진다.
  3. 개선에 대한 니즈를 공감하게 된다.
    • 특정 업무에 편중된 작업도, 서로가 거치게 되면서 효율을 높이고 싶어진다.
    • 프로젝트 별로 공통 코드, 업무 별로 자동화/지원 도구 등을 같이 고민할 수 있게 된다.

이외에도 수많은 장점이 있을 것이다.

로테이션의 단점

  1. 능숙함과 숙련에서 오는 효율을 얻기 힘듬
  2. 전문성 부족으로 인한 난도 높은 이슈 해결의 어려움
  3. 태스크 스위칭 비용
    • 태스크 스위칭 시점도 모든 일이 동시에 끝나는 것이 아니기에 어려울 수 있다.

이렇듯 단점은 없는 것은 아니지만, 장점이 더 유효하고, 극복 가능한 단점이 많다.

또한 고도화라 과정에서는 협업이나, 조금 더 기술적 깊이가 있는 사람이 리딩하거나, 담당을 맡게 하는 식의 방법도 로테이션의 일종이라고 볼 수 있다.


나는 어떠한 팀이 공감대를 가질 수록 팀워크와 소통이 좋아진다고 생각한다.

그러기 위해선 상호 작업에 대한 이해를 통해 긴급 대응, 협업 시너지, 소통의 원활함 등의 장점을 위해서 로테이션을 활용해보면 어떨까?