gimmesilver's blog

Agbird.egloos.com

포토로그



경험이 우리에게 주는 것 단상

 '지금까지 작성한 코드는 총 몇 줄?' 이란 글에서 글쓴이는 지금까지 몇 줄이나 프로그래밍을 해봤는지 혹은 경력이 얼마나 되는지는 큰 의미가 없다고 주장합니다. 이와 비슷한 주장은 여러 글에서 많이 봤습니다. 주변에서 소위 업계에 잔뼈가 굵은 선배 개발자가 있었는데 도대체 그 년차가 될 동안 뭐했나 싶을 정도로 실력이 형편 없더라는 그런 이야기들도 함께 하면서 말이죠.

 어쨌든 이글에는 다음과 같은 주장이 담겨 있습니다.
1. 사람마다 학습 능력의 차이가 있다. 따라서 사람을 뽑을 때는 그 사람의 경력보다는 학습 능력을 파악해야 한다.
2. 학습 곡선은 선형적이지 않다. 따라서 경력이 쌓일 수록 실력이 늘어나는 속도는 점점 줄어든다. 따라서 경력이 많다고 해서 적은 사람보다 실력이 그렇게 뛰어나진 않다.
3. 프로그래밍은 노력만으로 극복하기 힘든 즉, 재능이 필요한 전문적인 작업이다.

 일견 맞는 말입니다. 사람마다 학습 능력에 차이는 있고 따라서 10년차 경력자가 반드시 1년차 개발자보다 실력이 뛰어나지는 않을 것입니다. 그런데...  사람마다 다른 그 학습 능력이란 것은 대체 어떻게 구분하고 파악할 수 있을까요? 학습 능력을 파악하려면 그 사람을 가르쳐보는 것이 가장 확실한 방법입니다. 하지만 그렇다고 면접보러 온 사람에게 '당신의 학습 능력을 알아보고 싶으니 저희 회사에 한 1주일 정도만 나와서 우리 하는 일을 배워보시겠습니까?' 라고 말해야 할까요? 아니 사실 그 사람의 능력을 제대로 파악하려면 1주일 가지고는 어림도 없습니다. 적어도 몇 달 혹은 1년 정도는 같이 지내봐야 하겠죠. 즉, 현실적으로는 같이 일해보지 않는 이상 그 사람을 평가한다는 것은 거의 불가능한 일입니다. 대신 그 사람이 '코드 몇 줄이나 짜봤냐' 혹은 '이러이러한 기술 혹은 분야를 얼마나 경험해봤냐'를 아는 것은 적어도 '이 사람이 평균적인 학습 능력을 가졌다면 이 정도 실력은 되겠구나' 라는 것을 추정하는데 도움이 되는 정보입니다. 정리하자면 코딩 줄 수는 절대적인 가치는 될 수 없지만 적어도 편리한 보충 자료 역할은 할 수 있습니다.

 학습 곡선이 선형적이지 않다는 말 역시 맞습니다. 시험에서 50점 맞던 학생이 80점 맞는 것보다 90점 맞던 학생이 100점 맞는 것이 더 어렵습니다. 그런데 그렇다고 만약 누군가가 '5년 차 개발자나 10년 차 개발자나 또이또이다.' 란 주장을 한다면 그건 좀 난감합니다. 만약 그런 사람이 있다면 전 이렇게 물어보고 싶습니다. '그럼 당신은 회사에서 5년 차부터는 연봉을 인상해주지 않더라도 괜찮겠습니까?'

 회사는 학원이나 학교가 아닙니다. 사람을 학습 능력이나 실력이 향상되는 양에 비례해서 평가하지도 않고 심지어 실력만으로 평가하지도 않습니다. 연봉 협상 자리에서 '전 제 작년에 파이썬을 마스터했구요. 작년에는 루비를 공부해서 10분 만에 제 블로그 만들었어요. 그러니 연봉 인상해 주세요.' 라고 주장할 수는 없습니다(뭐 신입사원 면접이라면 어필이 될 수 있겠죠).

 '프로그래밍은 지적이며 창조적인 예술이다.' 란 말을 많이 합니다. 그래서 재능 이야기도 나오고 사회가 우릴 몰라준다는 항변도 하고 그러죠. 그런데 정말로 그런지는 좀 생각해봐야 할 문제입니다. 여러분이 개발자라면 자신이 지금 작성하고 있는 코드를 한 번 바라보십시오. 정말로 지금 만들어 놓은 프로그램이 자신의 모든 역량을 최대한 발휘해서 만들어 놓은 예술 작품이라고 생각하십니까? 평범한 사람은 감히 생각하지 못했을 자신만의 독창적인 알고리즘을 가지고 있습니까? 누가봐도 감탄을 금치못할 깔끔하고 세련된 구조를 가지고 있습니까? 더 이상 뺄것이 없는 완벽한 코드를 위해 방망이를 다듬고 있습니까? 아니면 그냥 예전에 배운대로 혹은 저번에 했던 방식으로 반복적인 코딩과 기계적인 리펙토링을 하고 있습니까?
 혹자는 '난 정말 예술적인 프로그래밍을 하고 싶은데 일정 상 어쩔 수 없이 이렇게 할 수 밖에 없다!' 라고 항변할지 모릅니다. 아닙니다! 어쩔 수 없다라고 생각하는 바로 그 일이 원래 지금 하고 있는 그 일의 본질입니다.
 
 '소프트웨어 아키텍처 문서화' 라는 책의 '역자의 말'에서 인상적인 문구를 보았습니다. 역자들이 들은 아키텍처 수업 시간에 교수가 학생들에게 다음과 같이 말했다고 합니다.

