본문 바로가기
개발/리뷰

[실용주의 프로그래머 리뷰] 1. 깨진 창문을 내버려 두지 말라.

by -master 2023. 1. 11.

 도심에서 어떤 건물은 아름답고 깨끗한 반면, 어떤 건물은 썩어 가는 유령선 같다. 왜일까? 깨끗하고 온전하며 사람들이 거주하던 건물이 부서지고 황폐한 을씨년스러운 곳으로 금세 바뀌어 버리는 이유는 뭘까? 도시 부패를 연구하는 사람들이 아주 흥미로운 유인 메커니즘을 발견했다.


 깨진 창문.


 
오랜 기간 수리하지 않고 방치된 창문 하나 때문에 거주자들에게 버려진듯한 느낌이 스며든다. 당국자들이 그 건물에 별 관심이 없다는 느낌 말이다. 그래서 다른 창문이 하나 더 깨진다. 사람들이 쓰레기를 함부로 버리기 시작한다. 벽에 낙서가 등장한다. 심각한 구조적 손상이 시작된다. 


 깨진 창문을 내버려 두지 말라.


 
나쁜 설계, 잘못된 결정, 혹은 형편없는 코드 등이 모두 깨진 창문이다. 발견하자마자 바로 고쳐라. 적절히 고칠 시간이 없다면 일단 판자로 덮는 것만이라도 하라. 불쾌한 코드를 주석처리 하거나, '아직 구현되지 않았음'이라고 메시지를 표시하거나, 가짜 데이터로 대치해 놓거나 하라. 

 깨끗하고 잘 기능하던 시스템이 일단 창문이 깨지기 시작하면 급속도로 악화되는 경우를 많이 보았다. 방치는 다른 어떤 요인보다도 부패를 더 가속시킨다.


 깨진 창문 하나는 내리막길로 가는 첫걸음이다.


 깨진 창문이 꽤 있는 프로젝트에서 일할 때는 '나머지 코드가 전부 쓰레기니까 나도 그렇게 하지 뭐.' 라는 사고에 빠지기 너무 쉽다. 이 시점까지는 프로젝트가 괜찮았더라도 방심해서는 안된다. 


 명심하라. 깨진 창문은 없어야 한다.

 

 이번 장을 읽으면서 유독 과거를 많이 돌아보게 되었다. '나는 얼마나 많은 깨진 창문을 방치하였던가.'

 바쁘다는 이유로, 일정이 촉박하다는 이유로, 다른 급한일이 더 많다는 이유로 깨진 창문을 하나씩 하나씩 방치해 두었다. 

 처음부터 프로젝트를 망칠 생각으로 착수하는 개발자는 당연히 없을것이다. '이번에는 더 잘 만들어야지.' 항상 그렇게 시작하지만 끝까지 만족스러운 프로젝트는 없었다.

 

 마치 '깨진 창문 이론' 처럼 처음에는 코드를 정갈하게 유지하다가도, 깨진 창문을 방치하는 순간부터 코드품질은 급격하게 하락하곤 했다. 그리고 쏟아진 물은 주워 담기가 매우 힘들었다. 아니 담을 수 없었다.

 

 

 

 

 

출처 : 실용주의 프로그래머(20주년 기념판), 데이비드 토머스, 앤드류 헌트

 

 

반응형

댓글