예전부터 이 업계에는 숱한 거짓말들이 난무해왔다. 이는 엠에수같은 큰기업이든, 이제는 우리의 영원한 웬수(?)가 되어버린 볼랜드이든 사실 별로 다를 바 없다. 자본주의 사회에서는 모든 수단과 방법을 동원해서 많이 팔아먹는 것, 즉 영리추구가 최대 목표이기 때문에, 이런 노골적인 사기행위는 항상 있어왔다. 이런 사기극은 개발 분야같은 첨단 기술 분야라고 해서 예외는 아니며, 어찌보면 기술 수준이 높은 분야일수록 이런 사기극은 항상 더욱 치밀하고 빈번하게 행해져 왔다.
그래서, 관록이 오래된 개발자들에게는 다음과 같은 속설이 있다.
"개발자라면 코드(Code)를 믿어야 하지, 개발 방법론이나 개발 도구를 너무 믿지 말라"
이말을, 앞으로는 객체지향, 패턴, 익스트림 개발론 같은 것들을 배울 필요가 없다는 식으로 이해하면 무지 곤란하다. 이말의 의미인즉, 이런 개발방법론이 존재하는 이유는 코드를 잘 만들기 위함이지, 개발방법론을 위해서 코드가 존재하는 것은 아니란 것이다. 마찬가지로 어떤 개발 도구이던간에 궁극적인 목표는 코드를 편하게 그리고 좋게 작성하기 위함이 목표이지, 개발 도구를 위해서 코드가 존재하는 것은 아니란 것이다.
그런데 이 기본원칙을 거꾸로 이해하는 있는 개발자들을 매우 자주 본다. 개발방법론 그 자체가 최대의 가치이며, 개발 도구들이 모든 코드를 저절로 생성해줄 것이라고 믿는 개발자들이 많다는 것이다. 심지어 실제코드와 전혀 동떨어진 문서 작성에 전념하는 개발자들도 있다. 예를 들어 실제 코드와 전혀 동떨어진 UML 그리기에 전념하는 개발자들을 많이 본다. UML을 그리는 목적은 좋은 코드를 설계하기 위해서, 다른 개발자와 의사소통을 하기 위함이지, UML 작성끝 == 개발끝이 결코 아니다.
예전에 도스에서 윈도우 시대로 넘어 오면서 숱한 기막힌 개발 툴이 등장했었다. 비주얼 베이직, 비주얼 오브젝트, 파워 빌더, 델파이 등등이 등장했을 때, 많은 사람들이 앞으로는 코딩할 일이 필요없고, 마우스 클릭만으로 프로그램이 완성될 것이라고 믿었었다. 그런데 현실은 어떠한가? 아무리 개발 환경이 뛰어난들 여전히 개발자들은 엄청난 코딩을 통해서 프로그램을 완성시킨다.
델파이 2006같이 꽤나 발전한 개발도구라고 해도, 개발자들을 위해서 기껏 할 수 있는 것은 반복적인 노가다 코딩 작업을 단순하게 해 주는 것일 뿐, 개발자의 상상력을 자동으로 구현해 줄수는 없다. 이 기본적인 원칙을 이해하지 못하고, 델파이, 자바 혹은 닷넷, 아작스 등이 개발자의 모든 문제를 저절로 해결해 줄 수 있다고 믿는 개발자들이, 의외로 많다는 것이 무지 놀라울 따름이다.
만일 이런 툴들이 모든 개발 문제를 저절로 해결해주는 시대가 도래한다면, 그때는 개발자란 직업 자체가 필요없게 되는 시대이다. 다시 말해서 그런 시대가 오면 우리 개발자들은 직업 전환을 해야 하는 시기이지, 언어나 툴의 선택 따위는 전혀 필요없는 시대이다. 참으로 다행스럽게도 그런 시대가 오려면 아직 한참 요원하다.
개발자라면 평소에 반복적 코딩 작업을 줄이고, 어떻게든 생산적인 코딩 즉 새로운 업무에 필요한 코딩만을 하도록 노력해야 할 것이다. 이를 위해서 개발도구와 개발방법론을 공부할 필요가 있는 것은 당연지사다. 그런데, 내쇼날 로즈같은 툴이 모든 코딩을 자동으로 해줄 것으로 믿는다면 이는 심하게 잘못된 생각이다. 아작스나 웹2.0 같은 신기술들이 모든 웹어플들의 문제를 풀어줄 것으로 기대한다면 이 또한 마찬가지다.
우리분야에서 신기술은 엄밀히 말하면 신기술이 아니다. 과거에 많은 개발자들이 무지 복잡한 코딩으로 해결했던 문제들을 좀더 쉽게 단순화한 것에 불과하다. 자바, 닷넷, 아작스에서 말하는 신기술들을 자세히 들여다보면 이말을 이해할 수 있을 것이다. 따지고 보면 별로 새로운 것들이 없는 기술이란 것들이다. 신기술은 하늘에서 뚝 떨어지는 도깨비 방망이가 주는 선물 같은 것이 아니다.
신기술이 예전에 어려웠던 문제들을 풀어줬다고 치자. 조만간 이 기술은 다른 개발자들 누구나 사용할 수 있기 때문에, 빠른 시일 내에 별로 대단한 기술이 아니게 된다. 그렇다면 뛰어난 개발자의 능력이란, 지금까지 다른 개발자가 풀지 못했던 문제를 해결하는 능력이다. 이능력이 코딩 능력임은 두말할 필요가 없으며, 궁극적으로 원하는 기능을 빠른 시간내에 제대로 구현하는 코딩 능력인 것이다.
이 능력은 단순히 어떤 툴 혹은 어떤 언어를 선택한다고 해서 얻어지는 것이 아니다. 모든 배움에 왕도가 없듯이, 개발에서도 최단 지름길은 없다. 때로는 현명한 선택을, 때로는 시행착오(우리 업계 용어로는 삽질)를 겪은 후, 뼈저린 경험들의 합집합과 교집합에서 얻게 되는 것이다.
어떤 플랫폼이든, 개발 도구이든, 언어이든 간에 만능 혹은 만병통치약 같은 존재는 없다. 내 경험에 의하면, 각기 장단점이 있을 뿐, 기능적으로 모든 툴을 압도하는 알렉산더 황제 성향의 툴은 없었다. 자기 한테 맞는 툴을 선택한다는 것은 분명히 중요하지만, 맞는 툴을 선택하려면 자신이 무엇을 만들고자 싶은지 부터 확실히 결정해야 한다.
앞으로 무엇을 만들지 모르기 때문에, 모든 것을 잘만드는 툴을 선택하려 한다는 것이 말이 되는 이야긴가? 장래에 목수가 될지 정비공이 될지 운전수가 될지 모르겠지만, 이 모두를 잘할 수 있는 기술을 선택하겠다는 것이 도대체 가능이나 한 이야기인가? 우리들은 어릴 때부터 모든 분야를 잘하는 사람이 되어야 한다는 잘못된 교육을 받아왔던 탓인가 보다.
닷넷 혹은 자바의 여러 뛰어난 기능을 광고하거나, 자바 혹은 닷넷이 차세대의 선택이란 글은 자주 보지만,
"나는 이러이러한 기능을 가진 프로그램을 만들 계획인데, 여러 툴(혹은 언어)들을 본석해 본 바에 의하면, 이런 저런 장단점 때문에 닷넷(혹은 자바, 델파이, C C++)를 선택하게 되었습니다"
이런 내용을 가진 글은 정말 잘 본적이 없었던 것 같다. 그 내용이 백프로 맞고 틀리고는 문제가 아니다. 문제는 개발자로서 생각한 내용의 깊이에 있다. 잘못 알았거나 틀린 내용은 댓글이나 다른 사람의 반론글로 새로 배울 수도 있다. 그래서 개발자들끼리 서로 도와가는 것이다.
우리는 개발자이며, 개발자들은 냉철한 논리력이 필요한 사람들이 아닌가? 적어도 자신의 툴이나 언어를 선택할 때는, 광고나 기대감 혹은 신앙심같은 것보다는, 냉정한 분석이 필요하지 않겠는가? 이런 냉철한 분석이 포함된 글들이 넘쳐 흘러야만, 개발자 게시판 다워지는거 아닌가?
|