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
   22   23   24   25   26   27   28   29   30   31