개발자의 가장 중요한 역할은 개발이 아니다?

Source: http://letscc.net/detail.php?idx=229144&k=developer
Source: http://letscc.net/detail.php?idx=229144&k=developer

개발자의 가장 중요한 역할은 무엇일까? 이 질문을 들으면 많은 사람이 당연한 걸 묻는 것 아니냐,는 반문을 할 것이다. 당연히 개발자니까 소프트웨어를 개발하는 게 가장 중요한 일일 것이다. 물론 이 대답을 부정할 생각은 없다. 하지만 많은 개발자가 놓치는 부분이 있다. 개발자의 가장 큰 특권이자 반드시 자신의 역할로 생각해야 하는 게 있는데, 바로 도구 개발이다. 도구 개발?

지금은 컨설팅을 하지 않고 개발만 하고 있지만, 예전에 다른 컨설팅을 위해서 다른 조직을 다녀보면, 소프트웨어 역량이 있는 조직과 없는 조직은, 사용하고 있는 도구에서 그 능력이 판가름 날 때가 많았다. 개발자들이 늘 새로운 것을 좋아하는 것 같지만, 의외로 보수적인 측면이 많다. 예를 들자면 자신이 일하는 방식을 고집할 때가 많다는 것이다. 이것을 다른 말로 하자면 더 효율적으로 일할 수 있음에도, 즉 도구를 사용한다면 말이다, 기존의 방식을 고집해서 상당히 비효율적으로 일하는 경우가 많다. 하지만 일을 잘하는, 말하자면 생산성이 좋은 소프트웨어 개발조직은 자신이 만들어 쓰는 도구를 늘 최고의 효율을 유지하도록 노력한다.

이런 도구를 잘 사용하려면 몇 가지 규칙이 있는데, 이와 관련된 경험 법칙 몇 가지를 소개하겠다. 우선 같을 일을 두 번 한다면, 그 두 번째는 반드시 도구를 사용하여 자동화하는 게 좋다. 내 경험상 두 번 하게 되는 일은 늘 발생할 가능성이 높은 일이다. 처음엔 도구를 쓰거나 적절한 도구가 없다면 간단한 스크립트를 짜 놓으면 쉽게 할 수 있음에도, 그 일을 또 할 가능성이 없다는 생각으로 삽질을 할 때가 많다. 하지만 그런 생각으로 첫 번째 삽질을 넘기더라도, 두 번째 삽질을 하게 된다면, 그때 삽질을 자동화해야 한다. 그렇지 않다면 도구를 만들어서 쉽게 할 일을 두고두고 반복하게 된다.

절대로 바퀴를 다시 만들어선 안 된다. 예전에 간단한 데이터베이스를 만들어서 처리한다고 시작한 일이 있었다. 처음엔 스크래치에서 시작해서 쉽게 끝날 일이라고 생각해, 데이터베이스르 쓰지 않았다. 결국 이 일은 어떻게 됐을까? 나중에 본말이 전도되어, db를 만드는 목적은 사라지고 db 만들기에 집중했다. 사실 개발자는 개발을 잘하기 때문에, 왠만해서 스스로 만들고 싶어 한다. 하지만 내가 하는 고민은 이미 누군가 해 놓은 경우가 많다. 따라서 개발의 유혹이 들더라도 검색 한 번과 설치 한 번은 바퀴를 다시 발명하는 삽질을 줄여 줄 것이다. 이런 도구를 잘 연결해서 사용하는 것도 상당히 의미 있기 때문에, 청테이프( duct tape) 역할을 하는 파이선과 같은 스크립트 언어 하나는 배워두는 게 참 좋다.

도구를 만들어서 자동화를 하다 보면 도구의 매력에 빠지는 경우가 있다. 이때도 꼬리가 개를 흔드는 경우가 생기는데, 바로 부분 최적화의 오류에 빠지는 경우다. 전체 개발 공정에서 자신이 만든 도구를 아무리 최적화해서 개발한다고 해도, 핵심 경로(critical path)상의 프로세스를 개선하지 않는다면 전체 공정 시간은 줄어들지 않는다. 따라서 자신이 만든 도구나 스크립트에 사랑에 빠져서 전체를 놓치는 실수를 저질러선 안 된다.

잘하는 것을 더 잘하는 건 효율성이다. 하지만 잘하는 건 못하더라도 원하는 바를 달성하는 건 효과성이다. 피처폰의 소프트웨어를 만드는 과정을 극단적으로 효율화해서 자동화하였다고 하더라도, 스마트폰이 나와서 시장을 빼앗아 가버리면, 아무런 의미가 없어진다. 따라서 도구에 집착해서 너무 효율화해선 안 된다. 이 부분은 개발영역이 아닐 수 있지만, 효율성과 효과성에서 균형감각을 찾는 건 개발자도 중요하다.

이상에서 말한 게 도구를 사용한 효율성을 높이는 방안의 전부는 아니겠지만, 이 정도를 염두에 두고 자동화한다면 많은 효과를 볼 수 있지 않을까 한다.

글 : 신승환
출처 : http://goo.gl/slG19S

%d bloggers like this: