본문 바로가기

Gossip about IT & Job

좋은 프로그래머의 조건

  오늘 읽은 글. S/W 전공자를 대상으로 한 입사 면접 시험에서 나온 질문. "S/W 개발자에게 가장 필요한 덕목은 무엇인가?" 라는 질문에 대하여 많은 입사 지원자들은 "성실성", "끈질긴 탐구능력", "창의성" 등의 대답을 했다. 글의 저자는 "지두력"이란 도서를 예로 들면서, 프로그래머에게 가장 필요한 덕목은 "문제해결력"이라고 꼽았다. 문제를 분석하고 가장 효율적인 해결방법을 찾는 능력이 프로그래머의 최고의 덕목이라고 생각한다는 취지의 글이었다.

  처음 컴퓨터언어를 공부할 때, 같은 문제에 대한 내 대답은 입사지원자와 비슷했다. 알고리즘을 만들기 위한 순간의 번뜩임과 디버깅 과정에서 끈질기에 물고 늘어지는 성실함. 한줄 한줄 짜나가다보면 못짤 프로그램이 없다고 믿던 시기였다.

  4년차에 접어든 요즘, 프로그래머에게 가장 필요한 것이 무었기냐고 묻는다면 나는 "의사소통능력" 이라고 답할 것이다. 더이상 혼자서 뚝딱뚝딱 짜는 프로젝트는 없다. 대부분의 상용프로그램은 적어도 세명, 많게는 수천명의 공동작업으로 이루어진다. 따라서, 다른 사람에게 "의사"와 "정보"를 전달하는 능력이 가장 중요하다. 코딩을 해도, 효율적인 코딩보다는 읽기 쉬운 코드가 더 인정을 받는다. 컴퓨팅 파워가 인건비보다 싸기 때문이다. 복잡한 비트연산은 지양하고, 변수 하나 하나가 의미를 갖도록 선언하고 함수 하나하나의 역할을 작게 나누어 이름과 다른 동작이 없도록 짜는 것이 더 효율적이다.

  더 나아가, 의사소통 능력에는 문서를 읽고 이해하는 능력과 문서를 작성하는 능력도 포함된다. 동료 개발자나 서드 파티에서 작성한 레퍼런스를 읽고 혼자서도 작업이 가능한 것도 능력이고,  좋은 매뉴얼을 찾아 읽는 것도 능력이다. 스펙과 컨셉문서를 읽고 작성자의 의도를 이해하고 부족한 부분을 미리 찾아내는 능력. 자신의 작업 결과를 전파하기 쉽도록 레퍼런스로 작성하는 능력 등이 굉장히 중요하다. 열명 내외의 팀이라면 세미나나 구두 전달로도 정보의 공유와 수평전파가 가능하지만, 몇백명 단위의 팀이라면 문서작성 및 공유 없인는 불가능하다. 이 능력을 갖추지 못하면 문맹과 다름없다.

  마지막으로, 현업 프로그래머에게 의사소통 능력이란 영어능력과도 크게 다르지 않다. 특히, 외국인들과 얽히는 일이 많은 요즘, 영어로 화내고, 영어로 야단치고, 영어로 비꼬고 갈구는 능력도 필요하다. 물론 이런 말을 알아듣는 능력도 필요하겠다. "프로그래머는 코드로 말한다"는 낡은 명제다. 이제는 "프로그래머는 영어로 말한다" 가 맞다.

  영어의 중요성은 아무리 강조해도 부족하지 않다. 대학 입학 직후는 학교를 낮춰왔다는 생각에 적잖이 심난한 때였다. 하지만, 1학년 때 부터 교양 서적 두 권을 빼고는 모두 영어 원서를 준비하라는 말을 듣고 마음을 놓았었다. 물론 처음엔 많이 어려웠고, 실제로 한글 번역본을 따로 구하거나, 교과서 읽기는 포기하고 공부하는 친구들도 있었지만, 영어 원서를 본다는 것은 미국 대학생들과 같은 수준의 공부를 한다는 인상을 주었고, 그저 열심히 하기로 마음을 다잡는 계기가 되었다. 그 때 교수님께서 하셨던 말씀. "영어를 잘해야 한다. 영어로 인터넷에 올라온 자료를 보면 일주일 된 자료를 보는 것이요, 영어로 된 책을 읽으면 1년된 자료를 보는 것이요, 한글로 번역된 책을 보면 2~3년 이상된 자료를 보는 것이다. IT는 정신없이 변하는데, 3년된 자료를 봐서 뭘 하자는 것이냐" 는 것이 말씀의 취지셨다. 백번 옳은 이야기다.

  혹시나 이 글을 읽는 대학 초년생들이 있으시다면, 부디 명심하시기를. 혼자서 다니지 말고 친구를 사귀시라. 인터넷에 물어물어 어줍잖은 대답을 듣기 보다는 선배에게 물어서 배우시라. 원서가 어렵다고 포기하지 말고, 차라리 영어를 습득하시라. 이 모든 것이 의사소통 능력이고, 이것이 좋은 프로그래머가 되기위한 필수 조건입니다.