본문 바로가기

개발 이야기

큐브와 개발자의 관계

다음 글은 마이크로소프트웨어 2007년 7월호의 '개발고수 12인이 말하는 실전 노하우'에서 발췌한 것입니다.

글을 읽다보면 큐브나 개발뿐 아니라 세상 사는 어떤 분야에서도 다들 비슷한 단계를 거치게 되는 것이 아닌가 하는 생각이 듭니다.

또, 지금 나의 위치는 어떤가라는 생각도 들지요. 호랭이는 큐브 맞추기도 초보 수준이지만 블로그도 기자도 그리고 아빠로서도 아직 초보수준이라는 생각이 들었습니다.

중급 단계로 넘어가려면 아직 해야할 노력들이 참 많은 듯합니다. ㅎ.ㅎ

------------------------------------------------------------------------------------

큐브 맞추기로 말하는

개발자 실력 향상 시나리오
 

소프트웨어 개발에는 끝이 없다는 말이 있다. 더 이상 수정할 필요가 없을 만큼 완벽하게 완성된 소프트웨어란 없다는 뜻이다. 마찬가지로 더 이상 실력향상이 필요 없을 만큼 완벽한 경지에 이른 개발자도 없다. 모든 개발자는 끊임없이 성장해야 한다. 하지만 모든 사람이 같은 속도와 성취도를 가지고 성장하지는 않는다. 효과적인 개발자의 실력향상과 성장에 대해 얘기해본다.

요즘 필자에게 취미를 묻는 사람이 있다면 필자는 주저 없이 ‘큐브 맞추기’라고 대답한다. 많은 사람들이 어릴 때 많이 가지고 놀았던 정육면체의 그 루빅스 큐브(Rubik’s Cube)이다. 큐브는 여섯 가지 색깔을 가진 총 26개의 블록을 이리 저리 회전시켜 모든 면의 색이 같아지도록 하는 간단한 놀이기구다. 기껏해야 6면을 가진 26개의 블록, 그중에서도 고정되어있는 가운데 6개를 제외한 20개의 블록을 움직이는 게임일 뿐이다. 하지만 큐브를 움직여 만들 수 있는 블록의 조합이 무려 43,252,003,274,489,856,000가지나 된다는 사실을 아는지? 무려 4,000경이나 되는 조합의 수가 나온다는 것이다. 그 많은 조합을 가진 다양한 방식으로 섞인 큐브를 모든 면이 같은 색을 가지도록 조합하는 것은 그리 간단한 일이 아니다. 그래서 많은 사람들이 큐브를 도전했다가 한 면 정도의 색을 맞춘 뒤 금방 포기하고 만다.

알고 보면 큐브의 세계는 나름 심오하다. 그 조합의 수만큼 다양한 색을 맞추는 솔루션들이 있다. 많은 수학자들이 큐브에 담긴 수학적 원리를 연구하고 있기도 하다. 큐브를 자기만의 방식으로 더 빨리 또는 더 적은 횟수로 맞추는 대회가 우리나라를 비롯해 전 세계에서 매년 열리고 있다. 큐브관련 동호회와 카페에서 수만 명의 회원이 활발한 활동을 하고 있다. 최근 몇 년 사이에 불어 닥친 복고 게임의 열풍 덕분에 오래도록 잠잠했던 큐브의 인기가 전 세계를 다시금 강타했고, 급기야 지난해에는 아마존의 게임 베스트셀러 부문 1위를 차지하는 사건을 일으키기도 했다. 

개발 노하우를 이야기해야 하는 이 코너에서 필자는 왜 갑자기 큐브 얘기를 하는 걸까? 필자가 보기에 큐브의 실력을 쌓아나가는 것과 개발자의 실력 향상 과정이 무척이나 닮아 있기 때문이다. ‘큐비스트’라 불리는 큐브 전문가가 되기 위해 노력하는 사람들의 모습과 개발자의 모습을 비교하면서 개발자의 실력 향상을 위해 필요한 자세가 무엇인지를 살펴보자.

큐브의 실력은 사용하는 큐브 기술에 따라 초급, 중급, 고급, 그리고 진정한 고수로 구분될 수 있다. 


초보자 – 기본개념 익히며 열심히 따라 하기

