1/12/2010

프로그래머는 먹이 사슬의 끝에 있다

Code Complete 2 를 읽다가 재미 있는 글 발견:

"Programmers are at the end of the software food chain. The architect consumes the requirements; the designer consumes the architecture; and the coder consumes the design."

프로그래머는 소프트웨어 먹이사슬의 끝에 있다. 아키텍트는 요구 사항을 먹고 살고, 디자이너는 아키텍쳐를 먹고 살고, 코더는 디자인을 먹고 산다.

먹는다라는 또는 소비한다라는 말을 써서 좀 헷갈리겠지만. 결국은 나쁜 음식을 먹은 애를 잡아 먹으면 나도 망가지는 것 처럼. 처음의 요구 사항이 제대로 되지 않은 상한 음식이면 아키텍쳐부터, 디자인부터 망가지고 결국은 코더도 힘든 삶을 살고 프로젝트가 엉망이 되어 버린다라는 말씀이다.

그럼 이 비유를 현실을 돌아 보는 거울로 사용해 보자.

예를 들어 노트북은 악성 코드 감염에 의해서 도청 장치로 악용 될 수 있다라는 사실이 있다고 치자. 그런데 이 사실을 한국 정부에서 도청을 시도할 수 있는 소프트웨어를 차단하라라는 잘못된 요구 사항으로 만들어 버리고 안티 바이러스를 다루는 보안 업체들에게 전달한다면 아키텍쳐와 디자인, 그리고 코딩까지 모두 상한 것이 되어 버릴 수 밖에 없다라는 것이다.

이 경우 건전한 요구 사항은 애초에 이러한 형태의 악성 코드가 전파 될 경우 최대한 빠른 샘플 수집과 시그너쳐 등록, 배포를 통해서 해당 악성코드의 확산을 차단하라라는 요구 사항을 하는 것이 올바르다고 본다. 현실적으로 가능한 것과 불가능한 것, 전체 인프라를 왜곡시키는 것과 발전 시키는 것의 경계를 잘 구분할 필요가 있다.

사실 불필요한 데이타가 수집되어 외부로 누출 되는 것을 막는 솔루션들은 따로 존재하고 있으며, 그러한 솔루션을 만드는 업체에 해당 요구 사항을 전달해야 할 것이며, 해당 솔루션들은 각자의 제약 사항과 단점들, 그리고 사용성의 문제들이 존재할 것이다. 또한 이러한 제품에 대해서 당연히 올바른 댓가를 지불하고 보안을 걱정하는 각 기업에서 구매해야 할 것이다. 안티 바이러스 제품 하나 사고 나서 한 타겟에 특정해서 존재할 수 있는 위협까지 다 막아 내라라고 한다면 너무 많은 것을 바라는 것일 수도 있다.

또다른 예를 들어 스마트폰에서의 인터넷 뱅킹에 대해서 기계적으로 키보드 보안과 안티 바이러스 제품을 강요한다면 그것 또한 억지 요구 사항이 될 것이고, 건전한 보안 산업 자체의 발전을 가로 막는다고 본다.

건전한 요구 사항은 건전한 코드와 건전한 제품을 낳는다. 과연 한국이라는 나라가 건강한 코드가 살 수 있는 나라인지 다시 생각해 봐야 할 것이다.

댓글 없음:

댓글 쓰기