개발자로서의 똑똑하다는 의미

종종 논란이 되고 토론의 주제가 되는 개발자로서 똑똑하다는 의미는 무엇일까?

대게는 논리력이 뛰어나거나, 문제 해결 능력이 좋거나, 기본기가 좋거나 같은 의미로 쓰인다. 추가적으로 남들이 못하는 일을 하는 사람, 깊이가 있는 (숙련도나, 재능이 필요한) 업무를 할 수 있는 사람, 확연이 다른 사람들보다 많이 아는 사람, 경험이 많은 사람, 학습 속도가 빠른 사람등의 의미도 있는 것 같다.

개인적으로 위 의견들에도 동의한다.

하지만, 나는 좀 더 명확한 정의가 필요하지 않나 싶은 고민이 들었다.


나는 운이 좋게도 꽤나 많은 똑똑한 프로그래머를 많이 만났다.

그런데 그 중에서 극 소수만이 내가 존경할만했고, 자극이 됐다.

왜 나머지 똑똑한 프로그래머들에게선 그런 생각이 들지 않았던 걸까?

내가 느끼는 똑똑함에는 합리적인 판단, 효율적인 판단이 포함되어 있었어야 했다.

꽤나 많은 프로그래머가 순수하고, 특정한 부분에서만 똑똑했다.

그래서, 본질적인 복잡도, 정복 가능한 복잡도를 분리하지 못하고, 또 효율적이지 못한 접근을 파고든다. 그래서 본인의 코스트를 비효율적인 작업에 낭비한다.

그래서 그 똑똑함을 제대로 발휘하지 못한채, 아쉬운 결과를 낸다.

이렇게 되는 데에 있어서는 분명히 조직 문화나 관리자의 문제가 자주 작용한다. 즉 멍청하게 일하게끔 종용하고, 이 문제를 자각할 기회 마저 잃어버리는 상황을 꽤나 자주 봤다.

그래서 자신의 재능, 자신의 똑똑함을 발휘할 생각은 전혀 하지 못한채, 그저 단순한 업무를 수행하는 직업 프로그래머가 되어버린다.

시야가 좁아지니 여지껏 해온대로, 상급자가 요구하는 방법대로 기계적인 업무를 수행하게 되는데, 여기서 나오는 비효율이 얼마나 낭비로 이어지는지 계산하지 못한채, 반복된다.

결국 이어지는 경쟁력저하는 장기적인 손해로 이어진다. 결국 기술 부채와 개인 역량 발전, 늘지 않는 인사이트로 똑똑함은 차츰 흐릿해져간다.

이게 내가 느낀 똑똑한 친구들이 총명함을 잃어가는 과정이었다.


반대로 똑똑함을 유지하는 친구들은, 어떤 상황에서도 개선에 대한 노력, 왜 인지에 대한 의문, 불편함에 대한 의구심을 끊임없이 가졌다. 또한 점령 가능한 복잡도와 그렇지 않은 것을 분별하려 노력하고, 그에 대한 끊임없는 의구심을 통해 도메인 디펜던시 안에서도 효율과 합리성에 대한 끊임없는 고민, 노력을 쉬지 않고 해왔다.

학습 방법에서도 맹목적인 신뢰가 아닌, 자신의 경험과의 비교를 통해 확고한 철하고가 접근을 해내는 친구들이 결국 성장하고, 더 훌륭한 프로그래머가 됐다.

게임계도 그랬고, 웹쪽도 그렇듯 기술적 대격변 속에서 유연하고, 효율적인 판단을 내릴 수 있는 프로그래머가 적응했으며, 살아남았다고 볼 수 있다.

물론 편협한 생각과 아쉬운 판단력임에도 불구하고, 여러가지 이유로 잘 살아남은 분들도 있으나, 이런 케이스의 대부분은 운이 좋게 위기가 안왔을 뿐이다. 또한 이런 케이스는 자신이 성장기에 익혔거나, 동료나 상사에게서 배운 방식에서 벗어나지 못한채 비효율의 굴레에 머무는 경우도 아주 많다. 점점더 자신이 없어지니 새로운 시도는 멀어지고, 차츰 더 뒤쳐진다.

그렇게 되지 않으려면, 잠깐씩이라도 시간을 내 자신이 어떻게 일하는지, 좀 더 개선할 요소는 없는지, 어떠한 준비가 필요했었는지, 어떤 물음표들을 느낌표로 바꿔야 될지를 고민하고, 판단해야 한다.

그런 반복 과정 속에서, 개선이 가장 중요한데, 자신이 느낀 물음표를 느낌표로 바꾸는 과정은 개선없인 이뤄지지 않는다. 책속에 있는 이야기들이 진리가 아니듯, 자신의 상황에서의 적절한 해결책과, 고찰, 결론을 내는 과정을 끊임없이 가다듬어야 똑똑함을 유지 할 수 있다.

앞으로 잘 성장 할 것 같은 사람에서, 항상 성장할 사람, 어떤 상황에서 자기 몫을 해낼 사람이 되기 위해선 이런 노력이 필요하다.

Comments

comments powered by Disqus