큐브 초보자들이 빠지기 쉬운 함정은 바로 처음부터 고수를 흉내 내려는 욕심이다. 고수들은 손이 보이지 않을 만큼의 빠른 회전으로 무작위로 섞여 있는 큐브를 10초대 초반의 짧은 시간 안에 맞춰낸다. 초당 7회전 이상의 빠른 손놀림과 중간에 버벅거림 없이 바로 다음 단계로 넘어가는 모습 등에서 우리는 감탄하게 된다. 그뿐인가. 한손으로 맞추기, 눈 가리고 맞추기, 심지어 발로 맞추기도 가능하다. 어떤 제약 조건과 환경에서도 아무런 주저 없이 척척 해내는 고수들의 모습을 보고 초보자들은 한편으로는 좌절하지만, 다른 한편으로는 강한 도전 욕구를 느끼게 된다. 

문제는 어설프게 고수들의 손놀림이나 흉내 내려고 하는 사람들은 이 시점에서 대부분 실패한다는 것. 고급 큐비스트들이나 사용하는 솔루션과 알고리즘 자료를 모아다가 이해도 되지 않은 상태에서 억지로 적용해보려고 애쓰다보면 어느새 큐브에 대한 흥미는 점점 떨어지고 결국엔 그나마 초보자로서 느낄 수 있었던 최소한의 기쁨마저 맛보기 힘들어진다.

착실하게 초보의 단계를 밟아 나가는 사람은 그런 고수들의 어려운 기술보다는 자신에게 맞는 기초 내용에 충실하려고 노력한다. 일단 큐브에서 사용되는 각종 용어들과 기호들에 익숙해진다. 센터, 코너, 엣지 블록이라는 기본 구성요소를 익히고 각 블록의 특징을 이해한다. 큐브는 사실 어떤 면의 색을 맞추는 것이 아니라. 가운데 있는 블록을 제외하고는 2개 이상의 색을 가진 블록의 위치를 맞추는 것이다. 이런 개념과 함께 초보자용 솔루션을 공부하기 위한 회전 기호에 익숙해지도록 연습한다. 외울 것이 제법 많지만 그 장벽을 넘어야 한 시간이 걸려서라도 큐브를 한번이라도 맞춰보는 짜릿한 기분을 느낄 수 있다.

초보 개발자들도 마찬가지다. 어설프게 고급 개발자들이나 보고 연구하는 책을 구해 처음부터 어려운 주제로 폼을 잡으려는 개발자라면 이미 개발자로서의 첫 걸음을 잘못 내디딘 것이다. 일단 가장 기본이 되는 프로그래밍 언어와 기초 개념들을 충실하게 공부하는 것이 초보자의 바른 자세다. 기초는 대충 건너뛰고 바로 중급 이상의 기술로 넘어가려는 욕심은 결국 어느 단계에서 더 이상의 성장을 막는 장애물이 되고 만다.

초보 큐비스트는 일단 가장 기초가 되는 해법을 열심히 외워서라도 큐브 맞추기를 많이 해보는 것이 중요하다. 처음에는 잘 알지 못한 채 무작정 따라 하기만 했던 솔루션이지만, 어느 단계에 이르면 솔루션 하나하나가 지닌 원리와 심오한 뜻이 무엇이었는지를 자연스레 알게 된다. 물론 초보자용은 좀 지루하다. 필수 회전수도 고급 큐비스트들이 사용하는 것의 2~3배 이상 된다. 하지만, 그것을 충실히 따라하면서 익히는 과정 없이는 결코 다음 단계로 나아갈 수 없다.

필자가 초급 개발자들에게 항상 강조하는 바는 일단 기초적인 내용의 코드라도 잘 만들어진 것을 열심히 분석하면서 흉내 내보라고 하는 것이다. 필자가 처음 프로그래밍을 배울 때는 마소나 컴퓨터 서적에 나온 모든 코드를 일일이 손으로 다 입력하고 그것을 흉내 내서 코딩하는 연습을 했었다. 그리고 그 중에 괜찮은 것이 있으면 그것을 잘 기억했다가 써먹으려고 노력했다. 자신의 실력을 과신하고 처음부터 자기 방식대로 하겠다고 욕심을 부리기보다는 일단은 고수들의 코드와 개발 방식을 겸허하게 받아들여 흉내내볼 필요가 있다. 물론 처음부터 고급 기술을 따라해 보라는 의미는 아니다. 가장 기초가 되는 코드들을 중심으로 그것들이 어떻게 만들어졌는지부터 하나씩 살펴보고 따라해 보는 것이 중요하다.