'자네들 모두 소프트웨어 아키텍트가 되고 싶은 거 아네. 그런데 그거 아는가? 아키텍트가 하는 일 중에 98%는 모두 따분하고 재미없는 문서화 작업이라는 거. 나머지 한 2% 정도만 자네들이 신나고 재미있어 하는, 뭔가를 설계하고 결정하는 일이지. 힘빠지는 얘기겠지만, 어쩌겠는가? 대부분의 전문분야가 다 이런 식으로 돌아가는걸.'

 프로그래밍 역시 마찬가지입니다. 우리가 지적이고 예술적인 재능을 뽐낼만한 기회는 극히 드뭅니다. 대부분의 작업은 지루한 반복작업이며 이것을 잘 처리하는 능력은 대개 우리의 재능에서 나오는 것이 아니라 경험에서 나옵니다.
 자신의 일에 대해 자부심을 가지고 있는 것은 높이 평가할만 하지만 그렇다고 과대포장해서는 안될 일입니다. 

 못푸는 문제는 계속 못풀고 한번 실수하면 똑같은 실수를 반복한다는 주장은 섣부릅니다. 비록 우리는 똑같은 실수를 반복하지만 그게 무의미하지는 않습니다. 더 많이 실수하면 결국 더 이상 그 실수를 하지 않게되는 순간이 올 수도 있고 전에는 실패했던 방법이 상황이 바뀌면서 더 이상 실수나 실패가 아닌 순간이 올 수도 있습니다.

 얼마전 raganworld 라는 블로그에서 Old 라는 글을 읽었습니다(좋은 글입니다. 일독을 권합니다). 이 글에서 글쓴이는 경험이 쌓일수록 얻게 되는 이득에 대해 이야기 합니다. 얼핏 생각하기에 경험이 많으면 예전에 했던 실패를 거울 삼아 그 때 했던 삽질을 반복하지 않는 장점이 있다라고 생각하기 쉽습니다. 그러나 글쓴이는 그 뿐만이 아니라 때로는 예전에 실패했던 방법 그 자체가 언젠가 상황이 바뀌어 미래에는 적합한 해결책이 될 수도 있기 때문에 경험이 중요하다고 말합니다. 포유류는 백악기 시대에는 낙오자였을지 모르지만 지금은 - 물론 바퀴벌레는 그렇게 생각하지 않겠지만 - 세계를 지배하고 있습니다. 그것은 포유류의 능력이 갑자기 향상되었기 때문이 아니라 기후가 바뀌었기 때문입니다.

 이처럼 과거의 경험은 현재의 문제를 해결하는데 필요한 매우 중요한 정보가 됩니다.그 경험이 똑같은 실수를 반복하는 것을 피하는데 사용될 수도 있고 반대로 좋은 해결책 자체가 될 수도 있습니다. - 진부한 표현이지만 - 경험의 힘입니다.

 '사람을 평가하는데 있어 그 사람의 미래 가능성을 보는 것이 중요하다.' 라는 주장에는 이론의 여지가 없습니다. 좋은 말입니다. 하지만 그렇다고 해서 과거 그 사람이 쌓아온 경험을 무시해서는 안됩니다. 미래 가능성과 과거 경험은 둘다 그 사람의 현재를 평가하는 주요 속성입니다.
 '너 지금까지 코드 몇 줄이나 짜봤어?' 라는 질문은 가볍게 보자면 한없이 가볍게 볼 수 있는 유치한 질문일 수도 있겠지만 그 내면에는 무시할 수 없는 무게를 가지고 있습니다. 마찬가지로 누군가가 '나 지금까지 한 백 만줄 짜봤어' 라고 말한다면 '치 코드 양이 중요한가 뭘 어떻게 짜봤는가가 중요하지...' 라고 코웃음치기 전에 그가 지금까지 백 만줄의 프로그래밍을 하기까지 겪었던 수많은 경험의 무게를 느껴볼 필요가 있습니다. 삽질도 백만번 하면 왠만한 포크레인 수준입니다.

핑백

덧글

  • 배재현 2009/02/23 10:28 # 삭제 답글

    참 좋은 글이네요. 경력이 많다는 이유로 인정받고 싶어했던 제 자신을 돌아보게 만듭니다.
  • 장혁 2009/02/26 09:18 # 삭제 답글

    좋은 글 감사합니다. 저는 사회 초년생인데 회사라는 것에 대해서 조금씩 알아가고 있습니다.
    그 중에 느끼는 것이 경험인데, 이 경험이란 것은 능력보다 훨씬 중요한 것이었네요..
  • silverbird 2009/03/05 21:11 #

    좋은 글이라고 하셔서 감사하긴 한데....제 글 어디에 경험이 능력보다 훨씬 중요하다고 되어 있나요?
    전 경험과 능력을 별개로 생각하지도 않거니와 경험이 최고라고 주장하지도 않습니다.
  • park.suhyu 2009/03/12 00:43 # 삭제 답글

    오~~ 간만에 일독을 하게 하는 글입니다. (자주 오지 않는다는 얘기가 아니라 .... 음... 그렇게 들리죠? -_-)

    경험을 하더라도 어떻게 경험을 했느냐가 중요한 것 같습니다.
    스스로의 경험을 되돌아 보는 시간과 여유가 없다면, 좋은 경험도 그냥 힘든 순간으로 스쳐 지나가버릴 것 같기 때문입니다.
  • silverbird 2009/03/12 09:15 #

    아항~ 그러니까 간만에 읽을 만한 글을 썼다는 뜻이죠 -_-)?
댓글 입력 영역