Simple is Beautiful!
한빛미디어
|
2004-10-01
|
by HANBIT
18
18,766
Initialize()...
아직 크게 자랑할만한 화려한 경력은 없지만, 이 글로 많은 동료, 후배 개발자들과 생각과 마음을 함께 할 수 있다면 정말 좋은 기회가 아닐 수 없다. 친한 후배의 소개로 다른 초보 개발자들에게 도움될만한 글을 에세이 형식으로 써달라는 요청을 받았다. 처음엔 훌륭한 개발자가 되기 위한 구체적이고 기발한 노하우 같은 것을 써야 맞다고 생각했지만, 밤늦게 이 생각 저 생각 정리하다 보니 전혀 다르게 쓰기로 마음 먹었다. 내가 정말 하고 싶은 말 딱 한가지만 쓰기로… 이 글을 읽는 사람이 절대 잊어먹지 않도록 말이다.
Run()...
"모든 개발은 단순화시킨 만큼 더욱 복잡하고 창조적인 응용을 얻어낼 수 있다." ─ Focal Point
필자가 지금까지의 경험을 통해 얻은 사실 한가지! 아무리 복잡하게 꼬여있는 시스템이나 개발도 쪼개서 생각하면 그 원리와 목적은 아주 단순하다. 필자는 독자들에게 이 말이 진리라는 사실을 강력하게 주장하고 싶다. 곁가지를 쳐내고, 큰 줄기를 찾아내고, 뿌리로부터 이어지는 핵심을 짚어내는 기술을 익힌다면, 개발은 더 여유롭고 즐거워진다.
그렇다면 이제부터는 여유롭고 즐거운 개발을 위한 마인드 컨트롤을 시작해보자! 필자는 위에서 말한 Focal Point를 이해하고 프로로 인정받기 위한 방법을 다음과 같이 제시하고자 한다.
마인드 컨트롤 1
눈알을 부라리며 세상의 모든 움직임을 소프트웨어 관점에서 관찰하고 연구해보자
어떤 훌륭한 소프트웨어도 한 기관에 의해 창안된 유래는 없다. 제품의 본질을 꿰뚫는 확고한 비전을 가진 한 사람에 의해 제품의 생명이 탄생하게 된다. 소프트웨어를 분석하는 사람들은 그 비전을 가진 사람을 도와 그 특성을 더욱 구체화시키고 다듬는다. 만약 개발 끝에 만들어진 이 제품을 사용하는 사람이 이 명확한 비전의 핵심을 놓치게 된다면, 그 프로젝트는 완벽한 실패다.
마인드 컨트롤 2
아무리 복잡해 보이는 문제도 단순한 문제 해결점을 가지고 있다
패턴 분석!
핵심을 파고들어라!
곁가지를 쳐내고 뿌리를 찾아라!
필자는 대학에서 생물학을 공부했다. 생명이 유지되는 그 메커니즘은 가히 상상을 초월할 정도로 정교하기 때문에 절로 감탄을 자아낸다. 왜 내가 숨을 쉬고 물을 마셔야 하는지... 아주 당연시되는 질문도 막상 설명하려면 생각해야 될 것이 한두 가지가 아니다. 하지만 원리는 아주 간단하다. 열역학의 법칙만 제대로 이해하고 공부하면 대부분의 메커니즘이 쉽게 이해된다( 생명체라는 것은 메커니즘만으로 설명할 순 없지만…).
단순한 사고는 모든 문제를 해결하는 열쇠다!
Focal Point를 찾아라!
가장 작은 단위로 쪼개서 생각하자!
패턴분석에 관한 책을 많이 읽고, 복잡해 보이는 소스 코드에서 핵심부분과 공통부분을 찾아서 좋은 것은 자신의 패턴으로 만들어라.
마인드 컨트롤 3
알고리즘이나 메커니즘을 대충 알고 넘어가면서 만든 프로젝트는 반드시 대충 만들어 질 수 밖에 없다
역사도 반복된다. 실수하고 나서 원인을 모르고 넘어가면 매번 같은 실수를 하게된다.
마인드 컨트롤 4
한 번 포기하기 시작하면 습관이 된다
나폴레옹 정신을 배워라. 축구 선수 홍명보는 승부차기할 때 미리 찰 방향을 정하고 나서 온 정신을 그 목표점에 집중하고 자신감을 공에 불어넣어 때려버린다고 한다. 목표점이 흔들리면 조금만 고비가 오면 쉽게 포기하게 된다. 개발은 자기와의 싸움이다. 개발자로서 자기의 소신과 목표가 분명하다면 절대 쉽게 무너지지 않는다. 확실한 한가지를 붙잡았다면 끝까지 밀고 나가라.
마인드 컨트롤 5
딱 하나만 꾸준히 하자
자주 옮겨 심은 나무는 잘 자라지 못한다. 자신이 가장 자신있고, 하고 싶은 부분에 계속 붙어서 매일 매일 꾸준히 하자. 세상은 호락호락 단번에 큰 선물을 주는 법이 없다. 필자의 친구가 했던 말 중에서 참 인상깊었던 구절 하나를 인용하겠다.
"최고를 얻고 싶다면 최고를 투자해라... 안그러면 도둑일 뿐!"
마인드 컨트롤 6
모범적인 소스를 보고 그 패턴을 완전히 익숙해질 때까지 반복해서 따라해본다
잘짜인 소스코드는 정말 배울 점이 많은 큰 형님이다. 열심히 따라 해보고 써먹자. 큰 재산이 된다.
마인드 컨트롤 7
전쟁터에 나갈 때 너무 많은 무기를 몸에 지니지 말자. 책가방 무거운 놈이 꼭 공부 못하더라…
자신이 능숙하게 다룰 줄 아는 무기를 쓰자. 닭 잡는데 소 잡는 칼을 쓰지 말고, 소 잡는데 닭 잡는 칼을 쓰지 말자! 자신에게 꼭 필요한 무기만 챙겨서 쉽고 여유있게 싸우자. 툴에 종속적인 사람일 수록 기본에 약하더라.
마인드 컨트롤 8
인생 경험을 풍부히 하자
아무리 훌륭한 소프트웨어도 쓰는 사람이 없으면 만든 사람이 맛이 간다. 발명은 필요에 의해 탄생하고, 필요는 시대와 문화 속에서 사람이 잉태하는 것이다. 시간 날 때마다 늘 새로운 경험과 감성을 기르자.
마인드 컨트롤 9
삽질은 이제 그만 ….
나도 군대에서 삽질 많이 해보았다. 많이 힘들다. 얻은게 무엇인가 물으면 할 말이 없다. 체력이 튼튼해진 것 같지도 않고… . 적당한 시행착오는 앞으로 실수를 예방하는 차원에서 큰 도움이 되겠지만 그 이상은 안된다. 그럴땐 손을 떼고 맑은 공기를 쐬자. 급할수록 돌아가라고, 급하다고 서두르기만 하는게 유일한 방법은 아니다.
Terminate()...
욕심이 생겨서 말을 많이 쓰다보니 중구난방인지도 모르겠다. 그렇지만 결론은 하나이다. "하나만 열심히 하자!" 한때 필자는 세상에 대한 욕심이 너무 많아서 7개 국어를 한꺼번에 공부한 적이 있다. 하지만 지금은? 한글도 어렵다. 강태공은 자신이 원하는 것을 얻기 위해 62년(?)을 기다렸다고 한다. 금방 결과가 안 나타난다고 쉽게 길을 바꾸지 말자. 개발은 마음먹기에 따라 달리 보일 수 있다. 세상을 아름답게 만드는 길이 될 수도 있고… 아니면 그저 돈을 벌기 위해 매일 잠을 설쳐야 하는 고통스러운 직업이 될 수도…
***
이 기사의 주인공인 이승주님은 생물학을 전공하고 지금은 열심히 소프트웨어를 연구하고 개발하고 있습니다. 취미는 컴퓨터 그래픽으로 그동안 인츠 VoIP 소프트웨어 개발회사와 지란지교 소프트 보안 기술 연구소에 근무하시다가 현재는 인터넷 포털 벅스의 기술연구소에서 근무하고 계십니다.
TAG :