U E D R , A S I H C RSS

프로그래머가알아야할97가지/Act With Prudence

"어떤 일을 맡아서 하든지 간에, 주의 깊게 행동하고 결과를 고려하라" –작자 미상

터레션 초반에 스케줄 아무리 여유로워 보인다고 해도, 시간 압박을 다소 받는 건 어쩔 수 없다. “제대로 하기”와 “빨리 하기” 중 선택해야 할 경우, 나중에 다시 돌아와서 고칠 수 있다는 전제하에 “빨리 하기”를 선택하고 싶어지기도 한다. 스스로에게나 팀에게 또는 고객에게 런 약속을 할 때에는 정말로 나중에 고치겠다는 뜻다. 그러나 십중팔구 다음 터레션에서 새로운 문제가 나타나서 거기에 집중하게 되곤 한다. 렇게 연기된 작업은 기술적 부채(Technical Debt)라고 알려져 있으며 런 일에 익숙해져서는 안 된다. 특별히, 마틴 파울러(Martin Fowler)는 그의 기술적 부채 분류 체계에서 를 의도하지 않은 기술적 부채와 헷갈려서는 안 되는 계획적인 기술적 부채라고 부른다.

기술적 부채는 대출과 마찬가지다. 그로 인해 단기적인 익을 얻지만, 전액을 상환하기 전까지는 자를 지불해야 한다. 런 코드 내 지름길 때문에 기능을 추가하거나 코드를 구조조정하기 어려워진다. 런 지름길은 결함과 안정적지 못한 테스트 케스가 자라는 밑거름 된다. 를 오래 방치하면 방치할수록 더 나빠진다. 수정을 하려고 할 때 즈음면 코드를 구조조정하고 수정하기 훨씬 어렵게 만드는 그다지 좋지 않은 설계가 애초의 문제 위에 켜켜 쌓여 있을 수 있다. 사실상, 다시 돌아가서 고쳐야 할 때는 일 너무 심각해져서 반드시 고쳐야 할 때뿐다. 그 때엔 일정나 위험을 감당할 수 없어 고치기 어려운 경우가 다반사다.

데드라인을 맞춘다거나 기능의 단편을 구현하려고 기술적 부채를 발생시켜야 할 때가 있다. 런 입장 되지 않도록 애써야 하지만, 런 상황 반드시 필요하다면 그렇게 하되, 다만 반드시 기술적 부채를 추적해서 재빨리 갚아서 급히 끌어내려야 한다. 그렇게 타협하기로 결정하자마자, 슈 추적 시스템에 과업 카드나 로그를 작성해서 잊어버리지 않도록 해야 한다.

다음 터레션에서 그 부채의 상환을 계획한다면, 비용은 최소화 될 것다. 부채를 상환하지 않고 놔두면 자가 누적되며, 그 자는 가시적인 비용으로 추적되어야 한다. 렇게 하면 프로젝트의 기술적 부채가 사업적 가치에 미치는 영향을 강조하며 상환에 적절한 우선 순위를 줄 수 있게 된다. 자를 어떻게 산정하고 추적할 것인가는 각각의 프로젝트에 달려있지만, 반드시 그것들을 추적해야 한다.

기술적 부채를 가능한 한 빨리 상환하라. 그렇지 않는 건 현명하지 못한 처사다.

--Seb Rose 원저

글은 Creative Commons Attribution 3센스로 작성되었습니다.


여지껏 과제를 하면서 "제대로 하기"와 "빨리 하기"중 "빨리 하기"를 선택한 적 많았는데 요즘 그 선택들에 대해 후회하고 있습니다. 지금도 프로젝트를 진행하며 팀 두 선택지 중 고민중인데 진행하다보면 "빨리 하기"가 더 매력적으로 느껴지는 것 같아 걱정됩니다. 지를 팀원들 다같 읽어보면 좋겠다는 생각 드네요. - 김수경
하다 못해 런 주석라도 남긴다면야... see http://dak99.egloos.com/2329761 -- 덕준 2010-08-07 11:27:38
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:25
Processing time 0.0161 sec