- 제목 : Clean Code 클린 코드 애자일 소프트웨어 장인 정신 (Program Programming Programmer)
- 출판사 : 인사이트
- 저자 : 로버트 C. 마틴
- 옮김 : 박재호, 이해영
프로그램이 뭔지 코딩이란 어떻게 하는것이 좋은 건지 처음부터 다시보기 살펴보기 위해서 오늘(2019년 3월 31일) 펼쳐든 책인데 1장의 깨끗한 코드 내용이 너무 감명 깊어서 약 1페이지 반 분량을 인용해 본다.
내가 나쁜 코드들을 계속 생산하여 내 코드를 열어본 다른 개발자가 욕을 하고 있지는 않나 반성하며 책을 읽어나가고 있다!
요약 인용도 고려해봤으나 미천한 글 재주로 저자의 의도를 해칠 수 있어 원문을 그대로 인용한다.
왜 이 책을 읽어야 되는지는 아주 잘 설명 하고 있으니 구입해서 읽어 보도록 하자
1장, 깨끗한 코드 중(p4 ~ p6)
…… (중략)
나쁜 코드로 치르는 대가
2-3년 넘게 프로그램을 짰다면 남들이 저질러놓은 쓰레기 코드로 고생한 경험이 있으리라. 코드가 하도 엉망이라 프로젝트 진도가 안 나가는 경험도 있으리라. 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 프로젝트 초반에는 번개처럼 나가다가 1-2년만에 굼뱅이처럼 기어가는 팀도 많다. 코드를 고칠 때마다 엉뚱한 곳에서 문제가 생긴다. 간단한 변경은 없다. 매번 얽히고설킨 코드를 ‘해독’해서 얽힌고설킨 코드를 더한다. 시간이 지나면서 쓰레기 더미는 점점 높아지고 깊어지고 커진다. 청소할 방법이 없다. 불가항력이다.
나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 그러다가 마침내 0에 근접한다. 생산성이 떨어지면 관리층은 나름대로 복구를 시도한다. 어떻게? 생산성을 중가시키려는 희망을 품고 프로젝트에 인력을 추가로 투입한다. 하지만 새 인력은 시스템 설계에 대한 조예가 깊지 않다. 설계 의도에 맞는 변경과 설계 의도에 반하는 변경을 구분하지 못한다. 게다가 새 인력과 팀은 생산성을 눞여야 한다는 극심한 압력에 시달린다. 그래서 결국은 나쁜 코드를 더 많이 양산한다. 덕택에 생산성은 더더욱 떨어져 거의 0이 된다.
원대한 재설계의 꿈
마침내 팀이 반기를 든다. 그들은 이처럼 협오스러운 코드로는 더 이상 일하지 못하겠다며 관리층에게 재설계를 요구한다. 관리층은 재설계에 자원을 쏟아붓기 싫지만 생산성이 바닥이라는 사실을 부인할 도리가 없다. 결국은 팀이 요구하는 대로 원대한 재설계를 허락한다.
새로운 타이거 팀이 구성된다. 모두가 타이거 팀에 합류하고 싶어한다. 새로운 프로젝트니까. 처음부터 시작해 진정으로 아름다운 작품을 창조할 기회니까. 하지만 가장 유능하고 똑똑한 사람들만 타이거 팀으로 차출된다. 나머지는 계속해서 현재 시스템을 유지보수한다.
이제 두 팀이 경주를 시작한다. 타이거 팀은 기존 시스템 기능을 모두 제공하는 새 시스템을 내놓아야 한다. 그뿐만이 아니다. 그동안 기존 시스템에 가해지는 변경도 모두 따라잡아야 한다. 새 시스템이 기존 시스템 기능을 100% 제공하지 않는 한 관리층은 기존 시스템을 대체하지 않을 테니까.
때때로 경주는 아주 오랫동안 이어진다. 10년이 넘게 걸리는 경우도 보았다. 새 시스템이 기존 시스템을 따라잡을 즈음이면 초창기 타이거 팀원들은 모두 팀을 떠났고 새로운 팀원들이 새 시스템을 설계하자고 나선다. 왜? 현재 시스템이 너무 엉망이라서.
방금 한 이야기를 일부라도 겪었다면 시간을 들여 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아남는 길이라는 사실을 인정하리라.