페이지

2006년 4월 23일 일요일

도움이 안되는 개발자

low_programmers.png
보통 여러 사람이 팀을 이루어 S/W개발을 진행합니다. 각자의 개발 능력도 중요하지만 팀웍도 중요합니다. 그런데 몇몇 구성원은 팀의 생산성에 도움이 안되는 경우가 있습니다. 개발 능력이나 기본 지식이 약할 수도 있겠지만 주먹구구식으로 S/W개발을 진행했던 습관이 문제입니다.

이들은 보통 개발자의 10%정도의 비율을 차지하는데[1], 초급 개발자 뿐만 아니라 오랜 경험을 가진 프로 개발자도 이런 타입에 속할 수 있습니다.

그들의 문제는 다음과 같습니다.

1. 코딩 스탠다드나 디자인 표준을 지키지 않습니다.
2. 다른 사람이 작업한 결과와 통합하기전에 버그를 다 수정하지 않습니다.
3. 자신의 일에 관해 예측을 잘 못합니다. 왜냐하면 사실 언제 끝날지 잘 모르기 때문이죠.[1]

S/W는 여러 연관성 있는 부분들이 모여서 하나의 시스템을 이루고 누구에게 자신의 기능을 제공하게 됩니다. 그 중 일부분에 문제가 생긴다면 S/W는 총체적인 문제를 일으킬 수도 있습니다. 그렇기 때문에 작은 문제로 프로젝트는 지연될 수 있으면, 완료되었다고 할지라도 품질에 문제가 있기도 합니다. 하지만 무엇보다도 팀웍을 깨뜨리고 향후 프로젝트에도 나쁜 영향을 끼칩니다.

초급 개발자이고 똑똑하다면 우리는 이것을 시행착오라고 생각할 수 있겠지만 어느 정도 경험을 쌓은 프로 개발자라면 그 문제는 심각합니다. 그래서 개발자를 뽑을 때 신중해야 무척 합니다. 관리자는 같이 일하는 개발자에게도 의견을 구하고 이력서만 평가하는 것이 아니라 기술면접으로 기본 기술 역량을 파악해야 합니다.

그래서 어떤 업체에서 개발자를 뽑을 때 간단한 시험을 본다고 합니다. 전산학의 일반적인 내용들인데, 자료구조나 데이터베이스, 운영체제와 같은 과목에서 기본적인 것들을 시험 문제로 낸다고 합니다.

다음 문제는 Joel on Software[2]라는 책에 발췌한 시험 문제입니다.

1. Reverse a sting in place
2. Reverse a linked list
3. Count all the bits that are on in a byte
4. Binary Search
5. Find the longest run in a string
6. atoi
7. itoa(great, because they have to use a stack or strrev)

종이에 바로 코딩을 해야하며 10줄 이내로 간단하게 구현될 수 있어야 합니다.

Joel on Software를 보면 이러한 시험은 단순히 코딩 능력 뿐만 아니라 코딩전에 얼마나 계획을 세우는지 확인도 가능하며 변수 이름은 어떻게 짓는지 등 많은 부분을 평가할 수 있다고 합니다.

여러분은 어떤 개발자인가요?

참고문헌
[1] Steve McConnell, Professional Software Development, 2004, p137-138
[2] Joel Spolsky, Joel on Software, 2004, p162

댓글 1개:

  1. 자료구조나 알고리즘 운영체제 디비등에대한 기초 소양은 개발자가 갖추어야할 필수적인 것들이지만,
    그것들 외에도 결코 등한시할 수 없는게 커뮤니케이션 능력이라고 봅니다
    외부와 원할하게 소통하지 못하는 개발자는 팀전체의 생산성을 저하하는데 크게 기여하게 되지요.
    뿐만아니라, 성실성 정직성 인간성 같은 일반적인 성격들도 함께 일하려면 아니 볼 수가 없는데...
    이것저것 따지다 보면, 정말 맘에 쏙 드는 사람 찾기란 하늘에 별따기만큼 어렵기 마련인것 같습니다'''

    답글삭제