brunch

CTO의 주니어 개발자들과 대화

사업 자산, 기술 자산, 기술 부채

by 홍영훈


얼마전에 파트타임 CTO로 일하고 있는 스타트업 회사에서 주니어 개발자들과 대화 중.


CTO: 우리가 개발하고 있는 서비스의 소스 코드는 기술 자산인가요? 아니면 사업 자산인가요?


개발자: 기술 자산이 아닐까요? 개발의 결과물이니까요.


CTO: 만약 사업 부서가 개발한 서비스가 사업적으로 실패한다면 소스 코드는 어떻게 될까요? 재활용 가능할까요?


개발자: 음... 거의 재활용되지 않을 것 같습니다.


CTO: 그러면 시간이 지나면 아무도 관심을 가지지 않아서 소스 코드가 사라지겠네요?


개발자: 아마 그렇게 될 것 같습니다.


CTO: 기술 자산인데 사업 부서가 사업을 중단하면 사라진다? 뭔가 이상하지 않나요?


개발자: 음...


CTO: 사업 부서가 어플리케이션 소스 코드의 운명을 결정한다면 그건 100% 기술 자산으로 보기 힘듭니다. 오히려 사업 자산의 성격이 강하다고 생각합니다.


개발자: 그렇다면 기술 자산은 무엇인가요?


CTO: 기술 부채라는 용어를 들어봤나요?


개발자: 네.


CTO: 기술 자산과 기술 부채는 종이 한 장 차이입니다.


개발자: 반대 의미 아닌가요?


CTO: 어떤 소스 코드가 기술 자산이 되거나 기술 부채가 되는 기준은 무엇일까요?


개발자: 깔끔하게 작성되어 있다면 자산이 되고, 스파게티 코드처럼 재사용하기 힘들게 복잡한 소스는 부채가 되는 것이 아닐까요?


CTO: 그 말도 맞아요. 하지만 저는 기술 자산과 기술 부채를 나누는 기준은 시장 내의 경쟁 관계에 있다고 생각합니다.


개발자: 무슨 뜻인가요?


CTO: 경쟁자보다 더 저렴하고 빠르게 제품을 개발하거나 품질이 우수해지는데 기여한다면 해당 소스 코드는 기술 자산이 됩니다. 반대로 경쟁자보다 비용이 더 많이 들거나 제품 생산 속도가 느리며 안정성도 떨어진다면 기술 부채가 됩니다.


개발자: 아...


CTO: 그래서 동일한 소스 코드라도 처음에는 기술 자산이었지만 시장 환경의 변화나 기술의 발전으로 인해 기술 부채가 될 수도 있습니다. 특히 제품이 복잡해지면 처음에는 생각하지 못했던 단순한 구조로 개발된 소스 코드가 나중에 복잡한 구조에 적응하지 못할 때도 기술 부채로 간주됩니다. 하지만 그 본질은 경쟁 관계의 비교 우위에서 기술 자산과 부채가 결정된다고 봅니다.


개발자: 어렵네요.


CTO: 다시 기술 자산은 어떤 것인지 질문으로 돌아가봅시다. 기술 자산은 경쟁자보다 더 저렴하고 빠르게 높은 품질의 제품을 생산할 수 있게 도와주는 것들로 정의했습니다. 우리는 이미 이런 노력을 하고 있어요. 예를 들어 다양한 개발 문서 작업, 개발 프로세스 정립, 코드 리뷰, 공통 모듈의 라이브러리화 작업, 프로젝트 완료 후 코드 최적화 작업 등을 통해 기술 자산을 확보하고 있습니다.


개발자: CTO님이 항상 강조하시는 내용이네요. 우리가 별로 좋아하지 않는 작업들이지만요. ㅎㅎ


CTO: ㅎㅎ 맞아요. 그렇지만 중요한 작업들이에요.


개발자: 몇 개월 전부터 CTO님이 지시하신 우리 회사의 리액트 UI 컴포넌트들의 표준화 모듈 작업도 이와 관련된 일이 맞나요?


CTO: 네, 그게 바로 그 일입니다. 그 작업은 디자이너, 퍼블리셔, 프론트 엔드 개발자가 모두 효율적으로 사용할 수 있는 UI 모듈을 표준화하여 비용과 시간을 절약할 수 있게 도와줍니다. NPM을 통한 표준 모듈화 작업은 우리의 기술 자산을 확보하는 중요한 예시입니다.


개발자: 아, 그렇군요. 그래서 CTO님이 당장 사용되지 않을 요소까지 까다롭게 요구하셨던 거였군요. 언제 사용될지 모르는 것을 왜 그렇게 강조하시는지 궁금했어요.


CTO: 어플리케이션에서 사용되는 요소들은 필요할 때만 개발하고 사용하면 되지만 표준 모듈이나 라이브러리 개발은 다른 방식으로 접근해야 합니다.


개발자: 의도를 좀 더 분명하게 이해했습니다.


CTO: 결론적으로 우리 개발 조직은 기술 부채를 줄이고 기술 자산을 늘리는 것을 임무로 합니다. 기술적으로 선도하는 회사를 만드는 것은 큰 기술 개발 전략을 수립하여 달성하는 방법도 있고 각자 맡은 업무 내에서 소소하지만 의미 있는 노력들을 통해 기술 자산을 확보하는 것도 또한 가능합니다.


개발자: 우리 연구개발 조직이 하는 일을 정확히 이해했습니다.

keyword