고성능 엔지니어링 팀을 위한 알고리즘 방법

고성능 엔지니어링 팀을 위한 알고리즘 방법
Cozy CodingPosted On Jul 14, 20246 min read

위대한 팀은 위대하게 시작되는 것이 아니라 집중된 노력을 통해 위대해지는 것이다.

2004년 NBA 결승전에서 팀의 가치가 개인을 능가한다는 것이 증명되었다. 로스앤젤레스 레이커스는 다섯 명의 슈퍼스타 개인 기여자처럼 경기를 펼쳤지만, 디트로이트 피스톤즈는 팀으로서 경기를 펼쳤다. 8대1의 승산에도 불구하고, 피스톤즈가 승리를 거두며 위대한 팀이 위대한 개인을 이길 수 있다는 것을 세계에 보여주었다.

위대한 팀을 발전시키는 방법이 있다. 그것은 매니저나 공식적인 리더십 직책에 의존하지 않는다. 당신은 어느 수준에서든지 리더로서 변화를 이끌어 낼 수 있다.

턱먼 모델: 정립되고 불굴의 모습

브루스 터크만의 그룹 발전 단계 모델은 예측 가능한 단계를 통해 선형적으로 진행된다.

🆕 형성 단계에서 팀원들은 개별 역할과 그룹 목표에 대한 불확실성을 마주한다. 서로에 대해 알아가는 동안 많은 예의가 보여집니다. 리더십은 여기서 중요한 역할을 하는데, 방향을 제시하고 팀의 목적과 목표를 확립하는 데 도움을 줍니다.

⛈️ 스토밍 단계는 권력 다툼으로 특징 지어집니다. 이는 경계가 시험되고 갈등이 발생하는 격동적인 시기일 수 있습니다. 극단적인 경우 하위 그룹이 형성될 수도 있습니다. 이 기간 동안 좋은 (과하지 않은) 리더십은 팀을 의견 충돌을 통과시키고 협력을 위한 길을 열어줍니다.

🧘 정립 단계에서 톤은 개인들의 그룹에서 집단적인 팀 정체성으로 전환됩니다. "나"는 "우리"가 됩니다. 팀은 리듬을 찾기 시작합니다. 갈등이 해결되고, 유대감과 결속감이 발현됩니다. 팀원 간의 작업 관계는 경쟁과 갈등이 아닌 상호 존중과 이해를 기반으로 형성됩니다.

📈 이상적으로 팀은 수행 단계로 발전할 것이며, 여기서 팀은 높은 자율성을 갖고 효과적으로 작동합니다. 구성원들은 완전히 참여하며, 강점을 발휘하여 소감 없이 팀의 목표를 달성합니다. 주요 관심은 개별 성취에서 집단적 성공으로 옮겨집니다.

나는 참여한 처음의 엔지니어링 팀이 이미 6명의 엔지니어로 구성된 이미 구축된 팀이었습니다. 아마도 이 팀은 노밍(Norming) 단계에 있었고 수행(Performing)으로 나아가고 있었을 것이라고 생각했습니다. 기여하기를 갈망했습니다.

그후 2주 만에 팀은 모두 충돌하는 상황에 다시 돌아갔으며, 이러한 징후가 극명하게 드러났습니다. 다른 사람들에 대한 우리 당파의 사정을 준비하기 위해 비밀 회의에 참석했습니다. 하나 기억에 남는 팀 회의는 두 명의 엔지니어가 테스트 전략에 대해 논란을 벌이며 지속적으로 방해하는 일로 이어졌습니다.

우리 매니저는 우리가 걱정할 필요 없이 이러한 토론을 이끌었으며, 경계를 설정하고 공유된 목표를 시야에 두면서 이를 지켰습니다. 몇 주 후 우리는 통합된 목적과 상호 존중을 갖춘 정제된 팀으로 나타났습니다.

하지만, 잠깐만요... 무슨 일이 있었나요? 왜 우리가 '폭풍 지름'을 하게 되었을까요?

우리 팀은 이미 구성되어 있었습니다. 몇 년 동안 함께 해오며, 다른 엔지니어들은 제가 합류하기 한 해 전부터 팀에서 작업을 하고 있었습니다. 물론 그들은 이미 폭풍 지름과 정상화를 경험했던 상태였습니다. 왜 우리가 후퇴해야만 했던 걸까요?

영구 팀은 다릅니다

