프로그래머들의 고민

얼마 전에 MS에서 새로운 Framework을 내놨고 아직까지 이곳 저곳에서 그 Framework을 위한 세미나나 발표회로 떠들썩 합니다. SUN이 Java를 내놨을 때도 지금과 같았고, 그때고 지금처럼 새로운 Framework은 정말 ‘기술 역사상 획기적인 전환점…’ 또는 그 이상 무언가를 해줄 것처럼 얘기들을 했습니다. 그리고 이런 얘기가 나올 때마다 어떻게 따라가야 하는지 헷갈려 하고 고민하는 프로그래머들이 생겨나게 됩니다.

우리가 잘 아는 20대 80 법칙, 파레토의 법칙이라고도 말합니다. 이 말은 이탈리아 경제학자 파레토가 말한 것으로 ‘전체 결과의 80%는 전체 원인 중 20%에서 비롯됐다’ 는 법칙입니다. 20%의 소비자가 전체 매출의 80%를 차지하는 경향, 국민의 20%가 전체 부(富)의 80%를 차지하는 경향, 직장에서 20%의 근로자가 80%의 일을 하는 경향 등이 그것인데 이는 소프트웨어 개발 뿐만 아니라 시대의 흐름을 파악하는데도 그대로 적용 할 수 있습니다. 실제로 위 Framework 얘기에서 본다면 변하지 않는 20%의 알맹이와 그를 포장한 80% 라는 것을 알 수 있을 것입니다. 아무리 새로운 뭔가가 나와도 바뀔 수 없는 20%가 존재한다는 것입니다.

바뀌지 않는 20%

믿기 어렵겠지만 몇 년 전만 하더라도 HTML로 된 아주 간단한 웹사이트를 하나 만들거나 수정하려고 해도 반드시 HTML 전문가가 필요했던 적이 있었습니다. 그때는 나모나 드림위버 같은 HTML에디터 툴이 없었기 때문에 HTML을 모르면 간단한 페이지조차 만들 수 없었습니다. 모든 HTML 코드를 손으로 직접 입력해야 했기 때문이었는데요. 하지만 지금은 HTML 작성하기 위한 에디터 툴이 생겨나서 예전처럼 모두 손으로 입력하는 일은 없이 간단하게 만들 수 있게 됬습니다. 하지만 embed 테그의 속성을 좀더 제어 한다던 지 등등의 좀더 세련된 작업을 위해 HTML 전문가는 여전히 필요합니다. 이처럼 시대가 바뀐 것처럼 보여도 여전히 바뀌지 않는 그것은 존재하는 것 입니다.

요즘에 주목 받고 있는 RIA(Rich Internet Application)기술 중에 AJAX(Asynchronous JavaScript and XML) 라는 것이 있습니다. Javascript와 XMLHttpRequest를 이용해서 페이지 이동 없이 서버요청을 할 수 있다는 것이 그 내용입니다. 이런 기술을 사용하면 지금까지 불가능하게만 생각됬던 웹 페이지의 새로운 유저 인터페이스가 가능하게 됩니다. 예를 들어 가장 흔히 볼 수 있는 네이버에서의 추천 검색어라던가 얼마 전에 이슈가 됬던 구글맵같은것도 이런 기술을 적용한 예 입니다. 이제는 웹 페이지에서 아웃룩을 같은 프로그램을 구현하는 것도 가능하기에 그 누군가는 정말 새로운 기술이라서 세상이 뒤집어 질것처럼 예기하는지 모르겠지만 사실 잘 따지고 보면 기존에 Javascript와 HTML을 알고 있던 프로그래머라면 금방 별로 새로울 것 없는 얘기라는걸 알게 될 것입니다.

