C|net Korea에 올라온 ‘한국의 저커버그’가 양성되기 위한 조건을 읽다보니 글쓴이는 소프트웨어 개발자를 은근슬쩍 이류 시민으로 디스하는 듯하다. 뭐 다른 내용은 그렇다치더라도 다음 내용은 전산학과 컴퓨터 공학에 대한 한국 사회의 인식을 대변한다고 볼 수 있겠다.
3. 커뮤니케이션 능력
일반 코더에게는 그렇게 높은 수준이 커뮤니케이션 능력이 요구되지 않지만 뛰어난 아키텍트가 되려면 상당히 중요한 능력이다. 대화능력, 듣기능력, 토론기술, 대인기술, 설득능력, 인내력 등이 필요하다. 이런 능력은 암기식 교육환경에서는 키워지기 어렵다. 어렸을 때부터 토론식 교육 환경이 필요하며 능력을 키우기 위해서 시간이 매우 오래 걸린다.4. 문서 작성 능력
가독성이 뛰어난 문서를 작성하는 기술이다. 일반적인 쓰기 능력, 정보 조직화 기술 등이 필요하며 일반 코더들이 가장 부족한 능력 중 하나이다. 십 수년의 학교 교육을 통해서 기초를 다져야 하며 실전 개발을 통해서도 오랫동안 단련해야 향상되는 능력이다.5. 컴퓨터, 소프트웨어 지식
소프트웨어 동작원리, 자료구조, 알고리즘, 개발언어 등 개발의 기초 지식이다. 대학의 소프트웨어 관련학과에서 주로 가르치는 것이고 단시간에 기초를 닦을 수 있고 독학도 가능하며 실전 개발을 통해서 꾸준히 습득하는 지식이다. 단기적이고 집중적인 학습이 가능하다.6. 코딩 능력
누구나 아는 코딩 파워다. 일반 코더의 능력을 구분하는 기준이며 그 능력차이는 코더마다 천지차이다. 단기적인 교육이 가능하다. 우리나라 프로그래머들이 별로 떨어지지(지 않는) 능력이다.7. 소프트웨어 공학 경험
소프트웨어를 빠르게 개발하기 위한 공학적인 지식과 경험이다. 소프트웨어 분석, 설계, 소스코드관리, 이슈관리, 테스트, 프로세스, 툴, 개발문화 등 광범위한 영역의 경험이 필요하다. 학교에서는 배우기가 거의 불가능하며 제대로 된 개발환경에서 실전 개발을 통해 배워야 하며 매우 오랜 시간이 걸린다.
위 내용에 따르면 커뮤니케이션 능력, 문서 작성 능력, 소프트웨어 공학 경험은 배우는 데 오랜 시간이 걸리고, 컴퓨터/소프트웨어 지식, 코딩 능력은 단기간에 학습이 가능하다고 했는데, 본인 생각 말고 객관적인 증거를 제시하면 어떨까 싶다. 3개월만 학습하면 아키텍처/운영체제/알고리즘 전문가가 되고 다시 3개월만 더 학습하면 C/Java 프로그램을 발로도 짤 수 있다면, 4년 동안 대학교에 다니며 학기말마다 밤새가며 프로젝트 끝낸다고 고생한 사람들은 도대체 어떻게 된거지? 열심히 일하는 프로그래머를 코더로 격하한 다음 부족한 능력을 '커뮤니케이션, 문서, 소프트웨어 공학 경험'으로 싸잡아 매도한다고 해서 과연 근본적인 문제가 해결될까? "넌(개발자) 불치병(커뮤니케이션, 문서 작성, 소프트웨어 공학 능력 부재)에 걸렸으니 이제 큰 일 났네?"라고 약올리는 경우랑 뭐가 다르지? 제발 바라건데, 메타 개발만 하지 말고 직접 훌륭한 소프트웨어 공학 도구를 개발해 오픈소스로 공개하거나 필요한 지식을 공유할 수 있게 알맹이 있는 책을 출간해 제발 불쌍한 우리 코더들 좀 구원해주시기 바란다.
다시 한번 러멜트 교수의 말을 인용하겠다. 실제 손에 쥘 수 있는 결과물을 만드는 개발자의 능력을 과소평가하지 마라. 그리고 코딩이 우습게 보일지도 모르겠는데 제대로 동작하는 깨끗한 코드를 작성하려면 엄청난 연습과 노력이 필요하다는 사실을 기억하라.
"당신이 멋진 자동차를 설계할 능력이 있다면, 내게서 전략을 배우는 데 며칠이면 충분하다. 하지만 아무리 전략으로 박사 논문을 쓴 사람이라도 자동차를 설계하려면 몇 년을 공부해도 어림 없을 것이다." - 리처드 러멜트(UCLA 전략학 교수)EOB