터크먼의 원래 논문은 주로 그룹 치료를 연구한 메타분석입니다. 엔지니어링 팀과 단기간의 치료 그룹 사이에 어느 정도 유사성을 느낄 수 있지만, 영구적인 근무팀의 그룹 역학은 중요한 차이가 있습니다:

  • 타크먼의 분석은 처음부터 함께 일하기 시작한 개인 그룹에 초점을 맞추었습니다. 현대의 팀은 보통 천천히 성장하며, 개인들이 팀의 수명 내내 참가하거나 나가는 것이 일반적입니다.
  • 집단 요법에 참여하는 개인들은 종종 비슷한 개인적 목표(음주 중단, 타인과 스스로 용서하는 등)를 가지지만, 이는 그룹이 독립적인 목표를 가지고 있는 것과는 구분됩니다. 현대의 작업 그룹은 공동 목표(특정 기능 출시, 버그 해결 등)를 가지고 있으며, 개인들은 이를 달성하기 위해 협력해야 합니다.

일부 조정을 통해, 타크먼 모델은 여전히 팀이 현재 어디에 있는지 이해하는 데 도움을 주는 프레임워크로 유용합니다.

모델은 깨끗하고; 현실은 지저분하다

영구적인 팀은 시작이 있지만, 대부분의 구성원들에게는 그 시작이 그들이 가입하기 훨씬 앞선 일입니다. 새 구성원은 팀이 이미 형성, 충돌, 정착 단계를 거친 후로 합류하게 되는데, 이 단계들은 아마도 여러 번 반복된 것일 것입니다.

새로운 멤버가 팀에 합류하면 팀은 다시 형성단계로 돌아갑니다. 안정된 팀은 단계를 빠르게 진행할 수 있지만 속도는 보장되지 않습니다. 형성, 충돌, 정착을 의도적으로 걸어가는 개별 멤버들의 노력에 달려 있습니다.

충돌을 극복하고 정착으로 나아가기 위해서는 특정 팀 멤버들과의 1:1 대화가 필요할 수 있습니다.

성과는 물론 시간이 필요합니다. 많은 팀이 여기까지 도달하지 못합니다. 영구 팀은 확립된 관계와 집단 발전 주기를 빠르게 반복함으로써 이점을 얻습니다.

텀맨 모형의 선형 관계는 영구 팀에 적합하지 않습니다. 현실은 팀 소속 멤버가 변경될 때마다 재설정되는 주기 형태입니다.

팀에 어떻게 영향을 미치는가

당신은 명시적으로 "리드"하지 않더라도, 여전히 팀 전체에 영향을 미칩니다. 그 영향력을 더 좋게 활용할 수도, 나쁘게 활용할 수도 있습니다 ("좋게" 활용하는 것을 시도해보세요, 훨씬 더 즐겁습니다).

❤️ 친절하게

친절함은 과소평가되고 있습니다.

몇 년 전에 함께 일했던 마법사 엔지니어 (우리는 그를 "존"이라고 부르겠습니다)가 있었습니다. 그의 코드는 좋았습니다. 그의 PR은 빨랐습니다. 기술적으로 보면, 그는 훌륭한 엔지니어였습니다.

그에 대해 다른 엔지니어들로부터 일반적인 피드백을 받았습니다:

존이 훌륭한 엔지니어라면 왜 함께 일하기가 그렇게 어려웠을까요? 그의 일은 모든 것을 올바르게 하는 것이 아니었나요?

아니요. 엔지니어의 일은 일을 완료하는 것입니다. 그리고 일을 특정 수준 이상으로 완료하는 데는 다른 사람들과 원활하게 협업하는 것이 필요합니다.

만약 당신이 옳다고 하더라도 아무도 함께 일하고 싶어하지 않는다면, 당신은 팀에 어떤 가치를 제공하고 있는 걸까요?

다른 사람들의 감정에 대해 신중하게 생각하는 것은 당신을 옳거나 틀리지 않게 만들지는 않을 수도 있지만, 남들이 당신의 조언을 구하는 역할에서 더 뚜렷한 영향을 끼치게 할 것입니다.

🤝 도움이 되기

자신의 의도를 확인하고 상황에 대해 더 배우는 시간을 갖도록 몇 가지 순간을 살펴보는 것이 유혹적 일 수 있습니다. 틀린 부분을 볼 때 즉시 수정하는 것이 유혹적이지만, 전체 맥락을 알지 못할 때도 있습니다.

