Beautiful Code (찰스 페졸드 외 37인, 2007) 독후감
코딩 명장들이 자신이 짰던 코드 중 가장 아름답다고 꼽는 코드는 어떠할까? 이런 궁금증이 이 책을 보게 했다. 어떤 코드들이 과학을 넘어선 저편에 존재하는 듯한 ’아름답다’라는 단어를 사용하게끔 할까?
확실히 코드와 그 배경이 되는 지식의 완벽한 이해, 그리고 관련된 경험이 바탕이 되어야 아름답다고 느낄 수 있나 보다. 챕터마다 글쓴이가 다르다 보니 여러 가지 언어(C, C++, Lisp, Haskell 등)가 나오고 분야도 다르다. 몰랐던 지식을 습득할 수는 있었으나 어느 챕터 하나 아름답다고 느끼지는 못했다. 감동적인 영화를 보면 눈물도 흘릴 줄 아는 나의 감성이 바짝 메말라 있기 때문은 아닐꺼고 아름다울만 한 코드를 아름답게 느낄 수 있는 데 필요한 경험과 내공이 부족하기 때문일 것이다.
아름답다고는 못 느꼈지만 흥미로운 내용이 꽤 많았다. “28장 아름다운 디버깅”이 가장 흥미로웠는데, 8,721 곳의 수정 사항에 숨어 있는 버그를 고치는 이야기다. 한 번도 생각해보지 않았던 방법이었다. 변경 사항들을 분할해 적용하고 컴파일에 성공하면 테스트를 하는 과정을 뎁스를 높여가며 진행하는데, 이런 생각을 하고 그것을 자동화해서 진짜 한 것이 놀라웠다. 비슷한 경험이 있었는데, 도저히 버그 원인을 찾지 못해 하나하나 눈으로 변경사항들을 비교했었다. 휴~ 얼마나 괴롭던지.
몇 개 더 꼽아 보자면 코드 테스트에 대한 사고의 흐름이 잘 적혀 있어서 흥미로웠던 “7장 아름다운 검사”, N차원 배열의 접근을 다차원 반복자로 추상화시켜서 접근했던 “19장 NumPy의 다차원 반복자”, 얘기는 많이 들었으나 한 번도 살펴보지 못한 MapReduce의 맛을 살짝 보게 해준 “23장 MapReduce를 이용한 분산 프로그래밍”, 버튼 하나만 사용할 수 있는 스티븐 호킹 박사를 위한 인터페이스 설계가 흥미로웠던 “30장 버튼 하나로 세상과 소통하기” 가 흥미로웠다.
언젠가 내공과 관련 코드를 직접 짰던 경험이 충분할 때, 어떤 코드를 보고 혹은 내 코드를 보고 눈물을 쥘쥘 흘릴 수 있겠지. 이때 이 책을 다시 읽어보고 싶다.
Update
표지 사진 교체