개발을 처음 시작할 때에 누구나 한번쯤 특정 라이브러리를 사용해서 MP3 플레이어나 게임 같은 것을 만들곤 우쭐해 하던 기억이 있을 것이다. 그러면서 우리는 잘 만든 라이브러리에 대한 환상에 빠진다.
라이브러리를 넘어서 프레임워크라는 말이 대세가 된 요즘이다. 신기술이라 하면 프레임워크란 말 정도는 달아줘야 그나마 개발자들이 한 번이라도 쳐다보게 마련이다. 그렇다면 라이브러리나 프레임워크 같은 것들이 개발자에게 가지는 의미는 무엇일까?
나는 개발자 게시판에서 벌어지는 도구에 관한 종교적인 논쟁에서 그러한 것들을 느껴보곤 한다. 그 중에 대표적인 논쟁이 언어에 관한 것이다. 자바 vs C++, C++ vs C#이런 류의 것들이다. 그런 논쟁의 중간을 잘라서 살펴보면 신입 개발자들이 프레임워크나 라이브러리에 대해서 가지는 환상을 쉽게 볼 수 있다. C#으로는 10줄이면 되는 것을 C++로는 1000줄을 작성해야 한다는 사실로부터 사용처나 목적을 떠나서 C#이 더 좋다고 하는 주장이 그 대표적인 예다. C#에서 10줄이 되기 위해서 뒤에서 다른 개발자들이 작성한 10만 줄의 코드를 보지 못하는 것이다.
프레임워크의 대중화는 생산성을 극적으로 끌어올리는데 일조했다. 너도나도 레고 블록 같은 프레임워크의 구조만 익히면 이것저것 조합해서 근사한 것을 만들 수 있는 세상이 온 것이다. 하지만 다른 한편으로 프레임워크는 약골 개발자들을 대량으로 양산하는 첨병 역할 또한 같이 했다. 많은 신입 개발자들이 프레임워크에서 지원하지 않으면 만들 수 없는 기능이고 다음 버전의 프레임워크에 해당 기능이 포함되기를 기다려야 한다고 생각한다. 그들은 프레임워크는 완벽하다고 생각한다. 말 그대로 프레임워크라는 우물 안에 갇힌 개구리인 셈이다.
하지만 좋은 개발자가 되기 위해서는 프레임워크에 한정되지 않은 강한 개발자가 되어야 한다. 더 넓게는 도구에 종속되지 않는 자유로는 개발자가 될 필요가 있다. 그렇다면 어떻게 강한 개발자가 될 수 있을까? 방법은 간단하다. 프로그래밍의 기초 체력이라 할 수 있는 논리력을 향상 시키는 것이다.
그렇다면 논리력은 어디서 나오는 것일까? 그것은 여러분의 논리력을 향상 시켜주는 문제를 지속적으로 해결하는 것에서부터 길러진다. 처음부터 거창한 문제를 해결할 필요는 없다. 프레임워크나 운영체제에서 지원해 주는 기능을 사용해서 해결하고 있는 문제를 해당 기능 없이 구현해 보거나 프레임워크나 운영체제의 접근 방법과는 다른 좀 더 좋은 방법을 생각해 보는 것만으로도 충분하다.
42.195 킬로미터를 달리는 마라톤을 하는데 가장 중요한 한 가지 요소는 기본적인 심폐 능력이다. 마찬가지로 프로그램을 작성하는데 있어서 가장 중요한 기본 요소는 논리력이다. 얼만큼 새로운 API를 아는지, 라이브러리 구조를 아는지, 프레임워크의 세부 기능을 암기하고 있는지가 아니라는 이야기다. 그러한 것들은 모두 시간이 지남에 따라 쉽게 습득할 수 있는 기술들이다. 특히나 요즘같이 인터넷이 대중화된 시대에는 더더욱 그런 것들은 가치가 없다. 하지만 논리력은 쉽게 습득하기도 힘들뿐더러 그 능력의 차이는 극복하기가 쉽지 않다. 바퀴를 새로 만들 필요는 없다. 하지만 그 바퀴를 만들 수 있는 사람과 그렇지 않는 사람과의 차이는 분명히 존재한다는 사실을 명심해야 한다.
12 0