Published on

테크리더의 책임

테크리더의 책임

테크 리더는 다양한 직책을 수행한다. 아키텍트, 프로젝트 관리자, 소프트웨어 엔지니어, 멘토 및 팀원 역할을 동시에 수행한다.
테크 리더가 된다는 것은 직접적인 권한은 없지만 영향력을 행사하는 것이다.

1) 기술적 도움

팀이 수행하는 업무에 관하여 높은 수준의 아키텍처적인 토론을 주도하는 것을 도와줄 책임이 있다.
디자인 회의와 기술 분야를 세부적으로 살펴보는 과정을 주도한다.
또한 극단적인 상황을 극복할 수 있는지 질문을 던지고, 아이디어의 미비점을 찾기 위해 노력한다.

테크리더는 문제 해결에 다음과 같은 기술적인 도움을 줄 수 있어야 한다.

  1. 기술 문제들에 대한 솔루션을 직접 제시
  2. 기술 문제들에 대한 솔루션에 대한 메타 정보를 간접 제시
  3. 1번도 2번도 아니면 막힌 문제에 대한 답답함을 공감하며 문제 풀이에 함께 참여

2) 장애 요소 제거

테크 리더는 장애요소를 제거할 수 있도록 해야 한다. 여기에는 프로덕트 책임자, UX 디자이너 또는 다른 팀의 엔지니어의 질문에 대한 답변을 처리하는 업무도 포함될 수 있다.

또한, UI, UX 시나리오를 만족시키기 위해서 장애요소가 없는지 팀원들과 검토한다.
여기에는 PR이 관심을 받지 못한 상태로 너무 오래 유지되지 않도록 확인하는 것도 포함된다.

3) 팀의 요구사항을 우선적으로 처리하기

테크 리더는 자신의 성공보다 팀 전체의 성공에 투자한다. 이는 팀의 요구사항이 개인적인 요구사항보다 중요하다는 것을 의미한다.

모든 풀 리퀘스트를 검토하고, 슬랙으로 받은 질문에 답하며, 새로운 오류를 분류하는 데 하루에 1시간에서 3시간 정도를 보낼 필요가 있다.
한 마디로, 팀원들이 기다리고 있는 어떤 것이라도 해결하기 위해 할 수 있는 모든 것들을 한다.

이 모든 일을 마치고 나서야 그날 주어진 일을 시작한다. 나머지 시간에도 슬랙을 확인하거나 코드를 검토하지만, 업무 흐름을 방해하지 않고 자연스럽게 잠시 멈출 수 있을 때에만 한다.

4) 일을 위임하기

모든 것을 혼자 하려고 하는 것은 잘못된 생각이다. 팀을 구성하는 이유는 업무를 분담하고, 각자가 혼자서 해낼 수 있는 것보다 함께 더 많은 것을 달성하기 위해서다.

업무의 부담을 혼자 짊어지려고 하면 곧 지치고 말 것이다.
어떤 일에 대해서 자기 자신이 그 일을 해야 할 때와 이를 위임해 줄 때를 안다는 것은 까다로운 일이다.

어떻게 권한을 부여할지 고민해야 한다.
다른 팀원이 전체 시스템을 배우고 역량을 키울 수 있도록 배려하는 의미에서라도 늘 혼자서 감당해서는 안 된다.

테크리드는 직접 결정할지, 팀의 전문가에게 결정을 위임할지, 팀원 전체가 모여 결정할지를 정한다.

5) 프로세스 개선하기

팀을 위해 끊임없이 화재를 진압하러 다니는 자신을 발견한다면 잠시 시간을 내어 그 문제의 근본적인 원인을 생각해 보아야 한다.

예를 들면, 팀원들이 같은 질문을 반복적으로 한다면 이런 기회를 자신의 프로세스로 문서화할 수 있는 기회로 활용해야 한다.
이를 통해 다음에 동일한 질문을 받게 되면 사람들에게 본인이 정리한 문서를 공유할 수 있어야 한다.

무엇을 찾아야 할지 가르쳐 주고, 자신의 사고 과정을 자세히 설명해 준다. 그리고 코드 리뷰에 대한 최적의 적용 사례와 지침도 문서화해야 한다.

또한 반복적이거나 사람의 실수가 일어날 수 있는 작업은 자동화를 통해 개선할 수 있는 기회로 삼는다.

6) 개발자 경험 최적화하기

개발 프로세스를 더 쉽게 하고, 팀의 생산성을 높이는 데 도움을 줄 수 있도록 최적화할 수 있는 것들을 찾는다.

  • 누락된 문서가 있습니까? 해당 문서를 작성합시다.
  • README 를 잘 작성합시다.
  • 자주 중단되는 영역에 테스트가 누락되었습니까? 해당 테스트를 작성해야 합니다.
  • CI 파이프라인이 느립니까? 파이프라인에서 병렬로 실행할 수 있는 단계나 줄일 수 있을 다른 작업이 있는 확인해 봅시다.

7) 어려운 피드백을 잘하기

리더로서 가장 어려운 부분 중 하나는 부정적인 피드백을 제공하는 것이다. 어려운 대화를 나누는 방법을 익혀야 한다.
팀원들이 성장할 수 있도록 좋은 질문을 계속해야 한다.

누군가가 자신의 역할을 충분히 해내지 못한다면, 이에 대한 근본적인 원인을 찾고, 해결 방안을 모색할 수 있도록 함께 노력해야 한다.
이러한 문제가 동기 부여나 숙련도의 문제인가? 숙련도에 관한 문제라면 해당 팀원에게 더욱 적합한 직무나 프로젝트가 있는 것인가?

팀원들이 성공할 수 있도록 최선을 다해야 한다. 하지만, 때로는 팀원들이 계속 업무를 할 수 있을 정도로 돕는 것이 가장 친절한 일이기도 하다.

8) 올바른 판단 내리기

앞으로 나아갈 길이 불확실할 때 팀원들은 테크 리더가 조언을 해주거나 방향 제시를 기대할 것이다.

여기서 핵심은 100% 정확한 해결 방안이 없는 상황에서 어려운 결정을 내리게 되는 경우가 많다는 것이다.
올바른 판단력을 사용하고, 제한된 정보로 결정을 내리며, 자신의 결정을 지지하는 법을 배워야 한다.

일이 잘못되면 자신의 실수를 인정하고, 이를 통해 배워나갈 수 있는 방법을 찾아야 한다.

9) 언제나 공부하고 구성원들의 기술 성장판을 자극하기

테크리더는 팀원들에게 멘토링을 제공하고, 팀의 수준을 올리는 것을 도와줄 책임이 있다.

팀의 수준을 지속적으로 높이려면 계속 배워야 한다. 테크 리더가 지속적으로 성장하는 모범을 보이면 팀원들에게도 배움의 문화를 만들어 갈 수 있다.
자신이 읽고 있는 흥미로운 기사나 책이나 진행하고 있는 부가 프로젝트 등을 공유하면, 이를 통해 팀과 공유할 수 있는 풍부한 아이디어를 제공해 줄 것이다.

또한 팀원의 숙련도에서 부족한 부분을 찾고, 이러한 부분을 채우는 데 도움을 주기 위한 계획을 수립하기 위해 팀원과 협력한다. (교육 기회 등)

엔지니어들의 성장에 대한 열망을 공감하고 그것을 실현해주기 위한 전략을 짜는 것이 기술 리더의 몫이다. (기술공유를 위한 판을 깔아주기 등)