필자는 지금도 배우고 싶은 새로운 기술이 있다면 관련 서적이나 레퍼런스에 나오는 예제들을 빠짐없이 손으로 다 입력해서 실행해보고 그것을 숙지하려고 노력한다. 튜토리얼이나 예제에 등장하는 내용은 사실 그 기술을 만든 사람이 가장 핵심이라고 생각하는 내용을 간추리고 간추려 모아놓은 것이다. 그 내용과 순서를 완전히 숙지하지 않고 더 깊은 내용만 추구하려는 태도는 기술을 온전히 익히는 데 도움이 되지 않는다.

간단한 예제를 반복적으로 코딩 연습하는 것은 기초적이지만 핵심적인 내용을 빠르게 사용할 수 있는 훈련으로 적합하다. 그러면서 조금씩 원리를 깨닫게 되고, 머지않아 반복되는 패턴이 보이기 시작할 것이다.

기초에 충실하면서도 꾸준한 반복연습을 하는 것이 다음 단계로 나아가는 최적의 지름길이다. 큐브 초보자들은 초보 기술을 이용해 보통 양손으로 1분 이내에 큐브를 맞추는 단계가 될 때까지 연습한다. 처음에는 초보자용 솔루션을 보고 30분에 맞추던 것을 이제는 기초 공식을 보지 않고도 1분 이내에 맞추는 수준으로 올라간다.

처음에는 단순한 CRUD 코드를 작성하는 데도 예제를 봐야 하고 레퍼런스 매뉴얼을 뒤져가며 쩔쩔매다 며칠씩 보내곤 하지만, 이를 꾸준히 반복 연습하다보면 다소 응용된 CRUD를 몇 시간 내에 개발할 수 있는 실력을 얻게 된다. 이쯤 되면 슬슬 자신감이 붙기 시작하지만, 한편으로는 한계를 느끼게 된다. 지금까지 해온 것을 좀 더 빠르고 효과적으로 할 수 없을까라는 의문이 들기 때문이다. 바야흐로 이제 중급으로 올라갈 때다.


중급 – 다양한 응용기술에 관심 돌리기

초급 단계에서 이미 충분한 시간과 여유만 주어진다면 큐브를 다 맞출 수 있는 실력을 갖췄다. 하지만 여전히 그 하나하나 솔루션의 원리가 완전히 이해되진 않는다. 아무래도 기초적인 방법을 따라하면서 숙지하는 식으로 연습했기 때문이다. 그래서 중급이 되면 이제 반복되는 단순한 회전과 비효율적인 해법들을 좀 더 고급스러운 것으로 대치하기 시작한다. 흔히 말하는 각종 중급용 공식들과 팁들을 익혀나간다.

개발자도 마찬가지다. 기초를 충실히 갖춰 웬만한 프로그램은 시간만 충분히 주어진다면 만들 수 있겠지만 그래도 여전히 뭔가 부족하게 느껴진다. 고수들의 그것에 비하면 자신들의 개발 속도와 나오는 코드의 질이 뭔가 달라 보인다. 이제 기초를 넘어선 각종 응용기술과 개발 전략에 눈을 뜰 때이다. 이때 필요한 중요한 두 가지는 개념에 대한 깊이 있는 이해와 다양한 새로운 기술을 익히는 것이다.

자바라는 객체지향 언어를 배워 이제껏 잘 써왔지만 여전히 객체지향적 설계와 프로그래밍에 대한 깊은 이해가 없다면 이제 객체지향 원리들을 충실히 익힐 차례다. 또 개발자들이 부딪치는 많은 문제들에 대한 표준화된 솔루션을 정리해놓은 디자인패턴 같은 것도 공부해야 한다. 그러면서 기존에 그저 흉내 내기에 급급했던 코드들이 왜 그런 식으로 구성되었어야 했는지를 하나씩 깨닫게 마련이다.

중급 큐비스트들도 원리에 대한 이해가 점점 생겨나게 된다. 이전에는 회전을 더 많이 하더라도 가장 단순한 방법을 써서 맞추는 데만 충실했다면 이제는 그 각 회전이 가지는 의미를 알 수 있어야 한다. 큐브 공식에 가장 자주 등장하는 패턴인 ‘공식-역공식’ 패턴의 특성도 이해해야 한다. 또 방향(Orientation)과 조합(Permutation)이라는 큐브 맞추기의 중요한 원리도 이해해야 한다. 그런 것을 학습하면서 그동안 써왔던 기술들이 어떤 원리에 의해 만들어졌는지를 깨닫는 과정에 들어선다.

