천재, 둔재, 부족한 사람

in #kr-dev7 years ago

프로그래머로서 나는 천재인가 둔재인가 부족한 사람인가? 이런 의문은 프로그래머로서 항상 나를 발목잡는 생각이었고, 이런 생각 때문에 그만 둘 생각을 몇번이나 하게 되었다.

question2.jpg

단순히 남들과의 비교에서 생기는 상처가 아니라, 순간순간 나에게 생기는 불만에서 이런 의문은 나를 괴롭혔다.

일화를 하나 소개하자면,

주임 : "책임님 이거 문제가 있는데 왜 이런거죠?"
나 : "글쎄, 센서에서 값을 잘 전달해 주고 있는지 확인해봐야할 것 같은데"
잘난 책임 : "아 나 이거 알어~ 이거 Linux x.x 버전 버그야, 껏다가 켜면 발생되는 문제지?"
주임: "와~~~ 천재, 어떻게 알았지?"

그 잘난 책임은 바로 문제를 해결해주고 떠났다.
그 당시는 기분이 좀 좋지는 않았고, 다시금 위의 질문을 떠올리게끔 되었다.
과연 이 잘난 책임은 천재인가? 아니다 우연히 아는 답을 질문 받았을 뿐이다.

삼국지에서 촉한 제갈공명은 한중을 취하러 수십만 대군을 끌고 나갔다.
위연이라는 장군이 위나라의 수도를 치러가자는 계략을 내놓았지만,
제갈공명은 "나는 이대로 이 대군을 몰고 가면서 백전백승 할 것이다." 하면서 위연의 계략을 무시하였다.
위연의 계략이 성공할 가능성은 매우 높았던 것 같고, 아쉽게도 촉은 그 기회를 노친 것일 수 있다.

오늘도 난 주먹구구식 프로그래밍을 한다. 왜냐하면 잘 모르기 때문이다.
이렇게 하니깐 되네, 저렇게 하니깐 안되네... 어쩌다 정답이 되는 방법을 노리면서 말이다.
이렇게 하는 것은 불가피한 일이긴 하나, 장기적으로 이러한 주먹구구를 반복하는 것은 좋지 않은데 그 이유는 다음과 같다.

  • 일정을 예상할 수 없다.
  • 안되는 경우가 발생했을때 대처하기 어렵다.

전문적인 표현으로는 Risk 관리가 되지 않기 때문이다.

소프트웨어 공학에서의 개발방법론은 위와 같은 Risk 관리를 위해서 태어났다.
개발방법론의 골자는 "이러이러한 방법을 쓰면 소프트웨어가 완성된다"는 것이다.
소프트웨어의 특징은 발전속도가 매우 빠르다는 점이다. 그리고 반복하는 작업은 기계의 힘으로 대치가 가능하다는 점이다.
처음에는 느릴 수 있으나, 반복하면 빨라지고, 익숙해지면 자동화가 가능해서 더욱더 빨라진다.

개발방법론을 사용한 경우 초기에는 진도가 느리다. 하지만 두번, 세번 사용하다보면 익숙해지면서 속도가 빨라질 것을 예상한다.
이것이 프로세스의 힘이기도 하지만, 실패하는 경우 부작용이 크다.
어떤 프로세스를 적용해서 작년에 1년 걸리던 일이 올해도 1년이 걸린다면, 이것은 정말 큰 문제다. 익숙해지지 않는 다는 증거이기 때문이다. 그렇다고 다른 프로세스를 적용하기란 쉽지 않다. 또 익숙해지는데 시간을 투자할 것인가?

제갈공명은 이미 전쟁방법론을 다 알고 있었던 것 같다. 어떻게 하면 성공하는지 뻔히 알고, 병사들은 거기에 맞추어 훈련되었는데 굳이 위험을 무릎쓸 필요가 없었던 것이다. 그렇기 때문에 제갈공명은 천재다.

Sort:  

저도 제가 익숙하지 않은 작업을 전달받고 일정관리 못한다는 말을 들었던 적이 많습니다. ㅎㅎ
내가 잘하는 영역의 작업을 계속 키워나가기엔 업무 특성상 항상 새로운 것을 찾아다 풀어나가야 한다는 것이... 참 힘든 거 같아요.

반갑습니다.
익숙하지 않은 작업의 량을 예측하는 방법도 있습니다만, 경험치가 가장 중요한 것 같습니다.
"전문가의 의견"이라는 것인데, 국내에선 잘 먹히지 않는 것 같습니다.
개발관련 일화나 스토리를 올려주세요.
감사합니다.

그래서 아이뒤가 agile이시군요 ㅎㅎ

반갑습니다. 예 그렇습니다.

추천합니다