brunch

You can make anything
by writing

C.S.Lewis

by 요우 Jul 07. 2023

기술 부채에 대해 (Technical Debt)

복리처럼 늘어나는 빚 때문에 고통받는 개발자들

'부채'라고 하니 뭔가 어감이 좋은데 사실 그냥 기술적인 '빚'이다 빚. 기술에 무슨 빚이 있는가 싶은데, 생각보다 우리 주변에서 쉽게 발견할 수 있다. 뭐 그냥 예를 들면 다음과 같은 것 들이다.


이 코드의 시간 복잡도가 영 좋지 않지만 우선은 개발 일정이 빡쌔니 나중에 리팩터링 하자.

기능을 추가 했는데, 뭔가 전체적인 시스템 아키텍쳐와는 컨셉이 맞지 않는 것 같아. 근데 파악할 시간도 없고 아 몰랑. 나중에 보자.

내가 뭔가를 짰는데, 급하게 짤게 또 있네.. 일단 급한 거부터 하고 나중에 문서화를 하자.

거의 다 만들고 나니 코딩 컨벤션이 똥망이네. 에이 이번만 이렇게 하고 다음에 시간 날 때 컨벤션 맞춰야지.

아.. 거의 다 만들었는데 갑자기 기획이 바뀌다니. 일단 급한 데로 기능만 돌아가게 해두고 나중에 리팩터링 하자. 등등  


놀랍게도 친숙한 상황일 것이고, 내가 저질렀던 일들이다. 생각해보면 저렇게 일단 닥친 상황을 쳐낸 다음에 수복한 일이 있었던가? 놀랍게도 완벽하게 잊어버린 뒤 나중에 그 코드를 다시 건드릴 일이 생겼을 때 다시 생각났을 것이다. 그런데 시간은 흘렀고, 비즈니스 이슈 때문에 빨리 만들긴 해야 하고 그래서 또 같은 짓을 한다. 그리고 빚은 더 쌓인다.

기술 부채가 단리면 좀 괜찮을 거 같은데, 아무래도 느낌이 복리다.

사실 개발하다 보면 필수 불가결하게 만나게 되는 상황이다. 절대 이런 상황을 피할 수는 없지만 사실 개발자 입장에서는 영 골치픈 일이다. 빚이 쌓이다 보면 이자가 늘어나서 고통받는 것처럼 기술 부채도 쌓이다 보면 개발자들에게 고통을 준다. 정돈되지 않은 코드와 일단 완성부터 시키자 식의 로직들이 쌓이게 되면 결과적으로는 개발 속도를 더더욱 느리게 만드는 악순환에 빠지게 된다.


그렇다면 이때 개발자가 취해야 할 올바른 행동 방식은 무엇인가. 더더욱 딱히 의지할 곳 없는 가여운 나와 같은 주니어 개발자들은 어떠한 행동을 해야 하는가? 사실 이거는 불가피하게 비즈니스와 엮어서 생각할 수밖에 없다. 다양하게 생각해 볼 수 있지만 궁극적으로는 다음 목적을 지녀야 한다.


우선은 기술 부채를 쌓고, 비즈니스 이슈를 해결하는 것이
이 조직과 사용자들에게 얼마나 더 좋은 가치를 제공할 수 있는가?

비즈니스 이슈와 개발 이슈는 도대체 무슨 원수를 졌을까

당장 기술 부채를 쌓고 비즈니스 이슈를 해결했다면 기술 부채를 해소할 수 있는 기간을 분명하게 보장받아야 한다. 이게 말처럼 쉽지는 않고, 개발을 잘 모르는 결정권자들과 다른 팀들을 설득하기는 더 어렵다. 그렇지만 기술 부채 해소가 적절한 시기에 이루어지지 않으면 언젠가 크고 아름다운 똥 같은 레거시 시스템들 덕분에 기술 '부채'가 아닌 기술 '부도'가 날 수도 있다. 


부도가 나면 어쩌냐고? 개발 서버도 내리고 다시 만드는 거지 뭐. 시간은 시간대로 날리고, 돈은 돈대로 날리고, 의욕은 의욕대로 날리고. 읏흥~


작가의 이전글 소프트웨어 개발과 가치에 대해
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari