- 대규모 기술 부채를 가진 회사에서 코드 복제와 구식 프레임워크로 인한 비효율이 발생함
- 프로젝트 진행 중 관리 신뢰 상실과 조직 내 변화 저항이 주요 장애로 작용함
- 기술 부채의 근본 원인은 요구 불명확, 비현실적 일정, 구식 기술 선호, 경영진의 단기 대응, 개인의 자존심 등 사람 요인임
-
기술적 성과뿐 아니라 인식 관리와 커뮤니케이션이 프로젝트 성공에 필수적임
- 엔지니어는 기술 능력 외에도 조직 내 협업과 인간관계 조율 능력을 갖춰야 함
기술 부채와 복제 코드 문제
- 수백만 줄의 코드와 단위 테스트 부재, 10년 이상 된 프레임워크 사용으로 심각한 기술 부채 존재
- Windows 전용 모듈을 Linux에서 실행하기 위해 코드 수십만 줄을 복사·붙여넣기로 처리
- 이로 인해 두 개의 코드베이스가 생겨, 기능 추가와 버그 수정이 각각 따로 필요해짐
- 이러한 상황은 유지보수 불가능한 구조를 초래하며, 장기적으로 코드 간 괴리가 커짐
사람 문제로 인한 기술 부채
-
기술 부채 프로젝트는 경영진 설득이 어렵고, 결과적으로 기능 변화가 거의 없기 때문에 가시적 성과 부족
- 문제의 본질은 기술이 아니라 사람의 태도와 조직 문화
- 많은 개발자가 변화에 저항하며, 과거 방식에 안주
- 코드 구조는 작성자의 성격과 변화 수용도를 반영
- 기술 부채는 명확하지 않은 요구, 비현실적 약속, 구식 기술 선택, 경영진의 중단 결정, 개인적 자존심 등에서 발생
- “기술 부채를 청산하는 속도보다 새 부채가 쌓이는 속도가 빠르다”는 인식 제시
- 응급실의 출혈 멈추기에 비유, 근본 원인 차단이 우선
이상적인 엔지니어링 세계의 부재
- 엔지니어링 문제를 정치나 조직 맥락과 분리해 해결할 수 있는 이상적 환경은 거의 없음
- 대부분의 프로젝트에는 비기술적 이해관계자가 존재
- “우리가 하고 있으니 믿어달라”는 태도는 통하지 않음
-
성과 인식 관리가 실제 성과만큼 중요
- 비기술자는 기술 부채 정리의 필요성을 직관적으로 이해하지 못하므로, 정량적·사업적 가치로 설명해야 함
- 리더십이 엔지니어링 배경이 없는 경우, 가시적 수치와 효과 제시가 필요
시니어 엔지니어에게 필요한 역량
- 시니어 이상 직급에서는 부서 간 협업과 인간관계 조율 능력이 필수
- 학교에서는 컴퓨터 과학만 가르치며, 성격·자존심·관계 관리는 다루지 않음
- 뛰어난 기술력을 가진 엔지니어라도 대규모 이니셔티브에서는 실패할 수 있음
- 개인 생산성은 높지만, 조직적 영향력은 제한적
-
‘Heads up coder’ 개념 제시
- 깊은 기술 역량을 유지하면서도 프로젝트 리스크를 조기에 인지하고 팀을 조정할 수 있는 인물
- 단일 코어처럼 혼자 빠르게 일하는 대신, 팀 전체를 효율적으로 이끄는 역할이 중요
결론
- 대부분의 기술 문제는 사람, 문화, 커뮤니케이션의 문제로 귀결
- 기술 부채 해결에는 조직적 변화 수용과 리더십의 이해가 선행되어야 함
- 진정한 시니어 엔지니어는 기술과 인간 이해를 함께 다루는 균형형 리더임