개발자가 본 도구의 본질

우리는 살면서 도구를 사용하지 않을 때가 없습니다. 벽에 액자를 걸려고 해도 망치라는 도구가 필요하고, 종이를 자르려고 하면 가위라는 도구가 필요합니다. 도구는 저마다 목적을 가지고 있습니다. 사전적 정의에 따르면 도구(道具)란 다음 두 가지 의미를 갖습니다.

  1. ‘일을 할 때 쓰는 연장을 통틀어 이르는 말’
  2. ‘어떤 목적을 이루기 위한 수단이나 방법’

여기서는 ‘어떤 목적을 이루기 위한 수단이나 방법'으로서의 도구에 대해 살펴보겠습니다. 한자어 도구(道具)의 의미를 보면, 道(길, 도리, 이치, 재주), 具(갖추다, 구비하다, 온전하다)라는 뜻을 담고 있습니다. 즉, 이치나 도리를 갖추고 있는 것이라 할 수 있습니다.

한 가지 목적으로서의 도구

도구는 한 가지 목적에 충실해야 하며, 너무 많은 목적을 담으면 안 됩니다. 본래의 ‘도리나 이치'를 알 수 없기 때문입니다. 각기 쓰임새와 목적이 다른 도구들을 이용하면 아름다운 건축물도 만들 수 있습니다.

파고들다 보면 개념의 말들에는 한 가지 목적이 있습니다. 바로 그것이 ‘도구'의 본질입니다.

도구의 단일 기능성

개발 관점에서 보면, 고객의 요구사항이 늘어남에 따라 불필요한 기능들이 도구에 추가되는 ‘Feature Creep’ 현상이 발생할 수 있습니다. 이는 도구의 본질을 흐리게 만듭니다.

따라서 도구는 단일한 목적을 가지고 제작되어야 하며, 유연성과 확장성을 갖추어야 합니다. 기능이 많은 것은 오히려 ‘독'이 될 수 있습니다.

도구 활용의 단계

  1. 도구 설계 - 꿈, 목표, 전략을 정하는 일
  2. 도구 제작 - 꿈, 목표, 전략을 위해 준비하는 일
  3. 도구 숙달 - 꿈, 목표, 전략을 위해 노력하는 일
  4. 도구 사용 - 꿈, 목표, 전략을 실행하는 일

성공적인 프로젝트를 위해서는 각자가 가진 역량(도구)의 합이 일정 수준을 넘어야 합니다. 개발자는 평상시에 노하우를 연마하는 도구를 만들고 익혀 생산성을 높여야 합니다.

여러분은 어떤 도구를 가지고 계신가요? 도구의 본질을 이해하고 적재적소에 활용한다면 어떤 목표라도 달성할 수 있을 것입니다. 도구야말로 꿈을 이루기 위한 필수 요소임을 잊지 맙시다.