2009년 10월 16일 금요일

개발자 부품화 vs. 만능 개발자


개발 프로세스를 너무 따지만 개발자가 부품화 되고 창의성이 줄어든다고 합니다.

또 분석, 설계, 구현, 테스트를 나눠서 하게 되면 부품화되고 비인간적이라고 하기도 합니다.

그래서 개발자가 이것 저것 다하는 만능의 역할을 수행하게 합니다.

투수는 공만 던지고, 골키퍼는 골만 막는 것은 부품화일까요?

이렇게 전문화되지 않고 모두 만능으로 잘하는 동네 축구를 해서 어떻게 세계적인 소프트웨어와 경쟁할 수 있을까? 잘 하고 싶어도 동네축구를 계속 하는 이유는 제대로 된 방법을 경험해 본적이 없어서 그렇습니다. 개발자가 한명인 회사나 개발자가 50명인 회사가 개발하는 방법은 크게 다르지 않습니다. 개발자가 개발 전반의 모든 일을 다 알아서 하고 프로젝트는 개발자의 역량과 의지에 달려있습니다. 

동네 축구를 벗어나기 위해서는 소프트웨어를 개발하는 전체 프로세스를 이해해야 합니다. 이에 따라서 프로세스를 체계화 하고 각 역할별 전문화된 조직을 갖춰나가고 설령 인원이 매우 적어서 한명의 개발자가 여러가지 일을 수행하더라도 업무의 구분이 필요합니다. 나중에 조직이 커지면 일을 떼어 줄 수 있어야 합니다.

만능 개발자는 자칫하면 정작 개발자로서의 가치 있는 성장에 지장을 초래할 수 있습니다. 

댓글 8개:

  1. 결론만 말하자면, 개발자에게 요구되는 항목들은
    갈수록 많아지고, 성인 군자에 슈퍼맨이 되기를 요구하는 것 같아요

    말만 거창한 화이트 칼라 계층이지
    실은 21세기 IT 노예 그 이상도 이하도 아닌거 같다는 생각이 종종들게 되더라구요.

    답글삭제
  2. 구차니님 안녕하세요.
    개발자가 슈퍼맨이 되어서 알아서 다 해주기를 원하는 회사는 회사가 가지고 있는 시스템이 없기 때문입니다. 이런 회사에서는 개발자가 가치가 높은 일보다는 막노동꾼처럼 일하기 쉽습니다. 개발자가 모든 일을 할줄은 알아도 수많은 개발자들이 구분없이 서로 같이 모든일을 다하는 구조는 희망이 없는 구조입니다.

    답글삭제
  3. 축구 이야기가 있어서 적어놓고 가고 싶네요.멀티 플레이어를 생각해보면 그가 수비 포지션을 하고 있으면 대신 공격 포지션으로 다른 사람이 움직이 것이고, 그가 공격 포지션으로 가면 다른 이가 수비 포지션으로 갑니다. 즉 동시에 두 포지션을 뛰는것이 아닙니다. 근데 회사는 착각을 하죠. 멀티 플레이어는 두가지 이상을 동시할 수 있다고..

    답글삭제
  4. 저도 위 글에 동의하면서도 동의하기 힘든 부분이 있습니다. 물론 각각의 영역에 대한 전문화가 필요한 것은 사실입니다. 하지만 전문화의 정도가 어느 정도 선까지 적합한지에 대한 가이드는 없는 것이 사실입니다. 물론 가이드를 만든다는 것이 힘들다는 것은 사실이지만 전문화를 너무 강조할 경우 숲을 보지 못하고 나무를 보는 경우를 종종 봅니다.
    점점 더 많은 개발자가 전문화되고 있어서 자신이 현재 하고 있는 일은 파악할 수 있지만 전체를 볼 수 있는 능력을 가진 개발자가 점점 더 사라지고 있다는 것입니다. 물론 멀티 플레이어를 한다고 해서 해결되는 것은 아니지만 전문화가 너무 강조되다보니 개발자가 한 분야에만 너무 국한된 생각을 한다는 것이 문제점으로 부각되고 있습니다.
    전문화는 하지만 적절한(?) 전문화를 이야기해야 될 때이지 않나 싶습니다. 이 같은 글이 전문화를 반드시 해야 되는 것으로 비쳐질까 생각되어 덧글 남겨봅니다.

    답글삭제
  5. 자바지기님 안녕하세요.
    당연히 개발자는 개발전반의 거의 모든 부분을 다 할 줄 알아야 합니다. 심지어는 테스트까지... 코딩만 할 줄 알고 특정 기술만 알아가지고 소프트웨어 전문가라고 할 수는 없겠죠.
    그렇다고 프로젝트에서 모든 것을 다 할 수는 없는대도 현실은 그렇지 않은 것 같습니다.
    실제로 전문화를 하더라도 개발자의 경험과 실력에 따라서 하는 일은 달라질 것입니다. 누구는 주로 분석을 하고 누구는 쉬운 코딩만 할 수 있습니다.
    프로젝트의 규모에 따라서 말씀하신 것처럼 적절한 전문화가 필요하지요. 좋은 의견 감사합니다.

    답글삭제
  6. 천랑님 안녕하세요.
    좋은 예이네요. ^^ 혼자서 하는 프로젝트라면 멀티플레이어로 일해야 하지만, 개발자만 십수명인데, 다 똑같이 일한다면 효율이 더 떨어지겠죠.

    답글삭제
  7. 개발자가 모든 개발과 관련된 업무를 다 잘한다면 좋겠죠~
    정말 천재적인 사람이 아닌 이상 그건 힘들다고 봅니다. 제가 생각 할때는 기본적으로 개발관련된 부분에 대한 포괄적인 관심이 있어야 한다고 봅니다. 옛날처럼 DOS 에서 C 로 개발할때와 지금은 상황이 많이 다르죠
    또한 새로운 기술이 많이 나오는 분야인데 꼭 자기가 하고 있는 부분만 관심을 둔다면 다른 분야 개발을
    하는 개발자나 다른분야 사람들(시스템엔지니어 , 네크워크관리자, DB관리자)와 대화할 때 문제가 생기죠. 저는 같이 일하는 경력이 얼마 안되는 개발자들에게 항상 이런 얘기를 해줍니다.~ 개발과 관련된 많은 기술들을 포괄적으로 습득하라고 얘기합니다 또한 자기가 관심있는 전문적인 부분의 스킬을 중점적으로 up시키라고요~ 하지만 다른 사람과 차별되는 자신만의 무기(전문분야)이 필요하다고 강조 합니다. 그래야 나이 50에 개발 할 수 있지 않을까요? ^^

    답글삭제
  8. 블랙스톤님 안녕하세요.
    개발자는 기본적으로 개발에 관련된 다양한 분의 지식을 두루 섭렵해야죠. ^^
    이런 지식의 범위와는 별개로 소프트웨어를 개발할 때는 다양한 업무가 필요합니다. 예를 들어서 테스트만 하더라도 전문 테스터에게 일을 나눠주는 것이 더 효율적이지만 주먹구구식 회사는 개발자가 더 테스트를 잘한다고 착각하면서 개발자에게 테스트를 맡깁니다.
    "할줄아는것", "잘하는것", "해야하는것"은 서로 다르죠.
    이러한 의미에서 전문화는 필요하죠.

    답글삭제