물론 중급 레벨에서 너무 많은 것을 기대해서는 안 된다. 다만, 이전에는 단순히 외우고 베끼고 따라 하기만 했던 것을 이제는 좀 더 깊이 들여다 볼 수 있도록 훈련하는 것이다.

중급에서 익혀야 할 또 한 가지는 속도의 향상이다. 중급 큐비스트라면 이제 양손으로 30초대에 진입하는 것을 목표로 해야 할 것이다. 초급에서는 사용하지 못했던 단축 솔루션들을 익히고 원리를 응용한 핑거 트릭(Finger Trick)이나 핑거 숏컷(Finger Shortcut) 등을 배우면서 속도의 향상에 힘쓴다.

개발자들은 생산성의 향상에 주목한다. 이제까지는 어떻게 만들던지 코드가 돌아가기만 하면 된다는 생각이었지만, 이제는 가능하면 빠르고 정확하게 동작하는 코드를 어떻게 효율적으로 작성할 수 있는지에 집중해야 한다. 초보 때는 원리를 배우기 위해서라도 가능한 한 직접 모든 것을 만들어 사용했다면 중급에서부터는 효율성을 중시해 다양한 라이브러리와 프레임워크를 도입해 보는 게 좋다. 너무 욕심을 부리지 않는 범위에서라면 새로운 기술을 익히고 그런 잘 만들어진 기술을 활용하는 즐거움에 빠져보기도 하자. 


고급 – 시간과 품질의 싸움

많은 큐비스트들이 큐브도 원하는 대로 맞출 수 있고, 제법 속도도 나는 중급 단계에서 그냥 주저앉는 경우가 많다. 더 이상의 고급 수준으로 가는 것에 대한 욕심이 없기 때문이기도 하고, 고급 실력을 갖추는 데는 사실 엄청난 노력이 필요하기 때문이기도 하다. 개발자들 또한 중급 정도의 실력이면 어디 가서나 눈치 안보고 나름의 실력을 뽐낼 수도 있고, 또한 주어진 일을 해내는 데도 무리가 없으므로 그 정도에서 만족하려는 경향이 있다. 어쩌면 그 가운데 소수의 사람들만이 도전하기 때문에 그 다음 단계가 고급이라고 불리는지도 모르겠다.

상당수의 중급 큐비스트들은 고급 난이도에 도전을 시도한다. 6면을 맞추는 데 30초 대 정도의 큐브 실력이면 어디에든지 충분히 실력을 뽐내 이목을 집중시킬 수 있다. 하지만 이제는 그런 차원이 아니라 진정한 자신에 대한 도전이 시작되는 것이므로 고급 기술을 익혀 시간을 20초대, 더 나아가 10초대 후반까지 도전하려고 한다. 그러기 위해서는 먼저 고급 기술들과 이론들을 익혀나가야 한다. 10대 때 이미 자신만의 고급 큐브 솔루션을 개발한 제시카 프리드리히 교수와 같은 천재적인 사람들에 의해 만들어진 고급 기술들은 초보자가 기억하고 알아야 하는 것보다 10~20배 이상의 공식을 암기하고, 또한 그것을 응용할 수 있는 수 백 가지의 케이스를 빠르게 파악할 수 있는 능력을 요구한다. 이는 며칠, 혹은 몇 주간의 노력으로는 도저히 도달할 수 없는 수준이므로 적어도 몇 달, 혹은 몇 년에 이르는 엄청난 노력이 필요하다. 하루에 12시간씩 연습한다는 사람들의 이야기도 종종 들어본다. 직장인인데도 틈만 나면 큐브를 손에 들고 연습하고 공식을 암기하고 다양한 응용케이스를 풀어보는 훈련을 한다. 그렇게 해서 큐브 맞추는 시간을 5초, 10초 단축하는 데 엄청난 노력을 들이는 것이다.

고급 개발자가 되는 길은 어떠한가? 역시 만만한 것은 아니다. 중급에서는 그저 기능 구현을 직접 하지 않고 남들이 만든 것을 가져다가 응용해 쓰는 훈련을 했다. 이제 고급 개발자가 되면 이제까지 해보지 않고 다루지 않았던 기술과 영역까지 받아 들여 생산성을 극대화 하고 전체 애플리케이션 구조의 효율을 따질 수 있다. 또한 품질과 유연성까지 고려한 개발이 이뤄지는 것이다.

