POOOLING FOREST
CTO의 시선으로 본 소프트웨어개발: 코드를 넘어 비즈니스를 짓는 일 - 풀링포레스트 CTO 송찬영이 전하는 소프트웨어 개발의 본질. 기술적 완벽함보다 중요한 비즈니스 가치와 문제
Culture & Philosophy

CTO의 시선으로 본 소프트웨어개발: 코드를 넘어 비즈니스를 짓는 일

풀링포레스트 CTO 송찬영이 전하는 소프트웨어 개발의 본질. 기술적 완벽함보다 중요한 비즈니스 가치와 문제 해결 중심의 개발 원칙 세 가지를 공유합니다.

송찬영

CTO

안녕하세요. 풀링포레스트 CTO 송찬영입니다.

"개발은 코드를 짜는 것 아닌가요?" 주니어 개발자 면접을 볼 때 종종 듣는 질문입니다. 반은 맞고 반은 틀린 말입니다. 저 또한 10년 전에는 밤새워 돌아가는 코드를 짜는 희열에만 취해 있었습니다. 화면에 내가 의도한 대로 기능이 구현되고, 데이터베이스에 값이 착착 쌓이는 것만으로도 충분히 개발을 잘하고 있다고 믿었죠. 하지만 CTO로서 조직을 이끌고 프로덕트를 시장에 내보내면서 알게 되었습니다. 코드를 잘 짜는 것은 시작일 뿐이며, 진짜 소프트웨어개발은 그 너머에 있다는 사실을요.

솔직히 말씀드리면, 우리 팀도 초반에는 '기술적 완벽함'이라는 함정에 빠진 적이 있습니다. 엔지니어링 팀 전체가 최신 아키텍처 도입에 열을 올렸습니다. 당시 유행하던 마이크로서비스 아키텍처(MSA)를 섣불리 도입하려 했고, 모든 코드를 함수형 프로그래밍 스타일로 바꾸려는 시도도 했었죠. 개발자들끼리는 신이 났습니다. "우리가 이렇게 힙한 기술을 쓴다"는 자부심이 있었으니까요.

하지만 그 결과는 참담했습니다. 정작 고객이 원하는 기능 출시는 두 달이나 미뤄졌고, 복잡해진 배포 파이프라인 때문에 사소한 버그 수정에도 반나절이 걸리기 시작했습니다. 비즈니스 팀에서는 "도대체 개발팀은 뭘 하고 있느냐"는 불만이 터져 나왔고, 개발자들은 "우리가 만든 구조를 이해 못 해서 그렇다"며 방어적으로 변했습니다. 기술 부채를 해결하려다 오히려 운영 부채라는 더 큰 빚을 지게 된 셈입니다. 그때 저는 뼈저리게 느꼈습니다. 고객에게 가치를 전달하지 못하는 코드는 아무리 우아해도 쓰레기에 불과하다는 것을요.

이 실패를 통해 제가 깨달은 소프트웨어개발의 본질은 '문제 해결'과 '비즈니스 임팩트'였습니다. 기술은 도구일 뿐, 목적이 되어서는 안 됩니다.

그렇다면 어떻게 일하는 방식을 바꿔야 할까요? 풀링포레스트 개발팀은 세 가지 원칙을 세워 이 문제를 돌파했습니다.

첫째, '왜(Why)'를 코드보다 먼저 정의합니다.

기획서가 내려오면 무작정 IDE(통합 개발 환경)부터 켜는 습관을 버렸습니다. 대신 이 기능이 왜 필요한지, 고객의 어떤 불편함을 해결하는지, 이 개발이 우리 비즈니스 목표인 매출 증대나 리텐션 유지에 어떻게 기여하는지 치열하게 묻습니다. 만약 개발자가 납득하지 못하면 기획팀과 다시 논의합니다. "이 기능은 개발 비용 대비 효용이 낮으니, 기존 기능을 재활용합시다"라고 역제안을 하는 개발자가 우리 팀에서 가장 인정받는 개발자가 되었습니다.

둘째, 완벽함보다 속도를 선택합니다.

여기서 말하는 속도는 단순히 타이핑 속도가 아닙니다. 피드백 루프의 속도입니다. 3개월 동안 완벽한 소프트웨어개발을 해서 내놓는 것보다, 1주일 만에 핵심 기능만 담은 MVP(최소 기능 제품)를 내놓고 고객 반응을 보는 것이 훨씬 효율적입니다. 저희는 AI 코딩 도구인 Cursor나 Claude를 적극적으로 활용해 보일러플레이트 코드를 짜는 시간을 획기적으로 줄였습니다. 인간 개발자는 비즈니스 로직의 정합성을 검증하고 아키텍처를 설계하는 고차원적인 고민에 시간을 씁니다. AI 덕분에 실패 비용이 낮아지니, 더 과감하게 시도하고 빠르게 수정할 수 있게 되었습니다.

셋째, 개발자의 언어가 아닌 사용자의 언어로 소통합니다.

"API 응답 속도가 200ms 지연돼서 리팩토링이 필요해요"라는 말 대신, "사용자가 결제 버튼을 누르고 기다리는 시간이 길어 이탈률이 높으니 이를 개선하겠습니다"라고 말합니다. 기술적인 이슈를 비즈니스 리스크로 환산해서 설명하는 능력, 이것이 시니어와 주니어를 가르는 결정적인 차이입니다.

지금 여러분이 맡고 있는 프로젝트를 한번 돌아보세요. 혹시 너무 완벽한 코드를 짜느라 출시가 늦어지고 있지는 않은가요? 혹은 '이건 기술적으로 어려워요'라는 말로 비즈니스의 가능성을 차단하고 있지는 않은가요?

소프트웨어개발은 결국 사람과 사람을 연결하고, 가치를 창출하는 과정입니다. 코드는 그 과정을 돕는 수단일 뿐입니다. 저 역시 여전히 새로운 기술을 공부하고 코드를 볼 때 가슴이 뛰는 엔지니어입니다. 하지만 이제는 그 기술이 우리 고객의 삶을 어떻게 바꿀지 상상할 때 더 큰 희열을 느낍니다.

기술 너머를 볼 줄 아는 시야를 가질 때, 여러분은 단순한 코더(Coder)가 아닌 대체 불가능한 문제 해결사로 성장할 것입니다. 그 여정이 결코 쉽지 않겠지만, 분명 그만한 가치가 있습니다. 오늘도 모니터 앞에서 고군분투하는 여러분을 응원합니다.

지금 읽으신 내용, 귀사에 적용해보고 싶으신가요?

상황과 목표를 알려주시면 가능한 옵션과 현실적인 도입 경로를 제안해드립니다.