본문 바로가기
Column/IT

프로그램 제작에서의 기술장벽

by 작은별하나 2011. 9. 19.
반응형

세상에는 많은 프로그래머가 있다.
과연 프로그래머에게 있어서 프로그램을 작성하는 기술은 어떻게 달라질까?

이것에 대한 해답을 찾기 위해서 하나의 예제를 들어볼까 한다.

C 언어에서 for 루프를 이용하여 1부터 100까지 모두 다 더하는 프로그램을 짜보도록 한다.

#include <stdio.h>

void main()
{
  int i;
  int sum = 0;
  for( i = 1 ; i <= 100 ; i++ )
    sum += i;

  printf("Sum from 1 to 100 is %d.\n", sum);
}

 

이렇게 간단한 프로그램으로 작성할 수 있고, 프로그래머라고 한다면, 이정도는 모두 짤 것이다.

그러면 1부터 1000까지의 합이라면 어떨까?

이것 역시 똑같은 기술수준으로 작성할 수 있다. 단순하게 위의 소스에서 100을 1000으로 바꿈으로 가능하다.

그러나..

1부터 100,000까지의 합이라면?

이것은 같은 기술수준으로 풀 수 있는 문제가 아니다. 왜냐하면 int의 범위가 10억단위인데 비해서 10만까지의 합은 50억 단위이기 때문이다.

물론 int64, long long 라는 변수타입을 사용할 수 있다고 반문할 수 있겠지만.. int64라는 변수타입은 이 문제에서 중요한 이슈가 아니다.

결국 int 형을 이용해서는 위의 기술 수준을 가지고 프로그램할 수가 없다.

바로 이런 곳에서 프로그램의 기술 장벽이 발생한다.

이러한 기술 장벽은 숱하게 많이 발생한다. 프로그램 설계, 알고리즘의 개발, 프로그램 노하우 등에 의해서 기술 장벽은 엄청나게 많이 존재한다.

프로그래머를 뽑을 때, 늘 이러한 기술장벽을 놓고 고민한다. 과연 이 사람의 프로그램 실력은 어느정도까지 기술장벽을 통과할 수 있는지에 대해 알아볼려고 노력한다.

조엘온소프트웨어는 이것에 대해서 이야기를 한다. 프로그래머 면접을 볼 때 어떤것을 질문할 것인지에 대해서 이야기를 끌어간다.

나의 경우에도 비슷하게 끌어간다.

첫번째 질문은 면접자를 안심시킬 수 있는, 누구나 대답할 수 있는 질문을 준다.

두번째 질문은 기술적인 면접을 본다. 이력서상에서 판단할 수 있는 기술 수준과 접목한다.

세번째 질문은 답이 없는 질문을 한다. 그 사람의 상상력을 테스트해본다.

상상력이 없는 프로그래머는 발전이 없다. 답이 없는 것에 대한 해답을 찾을 수 있는.. 또는 적어도 접근하는 방법을 생각해볼 수 있어야 한다고 본다.

이번에 면접을 본 서버 프로그래머가, 온라인 게임 서버를 3개월만에 짤 수 있다고 한다.

그런 이야기를 들으면 겁이 덜컥 난다. 3개월이라는 짧은 시간에 서버를 짤 수 있다면, 상당히 매력적이다. 그러나 과연 어느정도의 완성도를 말하는 것인가?라고 질문할 수밖에 없다.

내 경우에는 프로그래머의 등급을 특A, A, B, C 로 나눈다. 특A는 0.1%의 프로그래머, A는 10%, B는 30%로 생각한다.

직접 면접을 보면, 그 사람의 등급을 어느정도로는 나눌 수 있다고 자부하는 편이지만, 나 역시 프로그램의 모든 부분을 다 알고 있는 것은 아니기 때문에 결국 그 사람의 해결 능력을 중시한다. 그렇게 해서 아주 좋은 프로그래머을 뽑은 경우가 있었다. 실제 프로그램 개발 경력이 전무했고, 프로그램에 대해서 아는 바가 적었던 사람이 있었다. 그 사람을 뽑았고, 사실 그 사람은 A급 수준이라고 판단했고, 그 판단은 적중했다.

728x90

댓글