gimmesilver's blog

Agbird.egloos.com

포토로그



과정과 과정 사이... 단상

'It's not luck'이라는 책을 읽었습니다. 제가 'The Goal'을 인상깊게 읽었다고 하니 제 형님이 이 책도 읽어 보라며 추천해주더군요...
동일한 주인공이 이번에는 좀 더 큰 문제를 해결해 나가는 줄거리입니다. 'The Goal'에서는 병목이 일어나는 부분을 출발점으로 삼아 문제를 해결해 나가는 것이라면 이 책에서는 문제들 간의 상관 관계를 파악하여 근본이 되는 원인을 찾아 해결하는 방법을 제시합니다.
이전 책과 마찬가지로 좋은 내용이 많고 재미있습니다.

그런데...

전 앞으로 당분간은 이런 류의 책은 읽지 않으려고 합니다.
제가 말하는 '이런 류의 책'이란 - 비록 소설의 형식을 빌렸다고는 하지만 - 이 책처럼 어떤 이론을 기반으로 한 성공 지침서나 유명인의 성공 에세이, TDD나 XP, agile 등의 요즘 유행하는 방법론 관련 서적, 심지어 Effective 시리즈같이 필수적으로 알아야 (한다고 많은 이들이 주장)하는 프로그래밍 스타일 지침서도 포함합니다.

이런 책들이 가진 공통점은 너무나 멋진 이론 혹은 반드시 숙지해야 하는 핵심적인 사항을 친절하게 정리하여 보여줌으로써 독자로 하여금 나도 이 내용을 충실히 지켜나가면 똑같이 성공할 수 있겠지? 혹은 멋지고 안정적이며 뛰어난 구조를 가진 프로그램을 만들 수 있겠지? 아니면 일주일에 16시간만 일하면서도 프로젝트를 성공적으로 수행할 수 있겠지? 라는 생각을 심어준다는 것입니다.

어찌해야할지 몰라 막막해하는 독자에게 자신감이나 희망을 불어 넣어준다거나 출발점을 삼을 만한 길을 제시해준다는 측면에서 이런 책들은 무척 긍정적입니다. 하지만 자칫 이런 지침서들이 주는 달콤함에 중독되기 쉽습니다. 제가 당분간 이런 류의 책을 읽지 않겠다는 것은 이 때문입니다.

'It's Not Luck'을 읽어 보면 여러 가지 어려움에 처한 주인공이 문제를 하나 하나 상세히 나열해서 차근히 분석해 나가는 장면이 자주 등장합니다. 이 장면이 너무나 세밀하게 잘 묘사되어 있기 때문에 책을 읽다 보면 나도 이렇게 해 나가면 앞으로 처할 혹은 현재 회사가 당면한 문제점을 슬기롭게 헤쳐 나갈 수 있을 것 같습니다.

근데 현실은...?

한 때 디자인 패턴이 유행하던 때가 있었습니다. 아...물론 요즘도 많이 공부합니다. 특히 GoF의 디자인 패턴 책은 객체 지향 프로그래머들에게는 바이블과도 같습니다. 이 책이 유명한 이유는 디자인 패턴에 대한 최초의 책이라는 점도 있지만 한편으로는 실제 프로그래밍을 하다보면 겪게 되는 많은 설계 상의 어려움을 조목 조목 짚어서 그 해결책을 친절하게 제시해주고 있기 때문입니다.

그래서 처음에 패턴을 공부하면 마치 내공이 몇 갑자 늘어난 기분이 듭니다.이제 클래스 설계를 잘 할 수 있을 것 같기도 하고...
팀원들과 회의를 하면서 데코레이터가 어쩌고...여기서는 템플릿 메소드 패턴이 딱 인걸? 주절주절...뭐 이러면서 뿌듯한 기분이 들기도 합니다.
제가 그랬거든요...

책에 나와 있는 세련된 기법들을 현실에 적용해 봅니다. 제 경험으로는 C++ 프로그래밍으로 1만 ~ 2만 줄 이내의 소규모 개인 프로젝트라면 이런 약발이 잘 먹히더군요. 그래서 신납니다. 그래 역시 개발은 이렇게 해야 돼...

