슈퍼 개발자 그리고 구루라 불리는 그들.


Other/Experience  2019. 5. 2. 00:26

안녕하세요. 명월입니다.


 영화나 드라마 등에서 가끔 개발자 또는 프로그래머 직업을 가진 사람들이 나옵니다. 보면 대부분 집에서 정말 컴퓨터를 좋아해서 마치 오타쿠 같은 이미지 또는 하나에 너무 몰입한 나머지 주변이 지저분한 이미지, 자기 관리가 조금 부족해서 대부분 뚱뚱하거나 빼빼 마른 이미지가 많습니다. 실제 주변에 it와 관계없는 사람들에게 개발자 혹은 프로그래머의 이미지에 관해 물어보면 대부분 방금 이야기한 것과 크게 다르지 않을 것입니다.


 그러나 실제와는 많이 다릅니다. 프로그래밍을 하다 보면 많은 소스와 데이터를 다루기에 폴더 정리와 데이터 정리가 직업병처럼 있습니다. 그러니 실생활도 상당히 깔끔한 사람이 많고 항상 일정과 스케줄 압박 속에 살다 보니 자기관리가 철저한 사람이 많습니다. 항상 최신 동향을 살피고 학습을 위해 독서나 정보 습득량도 엄청납니다. 이 기준은 내가 생각했을 때 개발 프로젝트를 잘 완수하는 대부분의 상급 개발자 경우입니다. 


 상급 개발자의 기준이 뭘까요? 많은 사람이 회사 내에서 멀티테스킹이 가능하고 혼자서 이것저것 뚝딱뚝딱 만들어 내는 사람이라고 생각합니다. 그리고 주변 사람들은 그런 사람을 어려워하고 회사에서 그 개발자가 없으면 큰일이라 생각해 뛰어난 개발자로 인식하는 경우가 많습니다. 실제로 아직 많은 조직이나 팀에서 그런 사람이 많습니다.


 나는 그런 사람을 가장 최악의 개발자라 생각합니다. 그런 사람의 특징 중 하나가 자신의 프라이드가 엄청나게 강해서 자기 스타일대로 프로젝트를 밀고 가는 경우가 많습니다. 즉, 협업이 제대로 이루어 질 수도 없고 업무 공유가 제대로 되지도 않습니다. 막상 소스를 보면 다른 사람이 이해할 수 없는 괴이한 방식 또는 코딩 법으로 작성된 경우도 많습니다. 결정적으로 작은 프로젝트는 혼자서 잘하지만 큰 프로젝트에서 헤매는 경우가 많습니다.


 모든 소프트웨어 공학이던가 많은 코딩기법은 협업을 위한 기준으로 설계되어 있습니다. 보통 프로그램은 생산한다고 하면 혼자서 할 수 없기 때문입니다. 그렇기 때문에 협업 없이 프로젝트를 한다는 건 그런 모든 기술과 지식을 무시하는 것이고 그런 사람을 뛰어난 개발자라 생각하지 않습니다. 물론 그런 사람들이 다 잘못된 개발자라고 생각하진 않습니다. 주변 상황이 그렇게 만드는 경우도 많고 자신이 생각하는 개발자 모델상이 잘 못 설정되는 경우도 있습니다.


 개발자 사이에서는 개발의 신이라 불리는 구루라는 존재가 있습니다. 왜 구루인지 단어의 어원은 나도 잘 모르겠습니다. 구루의 단계는 이상적이고 생각만 해도 엄청납니다.


 구루는 보통 자기희생적입니다. 프로젝트를 하다 보면 업무 코딩, 화면 디자인, 배치등 많은 파트가 있습니다. 그중 공통 부품이나 코어, 프레임워크의 영역도 있는데 대개 초기 설정만 하고 넘어가는 경우가 많습니다. 하지만 이 코어 부품을 정말 잘 만들고 계속된 업뎃과 리펙토링을 한다면 프로젝트는 놀라울 정도로 최적화가 되고 버그 등을 상당히 줄일 수 있습니다. 문제는 이런 코어 영역은 단기간의 변화가 힘들고 아무리 잘 만든다 해도 엔드 유저가 체감하는 경우는 시간이 걸립니다. 심하면 그런 변화를 못 느끼는 경우도 있습니다. 그러다 보니 실적과는 거리가 있는 개발영역이고 난이도가 높은 영역입니다. 그러나 구루라 불리는 그들은 자기 영역을 소화하면서도 코어의 중요성을 알기에 실적과 거리가 멀어도 코어 개발에 상당히 신경을 씁니다. 또 코어를 수정하려면 영향이 미치는 모든 영역과의 의사소통과 확인은 필수이기 때문에 사람들과의 교류나 의사 전달 방식이 엄청나게 뛰어나고 나아가서는 프로젝트 관리에서도 상당한 카리스마와 능력을 가지고 있습니다.


 프로그램은 내부적 처리나 기능도 중요하지만, 화면 디자인도 중요합니다. 화면 디자인의 중요성은 다음 포스트에서 이야기하겠습니다. 구루는 이런 디자인의 중요성을 잘 알기 때문에 화면 디자인에 대해 많은 시간과 노력에 많은 투자를 합니다. 그리고 최신 디자인 동향에 대해서도 누구보다 빠르고 관심을 두고 있습니다. 그러다 보니 프로그램의 영역을 넘어서 디자인 감각 그리고 프로그램에 대한 가치를 올릴 줄 알고 크게는 영업적인 감각과 마케팅적인 감각에도 상당한 지식이 많습니다.


 구루의 영역은 이런 것보다 훨씬 더 심오하고 이상적이지만 내가 느끼는 구루의 영역은 이렇습니다. 실제 이런 사람이 존재는 할까요? 글쎄 아쉽게도 저도 실제로 직접 구루라 불리는 개발자를 마주치지는 못했습니다. 하지만 스택 오버플로우나 깃 허브 등의 프로그램 커뮤니티에서 오픈소스 프로젝트를 살펴보면 그런 구루같은 개발자들이 간혹 눈에 띕니다. 어느 프로젝트이든지 핵심이 되는 라이브러리이고 성능도 뛰어나며 웹의 경우는 화면 디자인에 대해서도 쉽게 접근할 수 있는 오픈 소스 라이브러리들이 있습니다. 그리고 그런 라이브러리 혹은 프레임워크가 가지는 시장적 가치는 상상을 초월하지만, 무료이고 오픈소스로 제공하는 개발자들이 있습니다. 사실 우리가 쉽게 사용하고 있는 그런 라이브러리 중에 그런 것들이 많습니다.


 구루라 불리는 그들이 있기에 실력이 부족한 저 같은 개발자가 그나마 월급 받으면서 일할 수 있고 좀 더 질 좋은 소프트웨어를 생산할 수 있다고 생각합니다. 모든 개발자가 그렇지만 저도 언젠가는 구루라고 불릴 때까지 노력하고 그 위치에 올라갈 수 있게 오픈소스를 많이 연구하여야 한다고 생각합니다.