BLOG ARTICLE 개발자의 미덕 | 1 ARTICLE FOUND

  1. 2007.12.13 내게 영향을 준 프로그래머들 (2)

저에게 영향을 주었다기 보다는 그냥 제가 많이 들어 보고 막연히 좋아하는 프로그래머들과 평소 생각해 오던 저의 두서없는 생각을 이야기 해보려고 합니다. 사실 제가 프로그래머로서 가장 존경하는 분은 앨런 케이지만 저의 포스트에서 몇 번 언급을 했기 때문에 제외했습니다.

많은 훌륭한 프로그래머들이 있지만 세 분에 대해서만 이야기 해보겠습니다. 각 프로그래머에 대한 내용 보다는 그들하면 떠오르는 저의 잡다한 경험과 생각이 내용의 주가 될 것 입니다. 인물들에 대한 자세한 내용은 영문이름을 클릭하시면 위키피디아에서 자세한 내용을 보실 수 있습니다.

존 카맥

사용자 삽입 이미지
이름: John Carmack
생년월일: 1970년 8월 20일
학력: 미져리 대학 1년 중퇴
소속: ID soft
개발: Wolfenstein 3D, Doom, Quake



"존 카맥은 실력에 비해 명성이 과대평가 되었다. 소스가 형편없다. 그보다 뛰어난 3D 엔진을 만드는 프로그래머는 많다"라는 이야기를 간혹 듣습니다. 근래에는 그가 공개한 소스를 분석해본적도 없고, 3D 엔진의 우수성을 비교, 평가 할 만큼 알지 못하기 때문에 이에 대해서는 잘 모르겠습니다. 그리고 어느 한 부분만 보면 그 어떤 분야에서도 그는 최고는 아닐 수도 있습니다.

제가 그를 제가 좋아하고 최고로 여기는 이유는 그의 프로그래머로서 Geek한 면모가 강하기 때문입니다. 이는 저한테는 프로그래머의 모습으로 긍적적으로 보였기 때문입니다.

이전 둠 소스를 보면 정확히 기억은 나지 않지만 몇몇 소스들에서 존 로메로 와 다른 개발자의 이름을 볼 수 있었던 것 같습니다. 하지만 거의 대부분을 존카맥이 주도로 작업한 것으로 생각됩니다. C++을 사용하지 않고 전형적인 C 스타일과 적절한 주석에 군더더기 없는 코딩은 -이론 보다는 원하는 것을 만들어 낼수 있는- 굉장히 실용적인 프로그래머로 보였습니다. 또한 소스를 보니 그의 명성이 과연 명불허전이구나 하는 생각이 들었습니다.

ID 소프트 이전에 성공한 상용게임의 소스가 공개된 적이 있는지는 확실히 모르겠습니다. 이런 프로젝트의 소스를 공개했다는 자체만으로도 제 개인적으로 긍정적인 평가를 내릴 수 있었습니다.

그가 만든 많은 게임들이 리눅스를 지원하고, 오픈소스 프로젝트의 소스 파일에서도 간혹 그의 이름을 발견할 수 있습니다. 그리고 오래전 어느 잡지에서 "넥스트 스텝은 최고의 개발툴이다"라는 이야기를 한 것으로 기억됩니다. 이와 같이 상용게임 개발자로 바쁜 와중에도 경제적으로는 별 도움 되지 않는 멀티 플랫폼에 관심을 가지고, 소스를 공개하는 모습에서 저보다 나이는 한살 어리지만 존경합니다. ^^;

또한 카맥은 성실한 개발자로도 유명한데 낮에는 ID 소프트웨어에서 작업을 하고, 밤에는 그가 세운 아르마딜로 에어로 스페이스에서 우주선을 개발하고 있다고 합니다. 거의 일벌레 수준인 것 같아 가정생활은 우려 되기는 합니다. 하지만 많은 돈을 벌고도 끊임없이 다양한 분야에서 연구/개발하는 모습은 역시나 존경스러운 모습니다.


찰스 시모니

사용자 삽입 이미지
이름: Charles Simonyi
생년월일: 1948년 9월 10일
학력: 스텐포드 대학
소속: 마이크로 소프트
개발: MS Worlds, Excel





찰스 시모니는 엑셀과 워드를 개발한 MS의 프로그래머라는 것 이외에는 잘 알지 못합니다.  위키피디아를 보면 버클리, 스텐포드, 제록스 파크 등 당시 일반적으로 엘리트 개발자들이  거치는 코스를 거쳐 왔던 것 같습니다.

