1-1-나.프로그래머

프로그래머(Programmer)는 프로그램을 만드는 사람이다. 프로그램이 명령의 집합이므로 이런 프로그램을 만드는 프로그래머는 컴퓨터에게 지시를 내리는 사람이라고 할 수 있다. 프로그래머는 컴퓨터를 움직이고 동작하도록 하므로 단순히 컴퓨터를 사용하는 일반 사용자(User)에 비해 훨씬 더 적극적인 위치에 있다.

컴퓨터는 사람의 말을 직접 알아 듣지 못하며 오로지 이진수(전기의 통함과 끊어짐)만을 인식하므로 컴퓨터에게 명령을 내릴 때는 컴퓨터가 알아들을 수 있는 일정한 형식을 갖춘 명령을 사용해야 한다. 또한 컴퓨터가 계산한 결과도 사람이 바로 이해할 수 없는 형태를 띠기 때문에 사람이 이 결과를 볼 수 있도록 해야 한다. 1+2를 계산하고 싶다면 이 명령을 기계가 이해할 수 있는 형식의 명령으로 바꾸어 전달해야 하며 그 결과도 사람이 알 수 있도록 변환해야 한다. 이런 의미에서 볼 때 프로그래머는 사용자와 컴퓨터 사이를 중계하는 통역자의 역할을 한다고 할 수 있다.

프로그래머가 하는 일이란 문제 해결에 필요한 명령을 골라 컴퓨터가 알아들을 수 있는 형태로 바꾼 후 이 명령들이 순서대로 동작할 수 있도록 조직적으로 배치하는 것이다. 통역자가 통역을 제대로 하기 위해서는 양쪽의 언어를 모두 이해하고 있어야 한다. 프로그래머는 기계와 사람 사이의 통역자이므로 기계를 잘 이해해야 함은 물론이고 사람도 잘 이해하고 있어야 한다.

기계의 언어를 다루어야 하므로 기계의 구조와 동작 방식을 잘 이해하고 기계적으로 사고할 수 있는 능력이 필요함은 당연하다. 또한 최근에는 프로그램이 처리하는 일들이 복잡해져서 사람에 대한 이해도 과거보다 훨씬 더 중요하고 어려워졌다. 예를 들어 은행 전산 프로그램을 작성하려면 프로그래머가 은행 업무에 먼저 통달해야 하며 프렌차이즈, 병원 등의 소프트웨어 개발자도 마찬가지다. 이처럼 개발자가 프로그램이 하는 업무를 먼저 익히는 과정을 업무파악이라고 하는데 업무가 복잡한 경우 전체 개발 일정의 80%를 차지하기도 한다.

과거에는 인간의 영역이었던 일들을 이제는 컴퓨터가 대신하는 경우가 점점 많아지고 있다. 불과 10여년 전만 하더라도 은행업무를 처리하기 위해 은행원들이 원장과 통장에 입출금 내역을 직접 기록하고 관리했었으나 요즘은 컴퓨터가 이런 작업을 대신 하며 은행원들은 컴퓨터만 조작한다. 덕분에 은행은 훨씬 더 복잡한 업무를 처리할 수 있게 되었고 온라인도 가능해졌다. 내가 초등학교에 다닐 때는 통장과 도장을 들고 500원을 맡기면 예쁜 은행 누나가 원장과 통장에 "500원 입금"을 볼펜으로 쓰고 주판으로 합계를 계산해 주었다. 요즘 세대에게 이런 얘기를 하면 정말 그런 시절이 있었느냐고 의심을 한다.

공장 자동화가 일반화되면서 부품을 생산, 조립, 테스트, 포장하는 일들도 컴퓨터가 대신 하고 있다. 컴퓨터 관련 기술이 발전하면 할수록 이런 현상은 더욱 더 가속화되어 컴퓨터가 할 수 있는 일들은 점점 더 많아진다. 컴퓨터가 사람의 일을 대신하게 됨으로써 이제 공장이나 은행에서는 옛날처럼 많은 직원을 채용할 필요가 없어졌다. 대부분의 일은 컴퓨터가 처리하므로 컴퓨터를 관리하고 운영할 수 있는 소수의 직원만 필요하다.

컴퓨터가 더 많은 일을 하기 위해서는 더 많은 소프트웨어가 필요하며 따라서 프로그래머의 수요는 앞으로도 더욱 더 늘어날 것이다. 컴퓨터로 인해 공장에서는 많은 직원을 채용할 필요가 없어졌지만 컴퓨터를 운영하기 위해서 더 많은 프로그래머가 필요해진 것이다. 은행 창구의 직원은 줄어들었지만 본사의 전산실 직원들이 훨씬 더 많이 늘어났다. 결국 컴퓨터가 산업 전반에 도입됨으로써 사람들의 직장을 뺏어간 것이 아니라 사람의 근무 형태를 바꾸어 놓은 것이다.

현대 사회에서 프로그래머는 더 이상 특수한 직업이 아니다. 보통의 일반적인 직업인이되 컴퓨터를 동작시키는 일을 하는 정신 노동자일 뿐이다. 이상으로 프로그램과 프로그래머의 정의를 내려 보았는데 프로그램의 정의에서 볼 수 있듯이 프로그래머에게는 두 가지 능력이 요구된다.

 

문법 : 프로그램을 구성하는 단위가 명령이므로 규칙에 맞게 명령을 정확하게 작성하는 지식이 필요하다. 명령을 올바르게 기술하는 규칙을 문법이라고 한다. 문법은 이 책을 통해 배우게 되며 단순한 약속들의 집합일 뿐이므로 열심히만 하면 누구나 100% 익힐 수 있다.

작문 : 프로그램은 단순한 명령의 나열이 아니라 조직적인 집합이므로 작성한 명령을 논리적으로 배치하는 기술이 필요하다. 일정한 공식이 존재하지 않으며 실제 문제에 따라 적용되는 작문법은 천차 만별로 달라지므로 인간의 창조력이 요구되며 외운다고 해서 쉽게 얻어지는 것이 아니다. 책이나 강사로부터 약간의 도움을 받을 수는 있으나 결국은 스스로 터득하는 방법밖에 없다.

 

두 가지 능력 중에 특히 작문 능력은 단기간게 쉽게 숙달되지 않는 특징이 있다. 그래서 경력에 따라 프로그래머의 급이 매겨지는 것이며 쉽게 얻을 수 없기 때문에 애써 배울 가치가 있는 것이다. 너무 성급하게 결과를 기대하지 말고 꾸준히 노력하도록 하자.