회고로부터 배우는 '나'라는 개발자
회고로부터 배우는 ‘나’라는 개발자
배경
최근 프로젝트를 완료한 이후, 동료 개발자들과 회고를 진행했습니다. 회고에서는 설계의 아쉬움, 테스트 커버리지의 중요성, 시간 분배, 팀 컨벤션, 리뷰의 이유 등과 같은 여러 이야기를 나눌 수 있었는데 이야기를 할 수록 내가 이 프로젝트에 어떻게 기여했는지? 그리고 나는 어떤 개발자인가 를 다시금 생각해보게 됐습니다.
주드 벨링엄
(잉글랜드 축구 국가대표팀의 미래인자 현재로 불리우는 선수)
축구계에서 가장 주목받는 선수 중 하나인 주드 벨링엄에 대해서는 이런 묘사가 있습니다. 지단만큼 유려하지는 않아도 지단보다 수비 기여가 높다. 카카보다 빠르거나 골을 많이 넣지는 않아도 영향력의 범위가 크다. 제라드와 같은 중거리는 없어도 제라드보다 기술적으로 훌륭하다.
즉, 이 선수는 모든 영역에서 고르게 뛰어난 능력을 갖춘 육각형 선수이고, 이런 재능이 그를 세계 최고의 선수중 하나로 만든 이유 중 하나라고 생각합니다.
축구에서 공격, 수비, 체력, 전술 이해, 리더십 등 여러 측면이 있듯이 개발팀에게도 다양한 역량이 필요하다고 생각합니다. 한두 영역에서 천재적인 능력보다, 모든 영역에서 균형 잡힌 역량을 갖춘 개발자가 실제 프로젝트에서 더 큰 영향력을 발휘하고는 합니다.
육각형 재능 in 개발
개발자로 일을 하다보면 자신의 역량을 정확히 파악하는 것은 어렵습니다. 훨씬 더 재능 넘치고, 기술적으로 훌륭하고, 가치 있는 코드를 만드는 뛰어난 전 세계의 개발자들과 자신을 비교하기도 하고, 때로는 이로 인해서 자신감을 잃기도 합니다. 그러나 이런 비교는 어쩌면 단적인 측면에서의 비교일지도 모릅니다.
저는 지금까지 3년간 일을 하면서 협업에서 만난 다양한 유형의 개발자를 봤습니다. 이런 다양한 유형의 분들과 일을 하면서 육각형 개발자로서 갖추어야 할 능력이 뭘지를 다시금 생각해봤습니다.
코드 마스터
A 개발자는 다양한 기술과 라이브러리를 능숙하게 다루며 어떤 까다로운 문제도 해결해내는 마법사 같은 존재입니다. 오픈소스에 기여할 정도로 깊은 기술적 지식을 갖추고 있으며, 새로운 기술에 대한 학습 속도도 굉장히 빠릅니다.
소통의 달인
B 개발자는 팀원들과의 소통뿐만 아니라 디자이너, 기획자 등 다른 직군과의 의사소통에 특별한 재능을 갖고 있습니다. 복잡한 기술적 개념을 쉽게 설명하고, 일을 잘 분담하고 조율하여 팀 전체의 효율성을 높입니다.
시간의 마법사
C 개발자는 정해진 시간에 정해진 기능을 칼같이 만들어내는 극강의 효율을 자랑합니다. 우선순위 설정 능력이 뛰어나며, 마감 시간을 놓치는 법이 없습니다. 업무 계획을 체계적으로 세우고 그에 따라 꾸준히 진행합니다.
아키텍쳐 시야술사
D 개발자는 시스템의 큰 그림을 그리고 확장 가능한 아키텍처를 설계하는 데 탁월합니다. 미래의 요구사항까지 예측하고 준비하며, 장기적인 관점에서 시스템을 설계합니다.
품질 장인
E 개발자는 깔끔하고 정교한 코드를 작성하는 장인입니다. 코드 품질과 테스트를 중요시하며, 지속적인 리팩토링을 통해 유지보수하기 좋은 코드베이스를 만들어냅니다.
문제 해결사
F 개발자는 복잡한 버그와 난해한 이슈를 해결하는 데 탁월한 능력을 보입니다. 끈기 있게 문제의 근본 원인을 파악하고, 창의적인 방법으로 해결책을 찾아냅니다. 위기 상황에서 특히 빛을 발하는 개발자입니다.
나는?
이런 탁월한 개발자들과 일하면서, 저는 스스로의 개발자 프로필을 돌아보게 되었습니다. 저는 여섯 가지 영역 모두에서 최고가 아닐 수 있지만, 각 영역에서 저의 강점을 발견할 수 있었습니다.
기술 역량: A 개발자만큼 다양한 라이브러리를 능숙하게 다루지는 못하지만, 필요한 기술을 학습하고 적용하는 데 두려움이 없습니다. 뿐만 아니라 사용하는 기술에 대해서 ‘이해’하고 사용합니다.
소통 능력: B 개발자만큼 모든 직군과 완벽하게 소통하지는 못하지만, 내 업무 분야에 대해서는 누구에게나 설명하고 이해시킬 수 있으며 효율적으로 의사소통할 수 있습니다.
시간 관리: C 개발자만큼 우선순위를 완벽하게 설정하거나 최고의 효율을 자랑하지는 않지만, 전략적인 관점에서 기능을 구현하기 위해 노력할 수 있는 체력과 끈기가 있습니다.
설계 능력: D 개발자만큼 거시적인 아키텍처를 설계하지는 못해도, 내가 세운 설계를 바탕으로 구현하고, 실제 개발 과정에서 설계를 보완해나가면서 제품을 완성해나갈 수 있습니다.
코드 품질: E 개발자만큼 깔끔하고 정교한 코드를 작성하지는 못해도, 코드 품질과 테스트에 신경 쓰고 오류와 버그 없는 커버리지 높은 코드를 작성할 수 있습니다. 또한 다른 사람들과 활발하게 주관을 바탕으로 코드 리뷰를 진행할 수 있습니다.
문제 해결: F 개발자만큼 복잡한 문제를 즉시 해결하지는 못해도, 체계적인 접근 방식과 포기하지 않는 끈기로 결국 해결책을 찾아내는 능력이 있습니다.
육각형 개발자의 의미
주드 벨링엄이 축구에서 보여주는 것처럼, 육각형 개발자가 된다는 것은 모든 영역에서 10점 만점을 받는 것이 아닙니다. 각 영역에서 자신의 강점을 인식하고, 부족한 부분을 보완해 나가는 과정입니다. 육각형은 완벽한 정육각형이 아니라, 나만의 독특한 모양을 가진 육각형이어도 괜찮습니다.
중요한 것은 자신이 어느 영역에서 강점을 가지고 있고, 어느 영역에서 개선이 필요한지 인식하는 것입니다. 그리고 팀 내에서 다른 강점을 가진 개발자들과 협업하면서, 서로의 부족한 부분을 채워가는 것이 진정한 시너지를 만들어냅니다.
농구의 전설 코비 브라이언트는 이런 말을 남겼습니다.
“내가 세계 최고의 선수가 됐다는 것은, 내 동료들을 세계 최고로 만들 수 있다는 능력을 갖추었다는 것”
우리는 언제나 팀으로서 일합니다. 세상에 완벽한 육각형을 가진 개발자는 없겠죠. 중요한 것은 성찰과 노력을 통해서 자신의 강점과 약점을 알고 성장해서 자신만의 육각형을 채우는 것 같습니다. 내 육각형, 동료의 육각형, 다른 동료의 육각형을 모두 겹쳤을 때 꽉찬 육각형을 만들고 그것이 원팀, 베스트 팀이 되는 비결인 것 같습니다.
앞으로의 여정
이번 프로젝트 회고를 통해 저는 앞으로 더 균형 잡힌 육각형 개발자로 성장하기 위한 목표를 세웠습니다:
- 기술적 지식 확장하기: 새로운 라이브러리와 프레임워크를 꾸준히 탐구하고, 오픈소스 커뮤니티에 더 적극적으로 참여하기
- 다양한 직군과의 소통 강화하기: 디자이너와 기획자의 언어를 더 깊이 이해하고, 비개발자를 위한 기술 설명 능력 키우기
- 시간 관리와 우선순위 설정 개선하기: 효율적인 업무 방식과 시간 관리 기법 연구하기
- 아키텍처 설계 능력 향상하기: 다양한 시스템 아키텍처를 학습하고, 설계 패턴에 대한 이해도 높이기
- 코드 품질과 테스트 강화하기: 테스트 주도 개발(TDD)을 더 적극적으로 실천하고, 코드 품질 측정 도구 활용하기
- 문제 해결 능력 발전시키기: 더 복잡한 문제에 도전하고, 디버깅 및 트러블슈팅 방법론 연구하기
다음 프로젝트 회고에서는 이 목표들을 얼마나 달성했는지, 그리고 나의 육각형이 어떻게 변화했는지 돌아볼 것입니다. 완벽한 육각형을 갖춘 개발자가 되는 것은 평생의 여정이지만, 균형 잡힌 성장을 향한 한 걸음 한 걸음이 결국 더 나은 개발자, 더 나은 팀원이 되는 길임을 믿습니다.