근데 좀 더 복잡하고 대규모이고 여러 명이 개발하는 프로젝트를 하게 되면 갑자기 난항을 겪습니다. 설계가 깔끔하게 안되고 자꾸 예외 상황이 발생하고 말이죠...소스가 점점 지저분해집니다. 리펙토링을 하자니 고칠게 너무 많고 깔끔하게 기능들을 일반화 했더니만 기능이 너무 단조롭고 UI가 불편하다는 말이 들립니다. 그렇다고 이것 저것 요구 사항을 들어 주기위해 그런 예외 상황들을 다 처리하자면 소스가 너무 복잡해집니다. 그래서 짜증이 나죠...
무식한 인간들 같으니라구...개발은 이렇게 하는게 아니란 말야! 버럭 외치고 싶습니다...

결국 다시금 자신의 내공에 한계를 느끼고 인터넷 서점을 뒤집니다...문제를 해결해줄 보다 세련된 지침서를 찾는 것이죠...

제가 이런 지침서들이 모두 쓰레기라고 주장하는 것은 아닙니다. 다만 이런 지침서들이 너무 많고 게다가 너무 친절합니다. 심지어 출퇴근길 지하철에서 부담없이 읽을 수도 있습니다.

근데 지침서들이 제시하는 해결 과정이나 핵심 사항이 언급하고 있지 않은 부분들...단계와 단계 사이의 과정, 그 사이에 발생한 엄청난 고민과 사고의 흐름을 우리는 이 책을 통해서는 결코 얻을 수 없습니다. 현실에서 우리가 대부분 시간과 정력을 소비하게 되는 건 바로 이 부분인데 말이죠...그리고 이런 고민 과정은 대체로...지저분합니다.


이전 회사에서 한 팀장님이 이런 말씀을 했습니다. 자신은 '신화 창조의 비밀'이라는 TV 프로가 싫답니다. 왜냐하면 거기에서는 회사가 성공하기 위해 근로자들이 밤을 지새고 몇 달동안 집에 못들어가고 그러는 것이 마치 무슨 자랑이라도 되는 것처럼 미화되기 때문이랍니다. 맞는 말입니다. 철저히 경영자의 관점에서 미화된 방송일지도 모릅니다.

그런데 다르게 생각하면...
사실이 그렇지 않나요?
모두가 성공하려고 눈에 불을 켜고 달려드는데...내가 누구도 쉽게 범접하지 못하는 뛰어난 능력이나 실력을 가지고 있다면 모를까 결국은 남보다 더 노력하고 남들이 하기 싫어하는 궂은 일을 해야 남보다 성공하는 법 아닌가요?

똑똑하게 일을 해야 하지만 그렇다고 모든 일이 세련될 수는 없습니다...모두가 기획만 하고 설계만 할 수는 없습니다...실제 일을 할 때는 날 코딩도 해야 하고 줄 코딩도 필요 합니다.

비슷한 이야기입니다. 멋져 보이고 세련돼 보이는 과정과 과정의 사이에 있는 음침한 골짜기를 경험하지 못한다면 우리는 언제나 절벽 앞에서 입맛만 다시며 건너편을 바라보고 있어야 할 지 모릅니다...


덧글

  • 세라비 2007/06/30 07:01 # 답글

    맞는 말씀입니다. 지침서 류의 책들만으로는 과정에서 묻어나오는 고민들이 체화되기가 어렵더군요. 다만, 자신이 이미 했던 고민이라면 자신이 내린 결론과 비교하면서 좀 더 세련된 결론으로 빚어내거나, 좀 더 발전된 사고를 할 수도 있을 것 같구요. 고민 과정 전이라도 고민의 방향 같은 것을 짚어주는 역할을 할 수 있을지도 모르겠습니다.

    마찬가지 얘기로 멘터링을 할 때도 자신이 체득한 어떤 원리 같은 것을 그대로 전달하는 것은 무의미한 일이라고 생각합니다. 적절한 경험이나 고민 없이는 절대로 공감이 안되거든요. 오히려 직접 경험하고 샛길로 빠지거나 함정에 빠지지 않도록 (물론 적절한 함정에는 빠지도록 방관하면서도) 해주는 방법이 훌륭한 멘터링이라고 생각합니다.
  • silverbird 2007/07/02 22:16 # 답글

    // 세라비
    일종의 스스로 학습법인가요? ^^
댓글 입력 영역