메타의 CTO 앤드류 보스워스(Andrew Bosworth)로부터:

보즈는 피드백을 제공할 때 두 가지 목표를 제안합니다:

  • 당신의 우려가 실수로 간과되는 일이 없도록 이해되도록 하십시오.
  • 당신의 우려가 왜 주의를 기울이지 않는지 이해하도록 하십시오.

좋은 피드백은 슈퍼파워입니다. 나쁜 피드백은 파국으로 이어질 수 있습니다.

🔭 주의

당신의 팀이 진행 중인 업무에 대해 알아두는 데 필요한 시간이 놀랍게도 매우 적습니다. 나는 몇 년 전 이 의식적인 습관을 시작한 이후 매일 아침과 저녁에 팀의 진행 중인 작업을 검토하기 위해 처음과 마지막 20분을 보내고 있습니다. 이 의식적인 과정을 시작한 이후 뭔가가 놓치는 일이 훨씬 적어졌습니다.

책임을 완수하는 것은 스킬입니다. 이를 '수행 기능'이라고도 합니다. 그것은 단순히 조직화되어 있다고 하는 것 이상의 것이며, 다른 기술처럼 실전할 수 있습니다. Jillian Enright가 수행 기능 스킬과 관련된 전략을 포함한 멋진 기사를 썼습니다.

또 다른 몇 가지 작은 변화로 큰 결과를 얻을 수 있습니다:

  • 더 많은 PR에 기여하세요. 코드와 밀접한 관련이 있는 토론은 맥락에 가득 차 있습니다.
  • 문서 작업에 열정적이세요. 이것은 공개 Slack 채널에서 질문하는 것만으로도 충분합니다. 또는 제품용 내부 문서에 올인해보세요. (힌트: 갖고 싶었던 문서의 개요를 만든 다음 가장 많은 컨텍스트를 가진 엔지니어들에게 채워 넣는 작업을 맡기세요.)

📚 훌륭하게 해보세요

제가 일을 훌륭하게 해냈다는 사실로부터 엄청난 만족을 느낍니다. 내가 할 수 있는 것만큼이 아니라 객관적으로 어떤 측면에서나 훌륭하게 수행되었다는 것이죠. 이는 공부하고 연습하고 실수를 바로 잡고 보통이 되는 자연적인 유혹에 적극 대항해야 한다는 것을 의미합니다.

이것에는 노력이 필요합니다. 그러나 자신에게 우수한 엔지니어가 되어야 합니다. 왜냐면 안될 이유가 없기 때문이죠. 무언가를 한다면 정말 잘하세요.

  • 책을 읽으세요. 또 한번 강조하고 싶은 점입니다. 책을 읽는 것은 학습 속도를 높여줍니다. 특히 특정 주제에 깊이 파고들고 싶을 때 도움이 됩니다. Clean Architecture부터 시작해서 현재 작업과 관련된 책을 연이어 읽어보세요.
  • 글을 쓰세요. 다른 사람들에게 가르치는 것은 자신의 기술을 향상시킵니다. Medium과 같은 플랫폼을 찾아서 경험을 공유하고 배운 것을 다른 사람에게 가르쳐보세요.
  • 기술을 연마하세요. 엔지니어링은 기술입니다. 그리고 모든 기술과 마찬가지로, 연습을 통해 더 나아질 수 있습니다. 어려운 문제를 접근할 때 그것을 통해 개선의 기회로 바라보고 단순히 풀어야 하는 과업으로 여기지 마세요.

🗣️ 개방적으로 대하라

내 핵심 신념 중 하나는 사람들과 관련된 대부분의 문제는 효과적인 커뮤니케이션을 통해 해결할 수 있다는 것입니다. Tuckman 모델과 내가 설명한 파생 모델은 무엇보다도 대인관계와 효과적인 커뮤니케이션입니다. 더 나은 커뮤니케이션을 위해 시간과 노력을 투자하는 가치가 있습니다.

우리는 모두 효과적(무효적)인 팀에서 서로 다른 경험을 했습니다. 당신이 참여한 훌륭한 팀으로부터 얻은 교훈은 무엇인가요?

더 많은 엔지니어링 및 리더십에 관한 멋진 아이디어를 찾으려면 The Atomic Engineer의 나머지를 확인해보세요 ⚛️ 🧑‍💻