언젠가 부터 Android 의 영향 덕분인지 일반 PC (노트북 포함) 의 Linux kernel 이 3.x 를 넘어섰습니다. 회사에서는 특정 컴파일러의 dependency 때문에 kernel 을 바꾸질 못하고 있는데 한참이나 후진 Centrino (Dothern) CPU 를 쓰는 노트북에서 요즘 가장 인기 좋은 Linux Mint 를 쓰게 된 것이 사실 좀 뭔가 아이러니 한 느낌이 듭니다. Linux kernel 역사에 2.3, 2.4 와 2.6 은 천지개벽 수준의 발전 이었는데 3.x 를 넘어서는 그 차이를 잘 모르게 된것 또한 시대의 흐름이 보이지 않게 된듯 한 착각이 들기도 합니다.
처음 대학에 입학하던 1996년을 되돌아 보면 그때 부터 이 좁은 대한민국이란 나라에서는 뭔가 항상 특정 조건대로 몰아가는 경향이 있었다는 생각이 듭니다. 예를 들면 1996년 입학시제에 대학가에 불었던 인기는 Web master ! 누구나 자신의 홈페이지를 가지길 원하던 시절 이었으며, (지금도 가장 후지고 무겁고 못난) MS IE 보다는 NetScape 가 인터넷 웹의 대명사로 불리던 때 였습니다. 그때나 지금이나 이해가 안가는 것이 하나 있다면 왜 그 흔한 HTML을 학과 정규 과목으로 까지 배우거나 한 것입니다. 적어도 CGI 로 Perl 이나 Python, 아니면 서버에서 구동하는 바이너리로 라도 HTML 을 뱉어내는 뭔가를 만드는 것이 더욱 더 값져 보였기 때문에 그랬던 것 같습니다.
사실 지금 2014년 현재 회사에서 조차 HTTP 로 GET과 POST 차이도 모를 뿐더러, HTTP 가 Socket 으로 주고 받는 TCP/IP 의 산물인지도 모르는 사람들이 개발자라 앉아 있는 것을 보면 변하지 않는 것 또한 있다는 걸 다시금 느낍니다.
십수년간 이 작고 좁은 나라(특히 한 다리 건너면 다 아는 사람인)에서 개발을 하다 보면 여러 형태의 사람들을 만납니다. 그중 가장 흔한 사람의 형태로 손을 꼽아 본다면 바로 제가 "New technology chaser" 라 불리는 형태의 개발자 입니다. 사실 저는 이런 부류를 개발자로 취급하지 않습니다만, 다른 형태의 모습을 비교 해 보면 DLSR 카메라와 그 비싼 렌즈를 사진을 찍기 위해 산건지, 아니면 허세를 위해 한건지 모르겠는 사람과 비슷하다 하겠습니다. 일례로 이전에 국내에 Java 의 열풍이 불어 닥쳤습니다. 사실 Java 니 Visual Basic 이니 C# 이니 다들 취지는 참 좋습니다. Platform에 독립적으로 돌아가는 시스템. 제목은 참 좋습니다. 하지만 이런 허울 좋은 제목들 역시 피할수 없는것이 바로 Platfrom dependency 입니다.
예로 Android 에서 도는 App 들은 JAVA 로 만들어 졌지만 이 들이 다른 PC 와 같은 환경에서 그대로 돌지 못합니다. 단지 사용된 것이 JAVA 일 뿐이지 순수한 JAVA VM 위에서 돌지 못합니다. 또한 수많은 JAVA 개발자라 불리는 사람들이 특정 Library 가 가지는 dependency 등을 이해 못하고 무분별하게 가져다 쓰는 것들 또한 처음의 취지와 매우 다른 부분이라 하겠습니다.
정말 잘 만들어 진 경우를 못 봐서 그런지 몰라도 이런 Interpreter Language 기반 들은 JAVA VM 이나 .NET framework 가 필요하며, 이들의 덩치는 참으로 크디 클 뿐더러 .NET framework 는 이 시대가 낳은 최고의 쓰레기 중 쓰레기라 믿고 있기 때문에 JAVA 와 달리 정말 아무 짝에 쓸모가 없는 존재라 판단하고 있습니다. 그리고 이런 쓰레기에 의존하게 되는 형태의 개발은 겉 잡을 수 없는 수준으로 가는 것은 물론 이고, 이로 인해 개발자의 개발자로서의 수명 단축을 야기 하는 것은 필수 조건이 되어 버린 듯 합니다.
MS .NET framework 를 제외 하고나서 JAVA 는 정말 성공적으로 뿌리를 내린 경우라 하겠습니다 만. 우리나라의 특징중 하나가 너무 많은 인력이 좁은 시장에 같은 직군에 집중되는 형태를 가속화 하였다는 것입니다. 이는 MS 진영 역시 피할 수 없는 형태가 되었습니다. 특히 MFC 없으면 개발조차 못하는 C/C++ 를 쓰지만 진정 C/C++ 에 대해 이해를 못하는 개발자들을 양산한 것을 그 예로 들 수 있습니다.
어떤 것이든 그 것이 배움이 존재 하는 것 이라면 그 배움의 기본이 중요한 것은 어느 학문을 떠나서 가장 중요한 요소라 생각 합니다. 개발 또한 마찬가지 입니다. Interpreter language 를 쓴다 하여 '내가 지금 compiler 를 왜 이해 해야 하지?' 라는 생각을 한다거나, 지금 쓰는 시스템에서는 ViewPoint 를 사용하니 다른데도 그러하겠지 라고 생각 했지만 막상 이게 DisplayCard 인지 뭔지도 모르겠고, 렌더링을 OnDraw 에서 다 하고 있는 경우들을 보고 있자면 답답함의 해결책은 찾기 어려울 때가 많아집니다.
특히 일부 이겠지만 C# 개발자들과 일을 할때 격은 XAML 코드의 남용과 C# 간의 상호 호환성의 복잡화로 개발된 결국 실패한 프로젝트 들(한둘이 아니었기에 ...)을 보며 배운것은 과도한 New technology chaser 들이 가지는 끔찍한 '결과를 생각하지 않는 무책임한 생각'들은 가장 경계하는 1순위가 되었습니다.
특히 Platform 에 대한 이해조차 없이 시작되는 개발들을 보면 결국 이런 문제들이 나타나는 Performance 문제, 과도한 Resource 남용 등이 고스란히 개발자 손을 떠난 실 사용자들에게 전가 되는 무책임한 결과들을 만들어 내고 있는 원인이 된다는 것 입니다. 심지어 개발자들이 이런 문제점 조차 인지 못하고 있는걸 많이 보고 있자면 이 문제에 대한 심각성을 매번 새롭게 느끼게 됩니다.
대한민국이 가진 가장 큰 문제점으로 보이는 Software 인력 관련 문제들을 보면, 무엇이 원인인지는 이제 알기 어렵습니다. 하지만 현 시점의 문제점으로 보이는 '높은 실력을 가진 인력의 소수화' 는 매우 큰 문제로 보입니다. 사실 Architector 한명에 일반 개발자 여럿을 붙여도 효율적인 결과를 도출할 수 있는 조건이 만들어 지겠지만 이 나라에 정말 Architector 는 없다는 것이 큰 문제라 하겠습니다.
무엇이든 얇게 배우고 얇은 지식으로 배운 기술은 오래 가지 못합니다. 근본적인 기술이 없다면 연비에서 엄청난 차이를 보이는 독일차와 대한민국차의 차이라던가, 일본에서 생산되는 근본기술에 연계된 산업소자들 없이 제품을 못 만드는 대한민국이 그 예를 잘 보여 준다고 믿습니다. Windows 개발자라 하여 Open source 를 받아 던져 주면 Visual Studio 관련 파일이 없다고 아무것도 못하는 사람들 보다, 구성을 먼저 살피고 적어도 Windows 에서 M-Sys 를 통해 ./configure 와 make 를 할 줄 아는 그런 사람이 너무 없다는 겁니다. 이는 단순히 console 기반의 개발 환경과 GUI 개발 환경을 떠나, 오랜 시간 정착되어 온 C/C++ 이 가지는 역사를 모른다는 것이 맞다 봅니다. 심지어 Visual C++ 이 cl.exe 통해 cpp 파일을 compile 하는 것 조차 모르는 것이 당연한 것이 아니라는 겁니다.
세상은 점점 좁아 지고 빨라지고 있습니다. 어제는 Software 개발은 고사하고 사서 쓰는 것 조차 불가능하던 나라가 다음날 이면 자신들이 필요한 것들을 만들어 쓰는 것은 물론이거니와, 개발 기술을 기반으로 하는 많은 인재들을 수출하고 근본기술들이 다시 그 나라로 흘러 들어가는 것을 막을 수 없는 것을 알았을 때는 이미 늦었을지 모르는 끔찍한 상태가 될 수 도 있다는 것 입니다. 이런 문제들이 발생 한다면 그것은 바로 자국 내에서 높은 수준의 개발자를 자급하지 못하고 외국에 의존하게 되는 형태가 되었을때 당연히 나타나는 문제가 될 것이며, 그것이 앞으로 지적인 재산의 보호는 물론 한 국가의 경쟁력에 영향을 미치는 요소가 될 것입니다.
물론 이런 중요한 사실을 나라가 알았더라면 어느 나라의 수장이 NDSL 을 보며 "우리나라엔 이런거 없나?" 라는 소리를 하진 않았을 거라 믿습니다. (그당시 제 손엔 GP32 가 들려 있었고, 이 기기엔 Embedded Linux 가 돌고 있었습니다.) 물론 그 수장을 뒤로 닭의 뇌를 장착한듯한 사람이 입만 빵긋 거리는 붕어처럼 전 세계를 돌며 나라의 기간산업을 팔겠다고 다니니 정말 어디까지 가게 될지는 아무도 모르는 상태가 되어 가고 있긴 합니다...
과연 이 나라에 Software 에 대한 미래가 있는지는 점 점 더 모르겠습니다.