洪民憙 (홍민희) 블로그

Windows 안 쓰는 사람이 프로그래밍 더 잘하는 이유

사실 정말 제목처럼 생각하는 것은 아니다. 어디나 예외도 있고 내 주관적 경험에도 편향이 존재한다. 가령 내가 알기로 김민장 님은 Windows 쓰신다. 그럼에도 불구하고 내 경험에 의하면 Windows 안 쓰는 사람이 대체로 프로그래밍 잘하는 사람 보기 더 쉬웠다.

여러 이유가 있는 것 같다.

가장 큰 이유는 Windows를 안 쓰더라도 Windows를 지원해야 하기 때문이다. 반면 Windows만 쓰는 개발자는 다른 OS 이식성은 존나 생각 안하고 산다. 사실 이건 (지금이야 다들 Google Chrome 쓰지만) 2005년쯤에 Internet Explorer 안 쓰고 Mozilla Firefox 쓰는 웹 개발자가 대체로 더 실력이 좋았던 것과 비슷한 이치이다. 그때도 Mozilla Firefox 쓰는 웹 개발자는 Internet Explorer 호환성도 고려하면서 개발했다. 기본적인 개발 태도가 달라질 수밖에 없는데, 이런 태도로 10년 이상 지나면 둘 사이에 갭이 꽤 크게 생기는 것 같다. 요약하자면 Windows 쓰는 사람은 Windows밖에 모르는 반면 (예를 들어) Linux 쓰는 사람은 싫어도 Windows도 같이 쓰게 되기 때문에 둘 다 알게 된다.

또 다른 이유로는 MSDN이 있다. Microsoft는 개발 문서에 공들이기로 정평이 나 있는데, 심지어 각국 언어로 번역까지 해준다. 그런데 조금 이상하게 들릴지 모르지만 이 때문에 영어 문서를 안 봐도 어느 수준까지 프로그래밍을 하는데 문제가 없게 만들어서 개발자들 실력 향상에 도움이 되지 않는다. 여기까지 말하면 이 지점에 대해서 동의할 사람들은 무슨 얘기를 하는지 알아들을 것이고, 그렇지 않은 사람들은 설명해도 동의하지 않을 것이라고 생각한다. 그나저나 Windows만 쓰는 개발자 중에 네이버 검색 쓰는 사람 정말 많더라. 나는 이것도 한몫 한다고 생각한다. Windows 말고는 네이버로 검색해서 제대로 된 개발 문서 찾기가 쉽지 않다. 이건 여기까지.

또, Mac은 그렇지 않지만 Linux를 주로 쓰는 경우 트러블슈팅 자체가 개발 지식과 밀접하게 관련되어 있거나, 트러블슈팅을 하려면 그런 지식을 알 수밖에 없도록 만들기도 한다. 그러다가 메일링 리스트와 버그 트래커에서 검색을 일상적으로 하게 되고, 우연히 관련 이슈에 달린 고수들의 토론과 의사 결정 과정도 목격하게 된다. 디자인에서 중요한 것은 결정이 아니라 그 근거인데, 어느 정도 규모가 있고 성숙한 프로젝트(즉, Linux 처음 쓰면 일상적으로 사용하게 되는 소프트웨어들)라면 디자인 문서는 없더라도 메일링 리스트와 이슈 트래커에서 그러한 후보와 근거들을 볼 수 있다. 말하자면 오픈 소스 프로젝트의 이슈 트래커와 메일링 리스트는 고수들의 (초식이 아니라!) 심득이 벽에 적혀 있는 깊은 동굴 같은 장소이다. (그리고 디자인 문서는 비급 정도쯤 되겠고.) 반면 Windows에서의 소프트웨어는 대개 상용 제품이기 때문에 비교적 문제가 적기도 하고, 문제가 있을 경우 CS를 찾지 이슈 트래커를 찾진 않는다. Linux에서 마주하는 오픈 소스 소프트웨어는 (일반 사용자에게는 매우 좋지 않은 현상이지만) 사용자를 동등한 개발자로 보는 반면 Windows에서 마주하는 상용 소프트웨어는 사용자가 개발자라고 하더라도 일반 사용자로 가정한다. 물론 이러한 차이가 Linux 데스크탑을 망하게 한 주범임은 말할 필요도 없다. 하지만 프로그래머에게는 꼭 나쁜 것만은 아니다.

그리고 어느 순간부터는 자기가 고쳐서 쓸 수 있으면 고쳐서 쓰고, 그걸 패치로 보내기도 하게 된다. 자기가 쓰고 있던 소프트웨어를 직접 고쳐서 쓰는 경험은 여러 가지 면에서 개발자에게 도움이 된다. 내가 생각하는 가장 큰 이점은, 고쳐야 할 코드의 품질이 어떻건 간에 코드 읽는 훈련이 된다는 점이다. 실제로 프로그래머는 상당히 높은 확률로 레거시 코드와 씨름하게 되는데, 대부분 프로그래머가 레거시를 싫어하는 이유는 첫째로는 품질이 좋지 않기 때문이고 둘째로는 내가 짜지 않았기 때문이다. 어찌됐건 코드 읽는 훈련은 양쪽 상황 모두에 도움이 된다.

물론 이런 삽질은 시간을 요구한다. 따라서 보통 학생 때부터 Linux 쓴 친구들이 이런 부수 효과의 혜택을 본다. 여기서 학생이라는 것은 보통 대학생이 아니라 중고등학생이다. 대학생 때 시작하면 늦는다. Linux를 쓰면 취업 준비(많은 의미가 담겨있음)할 시간을 많이 뺏기 때문이다.

그리고 이것도 원인 중 하나인지는 모르겠는데, (지금은 꼭 그렇지도 않지만) Windows에서 개발과 상관 없는 쪽으로 놀거리가 더 많다.