Page 27 -
P. 27
사항을 배포하는 상호적인 방식으로 조사할 수 있다. 이런 방법을 쓰지 못
한다면 문제를 해결하기 어려울 것이다. 그러므로 절약된 시간의 합계는 매
주 몇 시간을 훨씬 넘어선다.
아니면 컴파일 속도를 생각해보자. 2006년 구글에 입사할 무렵에는 구
글 웹 서버용 C++ 코드를 의존하는 라이브러리와 함께 컴파일하려면 분
20
산 컴파일을 사용해도 20분 이상 걸렸다. 시간이 오래 걸리면 개발자가
의식적으로 피하기 때문에 코드 컴파일을 하루 몇 번 이상 하지 않게 된다.
그래서 컴파일러용 큰 코드 덩어리를 함께 묶어서 처리하고 개발 주기마다
여러 오류를 한꺼번에 수정하려 한다. 2006년 이후 구글은 대규모 프로그
램의 컴파일 시간을 줄이기 위해 상당한 노력을 기울였다. 여기에는 컴파일
단계를 3~5배 단축시키는 오픈 소스 소프트웨어도 포함됐다. 21
컴파일 시간이 20분에서 2분으로 줄어들면 개발자의 작업 흐름이 크게
변한다. 매일 1~2시간이 절약된다는 말조차 그 효과를 크게 과소평가한
것이다. 개발자가 코드상 실수와 오류를 맨눈으로 점검하는 데 걸리는 시간
이 줄어들고 컴파일러에 더 크게 의존할 것이다. 컴파일 속도가 빨라지면
더 작은 코드 덩어리를 더 간편하게 반복적으로 추론하고 코드를 작성하고
테스트할 수 있으므로 반복적인 개발이 중심이 되는 새로운 작업 흐름에 정
착한다. 컴파일 시간이 몇 초 단위로 줄어들면 파일 저장 시 자동으로 코드
를 다시 컴파일하는 백그라운드 작업이 촉발되는 증분 컴파일을 통해 개발
자가 파일을 편집하는 동안 컴파일 경고와 오류를 확인할 수 있어서 프로그
래밍이 전보다 훨씬 더 상호적이 된다. 컴파일 시간이 줄면 10~20번이 아
니라 50번에서 수백 번까지도 컴파일할 수 있게 되면서 개발자의 생산성이
비약적으로 향상된다.
대화형 interactive 프로그래밍 환경이 있는 언어로 전환해도 효과는 비슷하
4장 반복 속도에 투자하라 099
이펙티브엔지니어_07.indd 99 2022-06-14 오후 3:57:33