Posts Tagged ‘개발’

개발 생산성 향상 - 인력 문제

Saturday, December 15th, 2007

뛰어난 개발자는 평범한 개발자보다 7배에서 28배 정도 생산성이 높다고 한다. 그 어떤 개발 방법론이나 해결책도 훌륭한 인력을 투입하는 것 보다 더 획기적인 생산성의 향상을 가져올 수는 없을 것이다. 그렇다면 뛰어난 개발자에게서 발견되어지는 능력들을 뽑아내서 이를 교육 또는 훈련시킬 수 있다면 그 자체가 우리가 찾고 있는 Silver Bullet이 될 수 있지 않을까?

물론 모든 개발자가 뛰어난 개발자가 될 수는 없을 것이다. 각자의 그릇의 크기도 다르고 잠재된 성향도 다양할 것이다.게다가 Silver Bullet의 후보 중 하나인 ‘Good Designer’는 쉽게 발견 되지 않을 뿐만 아니라 쉽게 ‘Good Designer’로 발전하지도 않는다.

또 하나 중요한 요소는 보통 소프트웨어 개발에 있어서 경력과 능력은 일치하지 않는 경우가 많다는 사실이다. 그렇다면 경력이 많은 개발자가 아닌 능력이 뛰어난 개발자를 찾아야 하고, 사내 개발자 중에서 뛰어난 개발자로 성장할 수 있는 사람을 빨리 찾아서 성장시킬 수 있다면 조직의 역량은 크게 올라갈 것이다.

아직 뛰어난 능력을 보이지 못하고 있는 개발자들에게 에이스 개발자의 능력을 전이시킬 수 있는 가장 좋은 방법은 무엇일까? 예전에는 도제 제도를 통해 장인의 기술을 후세에 전수했지만 지금처럼 빠르고 동적으로 변화하는 조직에서 도제 제도는 도입이 불가능하고 도입한다고 해도 효율적이지도 못할 것이다. 내가 생각하는 가장 현실적이고 효과적인 방법은 애자일 방법론을 통해 자연스럽게 뛰어난 개발자의 DNA를 전파하는 것이다.

  1. Pair Programming : PP는 교육의 목적으로 수행되는 것은 아니다. 하지만 교육의 효과는 매우 탁월하다. 서로의 장점을 쉽게 습득할 수 있고 실시간으로 상대방의 설계, 구현 방식을 보고 배울 수 있다. 또한 자신의 코드가 실시간으로 검토되고 지적당하고 수정될 수 있다.
  2. Test Driven Development : TDD는 단순히 개발보다 테스트를 먼저 하는 것이 아니다. TDD를 통해 코드 자체의 구조가 바뀌고 설계 방식이 변경된다. 특히 실시간 설계 과정이 수반되기 때문에 요구사항에 따른 문제해결 방식과 경험에서 도출된 문제 해석 능력을 배울 수 있다.

한 사람의 뛰어난 개발자는 적게는 2, 3명 몫의 일을 해내고 많은 경우 10명이 함께 해도 해결 못하는 난제를 해결할 수 있다. 이런 능력을 혼자만의 것으로 사용하는 사람도 있겠지만, 오픈소스 등을 통해 공개적으로 많은 사람들에게 공유하는 경우도 있다. 그리고 아마 대부분의 뛰어난 개발자들은 이 능력을 더 많은 사람들에게 알리고 전달하고 싶을 것이다. 거꾸로 이 능력을 자신의 것으로 빠르게 습득하고 싶은 사람도 많을 것이다. 그렇다면 PP, TDD를 비롯한 다양한 애자일 개발 방법론을 도입해 보기를 권하고 싶다. 이를 통해 자연스럽게 조직의 능력을 향상시킬 수 있을 것이다.