또, ASP.NET을 보면 ASP.NET 2.0에서는 많은 새로운 컨트롤들이 제공 됩니다. 지금까지 힘들게 구현해 왔던 페이지 템플릿 같은 컨트롤이나 트리 컨트롤 같은 것 들이 제공된다고 합니다. 다시 말해서 ASP.NET 이전에 힘들게 작업하던 내용들이 이제는 간단한 컨트롤로 가능하게 됬다는 겁니다. 로그인 폼이나 JavaScript로 트리 컨트롤 만들기가 얼마나 골치 아픈 일인데 이런 것들을 한방에 컨트롤로 만들어서 제공해 준다니 당연히 환영할 만한 일입니다. 하지만 아무리 쉬운 뭔가가 있다 해도 이미 사용하던 지식의 쓸모 없어 짐을 의미하는 걸까요? 그렇지는 않을 겁니다. 물론 사용하기는 편리해 졌지만 좀더 고급기능의 사용을 위해서는 이미 알고 있는 지식이 훨씬 더 많이 쓸모가 있을 것 입니다.

이런 바뀌지 않는 20%의 예들은 소프트웨어 개발에만 적용 되는 것은 아닙니다. 저희 동네에는 피아노 잘 치는 꼬마가 있습니다. 하루는 제가 좋아하는 음악의 악보를 그 꼬마한테 가져다 줬더니 몇 번 연습 끝에 금방 치곤 하는 것입니다. 혹시 그 꼬마가 알고 있는 악보라 금방 쳤을까요? 그렇지는 않을 겁니다. 즉, 20%에 해당하는 피아노 치는 능력과 악보 보는 능력이 갖춰져 있는 상태여서 금방 칠 수 있었던 것이지요.

기본에 충실한 프로그래머

사실 요즘에 저도 고민을 많이 하는 문제입니다. 하루가 멀다 하고 새로운 무언가는 계속 터져 나오는데 지금은 가능할 수 있어도 앞으로 언젠가는 그런 일들이 점점 더 힘들어 질 수도 있다는 생각입니다. 하지만 이런 기술들이 앞으로 쓸모 없어진다는 말은 아닙니다. 이제는 새로운 무언가보다 기본 20%에 더 치중해야 한다는 겁니다. “MS-SQL2005 에서 새로운 T-SQL문법을 제공한다.” 라고 하면 모든 SQL에서 사용 가능한 표준 SQL문은 알지 못한 채 새로운 80% 포장에 현혹되서 20%의 기본을 무시하고 있었던 건 아닐까요?

인터넷 서핑을 하다 ‘좋은 코딩습관’ 이란 블로그 포스트를 본 게 생각납니다. 자세한 내용은 모두 기억나지 않지만 첫 번째가 ‘표준을 따르라’ 였습니다. 대표적인 예로 C언어의 main함수를 예로 들었는데 main함수도 하나의 함수이기 때문에 return type 과 argument 표시해 줘야 한다는 것 입니다. 그래서 ‘main()’이라고 선언하기 보다는 ‘int main(void)’라고 선언 하는 것이 표준에 따르는 것이라는 내용 이였습니다. 이처럼 좋은 코딩습관도 기본에 충실할 때 오히려 더 다양한 변화에 유연해 질 수 있는 것입니다.

마지막으로

선배 프로그래머들이 그토록 강조하던 “설계는 길게, 코딩은 짧게” 말이 생각납니다. 코딩을 짧게 하는 능력은 언어의 능숙도 같은 것도 영향을 줄 수 있겠지만 어느 환경에서도 적응할 수 있는 기본에 충실한 20%의 능력을 가진 프로그래머만이 해낼 수 있는 말이라 생각합니다. 이제까지는 프로그래머들은 프로그램을 ‘짜는’ 일에만 집중했습니다. 프로그래머들은 보다 빨리 프로그램이 실행되는 결과를 보여줘야 했고, 관리자들은 프로그램이 실행되는 것을 보고서야 프로젝트가 제대로 진행되는지 안심할 수 있었습니다. 이처럼 언어적인 스킬만 높이고 우리들의 손가락을 빠르게 해야 했던 작업들이 지금까지 얼마나 많은 부작용을 가져다 주는지 이미 많이 경험했습니다. 높은 건물을 지을수록 땅을 더 깊이 파듯이 더 오래 살아남는 프로그래머가 되기 위해서는 더 기본에 충실해야 한다고 생각합니다.