개인적으로 찰스 시모니에 대한 관심을 가지게 된 계기는 도스에서 윈도우즈 프로그램으로 넘어 오면서, 각 소스에서 기계적이고 인상적인 명명 규칙을 보고 나서였습니다. 나중에 이런 명명법을 헝가리안 표기법이라고 한다고 들었습니다.  어느 책에서-아마 코드 컴플릿 같습니다-찰스 시모니가 헝가리 사람이라 이런 이름이 붙여졌다고 본 것 같습니다.

이 표기법을 처음 보았을 당시에는 굉장히 효율적이다라고 생각하고, 제가 아는 범위내에선 언어/환경에 상관없이 절대적으로 따르고 사용했습니다. 유닉스에서도 저 명명법을 사용했다가 같이 근무하던 선배 유닉스 개발자들에게 아래와 같은 욕(?)을 많이 먹었던 것으로 기억되네요.

"세상이 아무리 C++로 변해도 유닉스는 C다. C++을 사용하지 말고, 외계어 같은 명명법을 고쳐라."

당시 저보다 연배가 높은 유닉스 프로그래머들은 심하게 얘기하면, Dos에서 프로그래밍은 애들 장난, 윈도우즈에서 프로그래밍은 마우스질로 보는 분들이 계셨습니다. - 물론 저는 이 생각에 동의하지 않습니다.- 지금과는 달리 툭하면 블루 스크린을 토해내는 윈95와 당시 고가의 하드웨어에서 돌아 가던 유닉스와 유래 깊은 C프로그래밍 환경으로 유닉스 프로그래머에 대한 상당한 자부심을 가지고 계셨던 것 같습니다.

아무튼 찰스 시모니는 명명법이외에도 워드/엑셀 개발자로도 유명합니다. 엑셀이 맥에서 먼저  나왔으니, 초기 맥 어플리케이션 개발자일 수도 있겠습니다. ^^; 사실 이분은 잊고 있었는데, 얼마 전 232억을 들여 우주여행을 다녀 왔다는 기사를 읽고 요즘 다시 생각하게 되었습니다.

위의 존 카맥도 그렇고 개발의 정점에 오르면 우주가 생각 나나 봅니다. 다른 점은 둘 모두 막대한 금액을 들였지만 혼자만 잘 놀다온(?) 찰스 시모니에 비해, 많은 사람들을 우주로 나르기 위해-혹은 더욱 돈을 벌기위해- 삽질을 하는 존 카맥에 더 호감이 갑니다. 


리차드 스톨만

사용자 삽입 이미지
이름: Richard Stallman
생년월일: 1953년 3월 16일
학력: 하버드, MIT
소속:  자유 소프트웨어 재단
홈페이지: www.stallman.org
개발: Emacs, gcc, gdb


해커라는 명칭이 가장 잘 어울리는 프로그래머라 불리우며, 저에게 "공짜가 최고다"라는 신념을 심어 주신 분입니다.

오래전 통신과 잡지에서 이분의 이야기와 업적을 보고 들으면서 리눅스를 사용해 보기로 결심했습니다. 몇 번의 삽질 끝에 집의 PC에 리눅스를 설치하고 사용해 보았습니다. 그리고 리차드 스톨만이 만든 어플리케이션 하면 가장 먼저 떠오르는 Emacs를 배우기 시작했습니다.

처음에는 제가 도스나 윈도우에서 사용하던 에디터와 많이 틀려 적응이 되지 않았습니다. 관련 서적을 구입하고 조금씩 사용해 보니, Emacs는 에디터를 넘어 강력한 개발환경/툴이었습니다. 하지만 GUI가 없는 서버에서 사용은 난감하였습니다. 겉만 Emacs 사용자라 X-Window가 아닌 터미널 환경에선 사용을 못하겠더군요. 그냥 vi를 쓰면서 잊혀진 툴이 되었습니다.

Emacs뿐만 아니라 gcc, gdb를 만든 프로그래머서도 훌륭한 분이지만 그의 소프트웨어에 대한 철학으로 더 많이 평가되는 인물 같습니다. 1985년 제가 동네 오락실을 제패하고 있을 무렵에  GNU 선언문을 발표했습니다.

GNU는 GNU's Not UNIX의 약자로 참 재치있는 이름입니다. 이름에서 알수 있듯이 Unix의 독점에 대항하기 위해 만들어졌습니다. 후에 이분이 만든 라이센스인 GPL을 따르는 Linux가 저와 나이가 같다는 유일한 공통점이 있는 리누스 토발즈에 의해 만들어 지면서 OS로서의 완전한 모습을 갖추게 되었습니다.

