Page 28 -
P. 28
다. 자바에서 작은 표현식이나 함수를 테스트하려면 전체 프로그램을 작성
하고 컴파일하고 실행하는 일괄 작업 흐름을 따라야 한다. 자바 가상 머신
에서 작동하는 스칼라 Scala나 클로저 Clojure 같은 언어가 자바보다 좋은 점
중 하나는 입력-실행(평가)-결과 루프 read-Eval-Print Loop, rEPL에서 표현식
을 빠르게 상호적으로 평가할 수 있다는 점이다. 단순히 REPL이 편집-컴
파일-실행-디버그 루프 edit-complie-run-debug loop보다 빨라서 시간이 절약되
는 것은 아니다. 이전에는 사용하지 않았던 방식, 즉 훨씬 더 작은 표현식
과 함수를 상호적으로 평가하고 테스트할 수 있으므로 시간이 절약되는 것
이다.
새로운 작업 흐름을 도입해서 시간을 크게 절약해주는 도구는 이 외에도
많다. 핫 리로딩 hot reloading은 서버나 애플리케이션 전체를 재시작하지 않아
도 자동으로 새로운 버전의 코드를 교환해 넣을 수 있어 작업 흐름을 조금
더 점진적으로 변경할 수 있다. 커밋할 때마다 코드베이스를 다시 빌드하고
전체 테스트 스위트를 실행하는 프로세스가 시작되는 지속적 통합 continuous
integration을 활용하면 어떤 변경이 코드를 망가뜨렸는지 쉽게 찾을 수 있어
서 시간 낭비가 줄어든다.
도구 도입이 팀 전체로 확장되면 더 많은 시간이 절약된다. 하루에 1시간
을 절약해주는 도구를 팀원 10명이 사용하면 10배의 시간이 절약된다. 구
글, 페이스북, 드롭박스, 클라우데라 Cloudera 같은 기업에 사내에서 사용하
는 개발 도구를 개선하는 전담팀이 존재하는 이유다. 하루에 십여 번 코드
를 빌드하는 개발자 1,000명으로 구성된 팀의 빌드 시간이 1분 줄어들면
매주 거의 개발자 1명이 1년간 엔지니어링하는 시간을 절약할 수 있다! 그
러므로 시간 절약 도구를 찾거나 만드는 것으로는 충분치 않다. 그 혜택을
최대로 누리려면 팀에 도구 도입률을 높여야 한다. 그러기 위해 가장 좋은
방법은 그 도구가 실제로 시간을 절약해 준다는 것을 증명하는 것이다.
100
이펙티브엔지니어_07.indd 100 2022-06-14 오후 3:57:33