http://ko.wikipedia.org/wiki/미야모토_무사시

“오륜서”에서 읽는 ‘개발의 道’ 9가지

병법과 개발의 도 아홉가지

김대현
HappyProgrammer
Published in
5 min readNov 24, 2013

--

전설적인 사무라이 미야모토 무사시가 집필한 “오륜서”라는 병법서는 번역서가 다양한데, 그 중에서도 “내 나이 마흔, 오륜서에서 길을 찾다”는 현대적 관점에서 자기계발과 엮어서 풀어 썼기에 검술이나 병법에 한정되지 않고 읽을 수 있다.

읽다보면, 병법에 관련한 내용들이 곧바로 개발에 엮어서 얘기해도 어색하지 않다는 생각이 든다. 그중에도, 땅의 장 마지막에 적힌 ‘병법의 도 9가지’가 가장 인상깊어서 따로 이렇게 정리해 본다.

병법의 도 9가지

http://ko.wikipedia.org/wiki/미야모토_무사시
  1. 올바른 마음으로 중심을 세워라.
  2. 이기는 방법을 배우고 내면화하라.
  3. 다양한 기술, 도구를 이해하고 활용하라.
  4. 다른 분야도 개방적으로 배우고 익혀서 폭을 넓혀라.
  5. 세상사의 이익과 손해를 분명히 알 수 있는 안목을 키워라.
  6. 옳고 그름에 대한 판단력을 키워라.
  7. 본질을 꿰뚫어 볼 수 있는 통찰력을 길러라.
  8. 디테일이 살아 있어야 한다.
  9. 쓸데없는 일에 낭비하지 말고 자신의 길에 집중하라.

어떤가? 읽다보면 이게 칼쓰는 병법에 관한 얘기인지, 따끈한 개발 방법론의 하나인지 헷갈리지 않는가?

1. 올바른 마음으로 중심을 세워라.

이 항목을 읽고, 수준 높은 프로그래밍 기술을 해킹, 피싱, 스팸, 바이러스등에 사용하는 사람들이 생각났다. 무엇이 옳고 그른지 감히 평가할 용기는 없지만, 각자 스스로 바르게 중심을 세우는 것이 중요하다고 이해해본다.

2. 이기는 방법을 배우고 내면화하라.

개발이 이기고 지는 승부 게임은 아니므로, 어떻게 연결해도 어색할 항목이겠다. 굳이 꼽는다면, 어떻게 해야, 실제로 사용자에게 도움이 되는 방법일지를 배우고, 그 결과에 집중하며 실험하고 늘 고민하는 마인드를 뜻한다고 억지를 부려보겠다. 결과물이나 승패에 전혀 중요치 않은 일로 에너지 낭비하는 일은 없어야 하겠다.

3. 다양한 기술, 도구를 이해하고 활용하라.

한가지 도구만을 전부로 활용하는 개발자가 많다. 프로그래밍 언어도 동적/정적, 객체지향형/함수형 가리지 말고 서너개씩 익히고 활용하자. DB도 RDB만 고집할 것도, NoSQL만 운운할 것도 아니라 골고루 두 장르(?) 다 이해하고 상황에 맞게 활용하라.

4. 다른 분야도 개방적으로 배우고 익혀서 폭을 넓혀라.

스티브 잡스도 인문학과 기술의 교차점에서 혁신을 이끌었고, 최재천 교수님도 ‘통섭’의 중요성을 강조하는 시대다. IT기술이라고 컴퓨터 앞에서만 프로그래밍 알고리즘만 파고 있을 것이 아니라, 주변의 다른 분야 학문에도 관심을 기울여 폭을 넓히자.

5. 세상사의 이익과 손해를 분명히 알 수 있는 안목을 키워라.

개발에만 매진한다고 해서 누가 대신 돈을 벌어다 주지 않는다. 자본주의 사회에서 경제 활동을 해가며 개발의 도를 추구해야하는 이상, 경제적 이해득실도 고려하는 안목을 키우자.

6. 옳고 그름에 대한 판단력을 키워라.

무엇이 옳고 그른지 단 하나의 답이 있을지는 모르겠으나, 적어도 본인 스스로의 주관과 가치관을 세워 판단하는 능력을 키워라. 당장 좋은 성과를 보고하기 위해 단기 이벤트를 진행하며 자원을 쓰는 것이 옳은가? 그 단타성 이벤트가 장기적으로 당신의 고객을 떠나게 하는 일일 수도 있다. 옳고 그름을 잘 판단하자.

7. 본질을 꿰뚫어 볼 수 있는 통찰력을 길러라.

해결 하고자 하는 문제의 본질은 무엇인가? 고객이나 사용자에게 필요한 핵심적인 기능은 무엇이며 무얼 도와주고자 하는가? 잡다한 기능이 모조리 다 되는 괴물 앱이나 서비스를 만들려는 생각은 일찌감치 버리고, 가장 본질적인 핵심에 집중해서 깔끔한 결과물을 개발하라.

8. 디테일이 살아 있어야 한다.

오륜서가 아니더라도 어디서나 중요하게 언급되는 사항이다. 작은 디테일 하나 놓치지 않는 세심함이 좋은 평가를 받고, 실효도 큰 것은 물론, 개발자 스스로의 자부심과 장인정신에도 큰 기여를 한다. 겉으로 드러나는 기능 하나하나의 디테일을 살리는 것은 물론이고, 내부 유닛/기능테스트에도 디테일을 잘 살려놓도록 하자.

9. 쓸데없는 일에 낭비하지 말고 본인의 길에 집중하라.

쓸데없는 일로 꼽을 만한 일은 여러가지가 있다. 개발적으로만 얘기하면, 특정 고만고만한 프로그래밍 언어에 대해 좋네 나쁘네 하며 유파(!)를 나누어 싸우게 되는 애들 싸움은 너무 흔해서 말할 필요도 없고, Emacs가 최고네 Vi가 최고네 하는 좀 오래되신 분들 끼리의 싸움도 정전인지 휴전인지 알 수 없다. 이런 일들은 오래전부터 있어온 논란인지, 책에도 멋지게 정리되어 있다.

칼싸움에서 칼은 도구에 불과하다. 칼의 도그마에 함몰되어버리면 칼싸움의 본질을 놓친다. 본질은 형식을 규정하지만, 때때로 형식이 본질을 왜곡시킨다. 상황에 맞게 무기를 사용해 어떤 경우에도 이길 수 있는 방법을 찾는 것이 올바른 병법이다.

프로그래밍 언어는 도구에 불과하다. 에디터도 도구에 불과하다. 상황에 맞게 잘 활용해서 각각의 경우에 실효를 거둘 수 있는 방법을 찾는 것이 올바른 개발이다.

이상, 다소 추상적일 수 있는 ‘병법의 도’를 마음대로 연결지어서 언급해보았다. 억지스럽거나 원뜻과는 다르게 연결지은 면이 없지 않겠지만, 분명 아홉가지 항목 자체는 개발자 각자가 잘 곱씹어서 추구해 볼만한 내용이지 않은가?

--

--

김대현
HappyProgrammer

시니어 백엔드 개발자. 함수형 프로그래밍을 선망하며 클로저, 스칼라, 하스켈로 도전하며 만족 중. 마이너리티 언어만 쫓아다니면서도 다행히 잘 먹고 산다. 최근엔 러스트로 프로그래머 인생 확장.