FreeTalk
2016.05.26 16:47
Technical Debt (기술부채)
조회 수 319 댓글 0
첨부 '1' |
|
---|
아름다운 쓰레기와 사상누각 사이 어딘가
얼마 전 개발자 면접을 볼 때 면접자 분이 물었다.
XX: Python으로 개발을 하신다고 들었어요. 회사 내에서 어떤 코딩 컨벤션을 사용하시나요?YY: 아.. 그게 이제 맞추려고 하고 있어요.
부끄럽다. 하지만 아직도 못 맞췄다.
그리고 새롭게 회사에 들어오신 개발자 분이 내게 물었다.
XX: 웹서비스에서 오래 걸리는 부분들은 모두 비동기로 처리되고 있나요?YY: 아.. 그게 되는 부분도 있고 아닌 부분도 있어요. 리팩터링이 필요해요.
역시나 부끄럽다. 개선해야 한다는 것을 알고 있지만 할 일 목록 어딘가에서 잠자고 있다.
이런 것들을 통칭해 "기술 부채"라 부른다.
일반적인 "부채"가 이자를 내고 돈을 쓰는 시점을 당기는 것처럼 기술 부채는 기술적으로 해결되어야 할 문제들을 뒤로 미루고, 비즈니스 문제를 해결하는 시점을 당기는 것이다.
![technical_debt.jpg](https://www.hooni.net/xe/files/attach/images/2909/604/071/a390f6ad72de301cd2e33138834ab7f2.jpg)
어디까지 네모난 바퀴로 갈까?
(출처: https://christierney.com/2015/12/04/technical-debt-in-an-image/)
예를 들면 다음과 같은 것들이 기술 부채가 된다.
설계된 것을 문서로 남기지 않는다.
- 유닛 테스트를 작성하지 않는다.
- 더 이상 사용되지 않는 DB의 항목을 지우지 않는다.
- 반복되는 일(배포/빌드 등)을 자동화하지 않는다.
- 긴급하게 스펙을 변경한다.
안타깝지만 오늘도 일어난 일이다.
"부채"라는 이름이 참 적절하다고 생각되는 것이 돈을 빌리는 것과 유사한 점들이 많다.
- 빚을 지고 있으면 마음이 불편하다. 특히 빚을 질 때 제일 불편하다. 하지만 그 상황이 지속되면 빚을 지고 있는 상황에 익숙해진다.
- 빌리는 것은 상대적으로 쉽지만 갚는 것은 어렵다. 게다가 한 번에 갚는 것은 불가능에 가깝다. 지금 당장 문서를 쓰지 않고, 테스트를 작성하지 않는 것은 쉽지만 나중에 그것을 회복하기는 어렵다.
- 이자가 붙는다. 지금 배포 자동화를 해두지 않으면 배포를 할 때마다 시간을 쓰게 된다. 그 시간이 이자다.
- 부도가 나는 경우도 있다. 더 이상 복구 불가능한 상태가 되어 프로젝트가 폐기되거나 아예 처음부터 다시 만들게 된다.
돈을 빌리는 것과는 다른 기술 부채만의 특징도 있다.
- 빚을 지는 사람과 갚아야 할 사람이 다를 수도 있다. 어떤 사람이 코드를 리팩터링 하지 않은 상태로 두면 그 부채는 다른 팀원이 갚을 수도 있고, 나의 후임이 갚아야 할 수도 있다.
- 갚아야 할 양이 정확히 예측되지 않는다. 돈을 빌리면 내가 어느 시점에 얼마를 갚아야 하는지 정확히 알 수 있지만 기술 부채는 끝까지 해결하지 않아도 별다른 문제가 되지 않을 수도 있고, 폭탄이 되어 프로젝트를 망칠 수도 있다.
이런 "기술 부채"가 꼭 나쁜 것만은 아니다. 우리에게 돈을 빌려야 하는 이유가 있는 것처럼 기술 부채를 쌓으며 전진을 해야 하는 경우가 있다. 제 시간 내에 결과물을 전달해야 하는 경우이다. 그리고 데드라인은 스타트업에서 훨씬 더 중요하다. 기술 부채를 해결하기 위해 추가로 사용하는 일주일에 사업 기회가 사라져 버릴 수도 있고, 경쟁자가 같은 시도를 먼저 할 지도 모른다.
그렇다면 "지금 기술 부채를 해결할 것인가?"에 대한 의사결정을 어떻게 해야 하는가? 다음 사항에 대한 고민이 필요하다.
- 기술 부채를 해결하는데 얼마나 노력이 드는가?
- 기술 부채의 해결로 얻어지는 가치는 무엇인가?
- 기술 부채를 쌓고, 비즈니스 문제를 풀었을 때 얻어지는 가치는 무엇인가? (보통 이 질문으로 바꾸는 것이 더 쉽다. 비즈니스 문제의 해결을 미뤘을 때 어떤 문제가 생기는가?)
첫 번째 질문은 상대적으로 쉽다. 하지만 그다음 두 가지 질문이 어렵다. 두 가지 모두 변수가 많은 상황을 정량화해야 한다. 따라서 이 비교는 냉철한 분석의 영역이라기보다는 경험에 의한 직관의 영역이라고 생각한다. 다만 그 직관이 보다 정확해 지기 위해서는 회사의 비즈니스 상황과 개발 조직에 대한 명확한 이해가 필요하다.
8퍼센트의 경우 내가 입사 후 지금까지 기술 부채를 쌓는 대신 비즈니스 문제를 빠르게 해결하는 것에 더 높은 우선순위를 두어 왔다. 처음 입사시에는 지금 시기면 비즈니스 문제들이 많이 해결되어 있어서, 아름다운 개발팀을 만들기 위한 일들에 보다 시간을 쓸 수 있을 거라 생각했다. 하지만 성장하는 스타트업에게는 더 많은 비즈니스 기회들이 찾아오고 그 기회들에 대한 실험을 해야 한다는 사실을 잊고 었었다. 하지만 동시에 개발팀의 규모도 커지고 레가시 시스템이 커지고 있다. 즉 기술 부채의 복리효과가 나타나고 있는 상황이다.
오늘도 어떤 쪽으로 추를 옮겨야 할지 고민한다.
개발팀원들이 스스로 만들어내는 제품에 자부심을 잃지 않는 동시에 회사의 사업 또한 속도를 잃지 않기를 바란다.
부디 "아름다운 쓰레기"와 "사상누각" 사이의 고민이 아름답진 않더라도 튼튼한 벽돌집으로 결론 나길 바란다.
[출처] https://brunch.co.kr/@leehosung/2
-
SNS에 중독된 현대인 풍자한 일러스트
via (좌) Joey Klarenbeek (우) asafhanuka / Boredpanda "스마트폰으로 당신은 더 스마트해졌는가?" 스마트폰을 통해 빠른 정보를 습득하고 가까운 사람들과 언제 어디서든 연락을 하는 등 이전과는 180도 다른 삶을 살게 됐다. 손에 든 장난감 마냥 자유롭... -
SONY 1ABT. 다른 BLUETOOTH 장치와 페어링 및 연결하기
다른 BLUETOOTH 장치와 페어링 및 연결하기페어링은 무선 연결을 위해 BLUETOOTH 장치 간에 링크를 생성하는 프로세스입니다. BLUETOOTH 연결을 처음으로 수행할 수 있으려면 장치와 헤드셋을 페어링해야 합니다. 페어링 조작을 시작하기 전에, 다음을 확인하... -
No Image
SpaceGlasses are the future of computing
이거 대박.. 이미 판매되고 있다네.. ㅠㅠ -
No Image
Split Test란? (A/B Testing) - 웹사이트 및 광고 운영 최적화를 위한 도구
Split Test는 A/B test 혹은 A/B split test 등으로 불리기도 하는데 기존의 원본과 대안으로 제시된 대안본들을 동시에 운영한 후 각각의 성과를 비교하여 우수한 것을 선정해 내는 테스트 방식입니다. 웹페이지의 헤드라인, 블로그 포스트 제목, 버튼 텍스트... -
Synology NAS 컨텐츠를 Apple TV(Airplay)로 볼 때 자막이 안나오는 경우
시놀로지 NAS에서 바로 애플TV(Airplay)를 통해 동영상을 볼 수 있는데.. 이 때 자막이 안나온다면 이런 부분을 점검 해보자! ㅋㄷ 1. DSM5.0 이상인지 확인한다. - 이 글을 쓰는 시점에서 5.0 보다 낮은 버전은 없겠지만.. 혹시나.. - Synology 쪽에서 2013... -
Technical Debt (기술부채)
아름다운 쓰레기와 사상누각 사이 어딘가 얼마 전 개발자 면접을 볼 때 면접자 분이 물었다. XX: Python으로 개발을 하신다고 들었어요. 회사 내에서 어떤 코딩 컨벤션을 사용하시나요? YY: 아.. 그게 이제 맞추려고 하고 있어요. 부끄럽다. 하지만 아직도 못 ... -
Trigger Words란? 클릭·전환을 유도하는 단어
trigger words에 의한 전환률 28% 증가 사례split test를 통해 trigger word를 발굴, 전환률을 끌어올린 사례입니다. 원본 – 전환률 14.5% 대안본 – 전환률 18.6% https://vwo.com/blog/ab-test-case-study-how-two-magical-words-increased-conversion-rate-b... -
No Image
TSP 문제를 푸는 알고리즘..
미국 세인트 루이스에 있는 워싱턴 대학의 한 컴퓨터 과학자가 세일즈맨 문제 (Salesman problem)을 좀 더 쉽게 풀 수 있는 알고리즘을 개발하고 시험하였다. 워싱턴대학의 컴퓨터학과 교수인 장박사는 컴퓨터계와 비즈니스계에서 오래된 문제로서 TSP (Travel... -
UI/UX 모바일 기획시 참고 사이트
모바일 웹/어플리케이션 UI,UX 라이브러리 사이트 들을 소개합니다 이번에 베타서비스 진행중인 Shining을 만들면서 링크들이에요 우선 요즘은 UX가 중요해지는데 특성상 이미지로는 확인이 어려워 Gif로 UX 레퍼런스가 공유되고 있죠. http://blog.mariuszwoz... -
Who dies? Quiz
누가 죽게되는지 맞춰보시오 ㅋㅋ 문제 풀이는.. 스크롤을 아래로 조금만 내려보면 나옴.. . . . . . . . . . . 결국 다 죽음.. 공에 맞지 않은 A와 E는 에볼라로 죽음 ㅋㅋ 다른 풀이 방법도.. 이건 어떻게 될까? . . . . . . . . . . 이건 모두 공 맞아 죽음... -
WOL(Wake On LAN) 활용 방법 ㅋㅋ
WOL(Wake On LAN) 활용 알아두면 정신 건강에 좋을 상식들 사전지식 1. WOL(Wake On Lan)은 꺼져 있는 컴퓨터를 켜는 기능, 기술을 말한다. 2. 전원이 꺼져있는 컴퓨터를 켜는 기능은 단순히 특정IP로 매직패킷을 보내는 것이다. 3. 매직패킷(Magic Packet) ... -
YG신인 비아이...대박 사건
본인이 좋아하는 아이돌의 아버지가, 알고보니 삼촌회사 횡령해서 돈빼먹고 망하게 한 장본인이었음.