출판사 및 저자
- 저자: 타이터스 윈터스, 톰 맨쉬렉, 하이럼 라이트
- 역자: 개앞맵시
- 출판사: O’Reilly, 한빛미디어
책 소개
최근에 읽은 이 책에 대한 서평 중에서 그런 이야기가 있었습니다. 누군가가 개발자가 읽어야하는 가장 중요한 책 단 세 권을 꼽으라 한다면 기존에는 Code Complete, Refactoring 이후에 마땅한 것이 없었다. 그런데 그 세 번째에 들어갈만한 책이 나왔다. 이 책을 다 읽은 현 시점에서 저 역시도 이 책은 개발자라면 반드시 읽어야 하는 책의 목록에 들어가야 한다는 생각을 하게 됐습니다. 동시에 앞의 두 권 역시도 읽어봐야 할거라는 생각이 드네요.
이 책을 요약한 핵심은 책의 첫 장, 첫 문장에서 이미 정리돼있습니다. 프로그래밍과 소프트웨어 엔지니어링의 가장 큰 차이는 시간, (규모) 확장, 실전에서의 트레이드오프 이렇게 세 가지라고 생각합니다. 그리고 이 책은 장장 700여쪽에 달하는 분량으로 이 이야기들을 다룹니다.
유명한 말 중에 ‘악마는 디테일에 있다’는 말이 있습니다. 그만큼 전달하려는 메시지는 전달하는 사람과 그 내용의 디테일을 배제하고 이야기할 수 없으리라 생각합니다. 애석하게도 저에게는 이 책이 갖추고 있는 디테일들을 훌륭하게 전달할 수 있는 방법에 대해서 알지 못합니다. 이 책은 충분히 구글이 겪어온 수십년의 세월동안 얻은 배움의 정수를 요약해서 후배들이 나아가기를 바라는 소망을 담아 만들어낸 무공비급이라 생각합니다.
이에 비하면 매우 보잘것 없는 경험이지만, 최근 두 명의 팀원 분을 모집해 채팅 어플리케이션을 작성하는 경험을 하고 있습니다. 그리고 그 기간은 약 4주째에 들어가고 있는 시점입니다. 이 과정을 통해 내가 작성하고 있는 프로그램이 계속해서 초기와 같은 발전을 유지하고 소통이 되면서 이후에도 계속해서 발전할 수 있도록 하는 것이 얼마나 어려운 일인지를 느끼고 있습니다.
요즘에는 이런 것을 소프트웨어 업계쪽에서도 관심을 많이 가지고 있는 분위기입니다. 이를 가지고 소위 CI/CD라고 부르고 있고 많은 개발 팀에서 git과 같은 버전 관리 시스템이나, jenkins와 같은 툴을 사용하고 있습니다. 저 같은 경우는 git을 사용한지 꽤나 오랜 기간이 됐습니다만, 이것을 왜 사용하고 어떻게 해야하는 지에 대한 이해는 애석하게도 부족하고 고민해 본 적도 없었다는 생각을 하게 됩니다.
아직은 많이 모자랍니다만 이 책을 읽고 프로그래머에서 소프트웨어 엔지니어가 되기 위한 고민을 할 수 있는 사람으로 한 발짝 나아갈 수 있었습니다. 좋은 소프트웨어 엔지니어가 되기 위해서 앞으로 더 많은 사람들이 이용하고, 수년에서 수십년간 유지보수가 되어야 할 코드를 작성하려면 무슨 고민을 해야 하는가 그것은 제가 살아나가면서 계속해야 할 숙제일 것입니다.
혹시나 본인이 프로그래머로써 나아가야할 방향을 찾지 못해 방황하고 있거나, 자신의 프로그램이 갈수록 생산성이 떨어진다는 생각을 하고 계시는 분이라면 이 책을 추천드립니다.