이렇게 하기 위해서는 또한 새롭게 공부하고 훈련할 것이 많다. 품질의 향상과 궁극적인 생산성 극대화를 위해 다양한 툴을 익히고 사용한다. 이전에는 이클립스와 그 번들에만 충실한 채 썼다면 이제는 자신만의 효과적인 개발을 위한 각종 플러그인과 써드 파티 툴들을 익히고 익숙해진다. 또한 테스트 주도 개발처럼 개발의 스타일을 완전히 뒤집어버리는 큰 도전에도 과감히 뛰어들게 된다. 그것이 자신의 실력을 20~30%만 더 향상시켜 준다고 해도 기꺼이 도전할 의지가 있는 것이다.

반대로 기초의 더 아래까지 내려가 가장 깊은 원리를 파고들게 된다. 이전에는 그저 가져다가 잘 쓰기만 하면 됐다고 생각했던 각종 오픈소스 제품들을 이제는 소스코드 레벨을 들여다보며 그 원리를 파악하려고 노력한다. 어떤 개발자는 자바의 바이트코드까지 분석해가면서 성능 향상을 위해 노력하기도 한다.

고급개발자는 그저 개발 경험과 시간이 많다고 저절로 되는 것이 아니다. 부단한 노력과 함께 자신의 실력을 향상시킬 수 있는 것이라면 무엇이든지 도전해보는 용기가 필요하다. 큐브의 고급공식을 적용하다보면 오히려 중급 때보다도 시간이 더 오래 걸릴 때가 있다. 아무래도 이전에 손에 익숙한 방식이 아닌 탓에 숙련이 되려면 그만큼 시간이 더 필요하다. 물론 충분한 연습이 따르면 이전에 사용하던 기술로는 도저히 따라올 수 없는 대단한 효과를 나타낸다.

고급개발자들이 새로운 프레임워크나 기술을 과감히 적용하려고 하다보면 자꾸 이전에 익숙하게 쓰던 방식이 더 편하지 않았는가라는 유혹에 휩싸일 수 있다. 하지만 그렇더라도 끝까지 포기하면 안 된다. 필자가 가장 넘기 힘들었던 단계는 오랫동안 익숙하게 사용해왔던 자바의 표준 기술 스택들인 JSP, EJB, JDBC 등을 버리고 스프링이나 하이버네이트 같은 프레임워크 기반의 기술을 사용하기 시작할 무렵이었다. 이전에 JSP Model1으로 개발할 때는 3시간이면 충분했던 웹 모듈이 SpringMVC로 개발할 때는 일주일이나 걸렸던 적도 있다. 십수년간 써와서 너무나도 익숙한 네이티브 SQL을 쓰지 않고 ORM이라는 다소 거추장스러워 보이는 기술을 쓰려니 다대다 관계의 테이블들을 읽어오는 것 하나를 하려 해도 매뉴얼을 뒤져야 했고, 또한 이게 맞나 싶어 자꾸 확인하면서 진행하려니 무척 답답했던 게 사실이다. 하지만 그때 포기하지 않고 끝까지 도전한 끝에 지금은 스프링과 하이버네이트 등을 이용해 누구보다도 빠르고 더 깔끔하게 우수한 코드를 작성할 수 있는 단계에 이르렀다고 생각한다.

또 하나 고급의 단계가 되기 위해 요구되는 것은 자신만의 기술과 응용력이다. 다양한 천재적인 큐비스트들에 의해 만들어진 고급 공식들이 있다. 그럼 고급 큐비스트들은 그것을 단순히 외울까? 현존하는 최고급 큐브 공식은 약 1,500개의 시퀀스를 가지고 있다. 각 시퀀스마다 적어도 5~10회전은 필요로 하니 우선 수만 개의 회전조합을 기억하고, 큐브의 상태를 딱 본 후 어떤 것을 어떻게 적용할지를 떠올릴 수 있어야 한다. 과연 그런 방식이 미련하게 암기한다고 되는 것일까? 절대 그렇지 않다. 오히려 그런 고급공식은 큐브의 개념과 원리를 완벽히 이해하고 있다면 자연스럽게 도출해 낼 수 있다.

고급 큐비스트들은 모두 자신만의 솔루션을 가지고 있고, 또 계속해서 그것을 개발해 낸다. 이전보다 조금 더 나은 회전을 할 수 있는 손동작이 있거나 회전 순서, 방식이 있다면 그것들을 끊임없이 찾아내고 자신의 것으로 만들려고 노력한다.

