'식별'에 해당하는 글 1건

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
어느 한가한 토요일 방안에서 뒹굴고 있을 때였다. 심심해서 머리 속으로 년도별 나만의 최고의 책을 뽑아보고 있었다. 심사 결과 2008년에는 구현패턴(Implementation Patterns), 2009년에는 Growing Object Oriented Software, Guide By Tests(이하 GOOS), 2010년에는 Working Effectively With Legacy Code(이하 WEWLC)가 뽑혔다. 이 세 권의 책은 내게 큰 영향을 미쳤는데, 이 책들이 내게 어떻게 영향을 주었나라는 점을 가만히 생각해보니 재밌게도 각기 조금씩 다른 점이 있다는 것을 알게 되었다.

1. 지식의 체계화

때로 실무경험을 통해 다양한 경험적 지식이 축적되어 있는 경우가 많다. 이 때 누군가가 내가 이미 경험해 알고 있는 어떤 것을 이야기하면 쉽게 공감하고 반응할 수 있다. 그런데 이렇게 내가 경함 것을 글로 정리하려 하면 재밌는 일이 생긴다. 분명 나는 A,B,C,D 각각에 대해 모두 잘 알고 있는데, 정리하려 했더니 잘 정리가 안 되는 것이다. 나는 아직 머리 속에서 지식의 체계화가 되지않아 이런 일이 발생한다고 생각한다. 즉, 여러 지식이 머리 속에 거미줄처럼 얽혀있는 것이다. 이런 때는 글로 관련 지식을 정리하기 어려울 뿐더러, 글을 쓰더라도 형편없는 글이 되는 때가 많다. 

켄트 벡의 구현패턴은 내가 지식을 체계화 할 수 있도록 도와준 책이다. '클래스 내에서 변수에 간접적으로 접근하는 것과, 직접적으로 접근하는 것 중 무엇이 좋을까?'라고 물어보았을 때 대답을 할 수 있는 사람이 얼마나 될까? 켄트 벡은 이에 대해 매우 상세하게 설명해준다. 난 구현패턴을 읽으며 경험했지만 정리되지 않았던 지식을 체계적으로 정리하게 되었다.

2. 새로운 시야

때로 시야가 확 넓어지는 때가 있다. 예전에는 생각치도 못했던 영역을 보게 되는 것이다. 그 영역은 이미 근처에 있었지만 내가 미처 보지 못했던 곳일수도 있고, 한번도 본적 없는 장소일수도 있다. 새로운 영역을 볼 때 기존의 쌓인 지식은 빠르게 재검토 되고, 큰 기쁨과 함께 많은 도전거리가 생긴다.

GOOS를 읽으며 이렇게 새로운 시야가 열림을 경험했다. 내가 익숙하게 하던 코딩을 완전히 다른 시각에서 보게 되었다. 특히 '객체지향 소프트웨어에서 가장 중요한 부분은 객체간의 의사소통이다'에 담긴 의미를 어렴풋이 깨달은 후로, 내 코드의 디자인은 급격히 달라지게 되었다. 

구현패턴을 읽으면서도 새로운 시야가 열림을 경험했다. 어느날 켄트 벡은 프로그래밍을 할 때 본인이 결정하는 것을 인지하기 시작했고, 그 사건을 계기로 많은 구현 패턴을 식별해냈다고 한다. 이 부분을 읽으며 나 역시 프로그래밍을 할 때 습관적으로 결정하는 것이 많다는 것을 깨달았다. 이후 '내가 왜 변수명을 이렇게 짓지?', '왜 이 메서드가 여기에 있어야 하지?'에 대해 고민하기 시작했다. 이는 GOOS와 마찬가지로 기존에 가졌던 생각을 변화시키고, 행동 또한 달라지게 했다.

3. 확신

2010년 초여름 JCO 발표를 준비하고 있었다. 발표 주제는 '리팩토링과 검증'이다. 작성한 자료를 쭉 읽어보니 많은 부분이 경험적인 내용이었다. 누군지도 잘 모르는 많은 사람 앞에서 발표를 해야했기 때문에, 대가를 통해 보편적으로 널리 인정 된 내용과 상충이 되는 내용이 있지 않을까라는 걱정이 들었다.

그래서 그동안 완독하려 했지만 게으름에 미처 하지못하던 WEWLC를 빠르게 읽어 나갔다. 결국 책을 읽고 난 후 저자의 의견과 내가 그동안 생각했던 부분이 크게 다르지 않다는 것을 깨달았다. 이는 내가 그동안 경험하고 사고하며 내린 결론의 방향이 올바르다는 확신을 주었고, 결과적으로 이런 부담 없이 JCO 발표를 수행할 수 있었다.

4. 성장의 필요성 인식

처음부터 얘기하려 했던 책은 아니지만 정리하다보니 마틴 파울러의 리팩토링에 대해서도 얘기를 하고 싶다. 난 2004년 마틴 파울러의 리팩토링을 처음 읽어보았다. 당시 난 마틴 파울러가 누군지 몰랐고 책도 회사에 돌아다니던 것을 가져다가 본 것이었다. 그런데 처음 책을 읽을 때 충격을 받았다. 왜냐하면 마틴 파울러가 코드를 수정하기 전에 하는 일련의 절차가 너무 이상해 보였기 때문이다. 리팩토링에서 '변수를 final로 고친 후 재할당이 없다는 것을 확인한다.' 같은 문구를 볼 때 전혀 공감이 되지 않았다. 더 나아가 마틴 파울러라는 사람이 이렇게 작은 부분까지 신경을 쓰는 것을 보니 약간의 편집증이 있는 사람 같다는 생각을 하기도 했다. 결국 거부감이 심하게 들어 책을 덮었고, 그 후로 꽤 오랫동안 이 책을 읽지 않았다. 지금은 어떤가? 난 진심으로 마틴 파울러를 깊히 존경한다. 리팩토링에 있는 내용은 정말 뛰어난 내용이라 생각한다.

결국 2004년의 난 리팩토링을 읽을 준비가 되지 않았던 것 같다. 때로 여러 곳에서 높히 평가하는 책임에도 난 좋은 점을 못느끼기도 한다. 이런 일이 생기는 여러 이유가 있을 것이다, 그 중 하나는 아직 그 책에 있는 내용을 이해하고 받아들일만한 역량이 되지 않아서이지 않을까? 내가 리팩토링을 처음 읽었을 때처럼 말이다.

 



WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,