개발자의 결은 다양하다. 그레이의 50가지 그림자보다 많다. 분야도 다양하고 개발자의 관심도 각양각색이다. 보안, 해킹, 데이터 분석, GUI 프로그래밍, 서버, 네트워킹, 임베디드 시스템, 컴파일러, 프로그래밍 언어, 하드웨어 등 어느 부분에 관심이 있는가에 따라서 개발자의 그림자 색이 조금씩 달라진다.
요즘에는 프런트앤드(front-end)에서 백앤드(back-end)까지, GUI 코드와 서버 코드를 모두 개발할 수 있는 풀스택(full-stack) 개발자라는 표현이 많이 사용된다. 응용프로그램 개발과 시스템 관리를 동시에 수행할 수 있는 데브옵스(DevOps)라는 표현도 사용되고, 여러 개의 프로그래밍 언어를 자유롭게 사용할 수 있는 폴리글랏(plotglot) 프로그래머라는 말도 흔하다. 이러한 용어들은 모두 개발자의 다양한 결을 나타내기 위한 표현일 뿐이다.
이러한 개발자의 다양성은 ‘분야’를 나눌 때보다 ‘실력’을 구분할 때 더 극적이다. 똑같이 ‘개발자’라는 직업을 가지고 있어도 코드를 만들어내는 능력에 믿기 어려운 차이가 존재하기 때문이다. 같은 팀에서 비슷한 연봉을 받으면서 일하는 사람이라고 해도 마찬가지다. 어떤 사람이 기본적인 코드를 구현하지 못해서 쩔쩔매고 있을 때 어떤 사람은 정교한 수학적 모형을 활용한 데이터구조를 만들어낸다. 어떤 사람이 느리고, 버그투성이고, 유지보수가 불가능한 코드를 만들어낼 때, 어떤 사람은 빠르고, 정확하고, 유지보수가 쉬운 코드를 작성한다.
상상을 초월하는 실력을 보여주는 프로그래머와, 실소를 자아내는 ‘프로그래머’ 사이에 존재하는 실력차이가 낳는 그림자는 종류가 무한하다. 그렇게 많은 색깔을 모두 설명하는 것은 가능하지도 않고, 그렇게 할 필요도 없다. 그렇지만 4개의 색을 가지고 그림자의 결을 설명할 수 있는 방법이 있다. 파랑, 노랑, 빨강, 검정, 이렇게 4개의 색이다.
우선 파랑은 프로그래밍에 대한 재능을 타고 났으며 노력까지 기울이는 사람의 색이다. 상상을 초월하는 실력을 보여주거나 큰 성공을 거두는 프로그래머들은 일단 이 범주에 속하는 사람들이다. 잘 알려진 오픈소스 프로젝트를 주도하거나, 새로운 패러다임을 제시하거나, 고전에 속하는 책을 쓰거나, 컨퍼런스에 단골로 초대되는 사람들이다. 회사에서 일할 때만이 아니라 밥을 먹거나, 길을 걷거나, 차를 타거나, 친구를 만나거나, 심지어 잠을 잘 때에도 코딩방법을 궁리한다. 진심으로 코딩이 게임이나 섹스보다 즐거운 사람들이다.
노랑은 프로그래밍에 대한 재능은 특별히 없지만 노력만큼은 파란색 못지않게 기울이는 사람들이다. 회사에서 주어진 일에 온힘을 다하고, 문제가 생기면 다른 사람을 탓하기 전에 스스로 책임을 지려고 하고, 새로운 기술이나 동향에 항상 관심을 갖고, 좋은 책을 찾아서 부지런히 읽고, 동영상 강의나 팟캐스트를 찾아서 듣고, 오프라인 모임이나 컨퍼런스에 참여한다. 친구들과 코딩에 대해서 이야기하기를 즐기고, 회사에서 승진을 하거나 더 많은 책임을 맡는 것에서 성취감을 맛보는 사람들이다.
빨강은 노랑과 반대다. 프로그래밍에 대한 재능은 타고 났지만 노력을 기울이지 않는 사람들이다. 이 범주에 속하는 사람이 많지는 않지만 있긴 있다. 천성이 게으르거나 다른 관심사가 많기 때문에 돈벌이 수단으로 회사에 다니며 코딩을 할뿐 그 이상의 의미를 두지 않는다. 이런 사람들에게 코딩은 너무 쉽고, 단순하고, 반복적인, 지루한 ‘회사일’이다. 버그 없이 빠르게 동작하는 코드를 뚝딱 만들어내고, 밤에는 카페에서 기타를 연주하거나 친구들과 어울려서 포커를 즐긴다. 때로는 노랑에 속한 사람들이 보고 깜짝 놀랄만한 성취를 이루어내기도 하지만 지속성이 부족하기 때문에 책임 있는 지위에 오르지는 못한다.
끝으로 검정은 프로그래밍에 대한 재능이 없고 노력도 하지 않는 사람들이다. 프로그래밍이 재미없고 어렵게 느껴진다. 먹고살기 위해서 프로그래밍의 길로 들어서긴 했지만 제대로 하지 못하기 때문에 성취감도 없고, 새로운 것을 알고 싶은 욕망도 없다. 가끔 책을 구입하기는 하는데 읽지는 않는다. 다른 사람들이 새로운 기술이나 패러다임을 이야기하는 것을 들으면 잘난 척하는 것 같아서 기분이 나빠진다.
자기가 사용하는 언어나 기술에 지나친 집착을 보이기도 하고, 자기가 작성한 코드를 다른 사람이 보는 것을 극도로 싫어한다. 복사 후 붙여넣기 신공으로 작성한 코드를 들키는 것도 기분 나쁘고, 무엇보다도 왠지 발가벗는 기분이 드는 탓이다. 현장에서 심각한 코드가 보고되면 가슴이 철렁 내려앉는 경우도 많다. 혹시 자기가 짠 코드에서 나온 버그가 아닌가 하고 걱정이 되기 때문이다. 스스로 ‘짠’ 코드를 다른 사람에게 설명하지 못하는 것은 기본이고, 자신도 이해하지 못하는 경우가 흔하다.
과학적인 측정이 아니라 개인적인 ‘어림짐작’에 따르면, 우리가 회사에서 일반적으로 만나는 개발자의 50%는 불행하게도 검정에 속한다. 10% 정도가 빨강이고, 30% 정도가 노랑이며, 나머지 10%가 파랑이다. 이러한 어림짐작 수치를 여러 각도에서 조명해보면, 개발자의 40% 정도가 회사 밖에서도 코딩을 궁리하고 공부한다. 제대로 동작하는 코드를 작성하는 사람은 50%이고, 나머지 50%는 수준 이하의 코드를 통해서 프로젝트의 진행을 방해한다. 프로그래밍과 관련된 재능을 타고 나는 사람은 전체의 20%에 불과하며, 그 중에서 반은 노력하고 반은 노력하지 않는다.
관련기사
- 조인트 까이는 개발자2015.09.30
- 늙은 개발자의 노래2015.09.30
- 문제는 알고리즘이다2015.09.30
- 개발자에게 부탁하라2015.09.30
이 글을 읽는 사람의 80%는 프로그래밍과 관련된 재능을 타고 나지 않았다. 재능을 타고나는 사람은 소수다. 파랑은 소수를 위한 색이다. 따라서 80%에 속하는 사람들이 지향해야 하는 색은 노랑이다. 이 글을 쓰고 있는 나 자신의 색도 노랑이 유력시된다. 어떤 의미에서 노랑은 빨강보다 많은 성취를 이룬다는 점에서 자랑스럽고, 노력이라는 측면에서는 파랑과 어깨를 나란히 하기 때문에 당당하다. 검정에 속한 사람들이 마음을 제대로 먹으면 올라설 수 있는 지점이라는 점에서 공평하기까지 하다. 일반 회사에서 팀장이나 리더의 역할을 수행하는 사람은 대부분 이 범주의 사람들이다.
이렇게 개발자가 가진 50개의 그림자를 4개의 색으로 압축해서 설명해 보았다. 그런 색깔이나 범주가 실제로 존재하는 것은 아니다. 각자의 재능과 노력을 색을 거울삼아 반추해 보라는 의미에서 쓴 글이다. 다만 타고난 재능보다 노력이 더 중요하다는 메시지는 제대로 전달되었기를 희망한다. 노력 자체를 즐기는 사람 앞에서는 타고난 재능이 무의미하다. 이 칼럼에 담은 색깔론의 핵심은 그거다.
*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.