개인적으로는 이분 덕분에 도스에서 자연스럽게 윈도우즈로 이어지는 개발에만 관심만 가지고 있던 제가 다른 OS와 개발환경에 관심을 가지게 된 계기가 된 것 같습니다.
 
웹/인터넷의 사용량이 증가하면서 이를 지원해 줄 서버가 많이 필요하게 되었습니다.  GNU의 프로젝트들과 GPL을 따르는 많은 소프트웨어들로 인해 저렴하게 서버를 구축할 수 있는 토대가 된 것 같습니다. 만약 리눅스와 이런 소프트웨어들이 없었다면 유닉스에 비해 상대적으로 저렴한(?) 윈도우즈 서버의 점유율이 지금보다도 훨씬 높았을 것 같습니다.
 
컴퓨터가 점점 더 우리 실생활에 더 많이 더 깊이 들어 오고 있습니다. 사람들에게 도움이 되는 좋은 소프트웨어를 제공하는 것이 개발자들의 가장 큰 미덕이라고 생각합니다. 그것이 많은 사람들이 이용할 수 있도록 무료이고, 다른 개발자들이 참고 할 수 있도록 소스까지 공개된다면 더 없이 이상적일 것입니다.

하지만 현실에서는 무료, 공개란 단어는 실현하기 힘든 경우가 많습니다. 일단 개발할 능력이 있느냐는 문제를 제외 하더라도 회사에 소속된 개발자들은 위의 사항에 대해서는 회사의 정책을 따라야 합니다. 또한 프리렌서/개인 사업자들도 본인이 가진 기술로 어떻게 해서든지 이윤을 얻어야 합니다. 저도  100% 공감하고 극복하지 못했습니다.

하지만 당연한 듯이 확고하게 "내가 돈 안되는 짓을 왜하냐? 그런 짓을 하는 개발자들은 현실에 대해 이해를 못하는 철부지들이다."라고 말하거나 Open, Free, GNU 진영에 혐오감을 가지고 있는 개발자들의 말은 가슴을 콱 막히게 합니다. 갈수록 힘들어 지는 우리나라의 소프트웨어 개발의 현실이 자유로움으로 대변되는 프로그래머들의 사고와 문화도 점점 더 각박해지는 것 같아 안타깝습니다.
 
저는 개발자들에게 여건과 상황이 되는 한에서는 돈 안되는 짓(?)들을 많이 권하는 편입니다. - 비교적 시간의 활용이 자유로운 학생 신분이 가장 적합하겠네요.- 이유는 아래와 같습니다.

업무외에 개발하는 어플리케이션은 대부분 본인이 원해서 또는 필요에 의해서 자발적으로 만드는 것이 대부분입니다. 이런 류의 작업은 많은 열정과 애착을 갖게 해줍니다. 이 열정은 돈에 의해 스케줄에 따라 만들어져야 하는 결과물에 비해 깊은 넓은 지식을 줍니다.

회사에서 직원으로 사용할 수밖에 없는 특정 플랫폼 또는 언어가 아닌 다른 플랫폼과 개발환경에 대한 경험은 사고의 유연성을 키워줍니다. 이는 장기적인 안목으로 본인의 업무에서 사용되는 환경의 개발에서도 반드시 많은 도움을 줍니다.

또한 그것이 결과 또한 좋다면 당장의 눈앞에 이익보다 입지와 선택의 폭을 넓힐 수 있는 명성을 가져다 줍니다.

소프트웨어 업계는 앞에서 주도적인 역활을 하면서 스포트라이트를 받는 선구자들과 함께, 뒤에서 묵묵히 돈은 안되지만 시간을 들여 개발자 커뮤니티 등에서 질문에 답해 주고, 소스를 공개하고, 유용한 어플리케이션을 배포하는 고마운 프로그래머들에 의해 발전하고 있습니다.

같은 개발자들은 그분들의 노고에 관한 고마움을 알고 있어야 할 것 같습니다. 그리고 그 가치에 대해서 최소한 폄하는 하면 안될 것 입니다.

그리고 다른 사람들의 오픈 소스, 소스 공개, 무료 소프트웨어로 인해 회사나 본인의 입지가 어려워진다는 생각이 든다면 지금이라도 다른 업종 또는 수입구조를 찾아 보아야 할 것 입니다.

> 어제 늦은 밤에 쓴 글이라 다소 감성적이고 두서도 없고, 제 주제를 넘어 선 말들이 자주 보이지만 제 블로그란 위안을 가지고 그냥 올려 봅니다.