고급 개발자들도 또한 자신만의 노하우와 경험에서 나오는 다양한 팁과 기술들 보유하고 있고 끊임없이 자신만의 새로운 기술을 개발해낸다. 또한 그렇게 만들어진 자신의 기술을 남들과 나누는 것도 고급 개발자의 멋진 모습이 아닐 수 없다. 후배 개발자들에게 좋은 개발 팁과 기술을 알려주고 조언해주는 것, 또 자신이 작성한 좋은 코드를 오픈소스와 갈은 형태로 온라인에 공개해 많은 사람들이 배울 수 있도록 해주는 것. 그런 모습이 없이 진정한 고급 개발자라고 말할 수 있을지 의심스럽다. 이처럼 최고의 기술을 위한 부단한 노력과 자신만의 기술 창조를 위한 수고는 고급 개발자로서의 가치를 멋지게 드러내줄 것이다.


고수 – 고수에겐 끝이 없다

고급 개발자의 레벨을 넘어서서 언젠가는 최고의 경지에 다다른 고수의 길로 가는 사람들도 있다. 현재 3×3×3 큐브의 세계 챔피언은 20대 초반의 한국 청년이다. 그는 다른 사람들은 한 면도 채 맞추기 힘든 11초라는 짧은 시간에 큐브 6면을 모두 맞춰낸다. 그것도 어쩌다 한번이 아니라 여러 번 시도한 평균 시간이다. 그가 큐브를 맞추는 모습을 촬영한 동영상을 아무리 천천히 살펴봐도 그 회전을 제대로 볼 수 없다. 제대로 보려면 아마 초고속 카메라가 필요할 것 같다. 현재 그의 한글 블로그에는 전 세계의 수많은 큐비스트들이 방문해 글을 남기고 간다. 그만큼 인기가 높고, 따르는 사람이 많다.

그런데 그의 블로그를 계속 읽다보면 그 최고의 큐비스트는 그런 인기에 그다지 관심이 없음을 알게 된다. 대신 오늘도 0.1초를 더 줄이기 위해 더 나은 방법이 없을까를 고민하며 세계의 많은 큐비스트의 사이트 등을 뒤지고, 그 과정에서 좋은 것을 발견하면 그것을 연습하고 그 결과를 블로그 등에 공개하며 살고 있다. 물론 연습은 끝이 없다. 날마다 빠짐없이 자신의 기록을 측정하고 공개한다.

고수라는 것은 마치 도를 닦다가 뭔가 깨달음을 얻어 어떤 경지에 다다르는 것처럼 어느 순간 끝이 보이는 그런 위치로 가는 것을 의미하진 않는다고 생각한다. 과연 개발자의 끝이 있을까? 현재 세계 최고의 개발자라고 칭송받는 사람이 그대로 가만히 있어도 여전히 최고수의 자리를 지킬 수 있을까? 그렇지 않다. 오히려 최고의 개발자라고 불리는 사람일수록  꾸준히 자신의 실력을 향상시키고 새로운 기술과 좋은 전략을 배우기 위해 노력하고 있다.

세계적으로 유명한 개발자들을 만나 그의 강연이나 얘기를 듣다보면 다음과 같은 그들의 말에 종종 놀라게 된다. “저는 이곳 모임에서 여러 분들을 만나 이번엔 이런 것을 배울 수 있었습니다.”

그들은 자신보다 실력이 부족하다고 생각되는 다른 개발자들에게서도 무엇인가를 끊임없이 배우려고 노력한다. 그 겸손한 자세야말로 그들을 진정한 고수의 자리에 올려놓은 힘이 아닐까 생각해 본다.

이처럼 최고의 큐비스트와 최고의 개발자들이 지닌 공통점은 결국은 겸손이 아닐까 싶다. 자신의 실력에 자만하지 않고 노력을 게을리 하지 않으며, 끊임없이 배우려는 자세와 자신의 것을 남들과 공유하려는 마음가짐. 그것은 결국 모든 개발자가 지향해야 할 궁극적인 고수의 자세일 것이다.

------------------------------------------------------------------------

이일민 tobyilee@gmail.com | 오픈소스 기술을 엔터프라이즈 시스템에 적용할 수 있는 전략과 기술 연구에 많은 관심을 가지고 있다. 스프링 프레임워크와 하이버네이트 등의 오픈소스 프레임워크의 교육, 컨설팅, 기술 지원을 제공하는 Epril의 대표 컨설턴트로 활동하고 있다. 한국스프링사용자모임의 기술고문으로도 활동하며 오픈소스 기술의 저변확대를 위해 노력하고 있다. 오픈소스 기술에 대한 정보를 공유하는 toby.epril.com 블로그를 운영 중이다.