행복한 아빠

사람이 가장 훌륭한 도구다 본문

하고싶은말

사람이 가장 훌륭한 도구다

행복한아빠 2010. 1. 21. 22:12
가끔 후배들에게 이런 질문을 합니다.
프로그래머가 뭐하는 직업이냐
아무런 상황 설명 없이 하는 이런 류의 질문이 사람을 당황하게 하고 짜증나게 합니다. 물론 머뭇머뭇 거리다가 제대로 답하지 않는 경우가 대부분입니다. 꽤 오래 생각해 봐야 할 질문이죠. 특히 자신이 하는 직업일 경우는 더욱 그렇습니다.

프로그래머라는 직업을 가지고 이분야에서 일한지 십수년이 지났네요. 시간이 흐름에 따라 나이도 먹고 직급도 올라가고 거기에 따라 하는 일도 조금씩 달라지게 됩니다.
현재는 이클립스(프로그램 툴)보다 파워포인트가 화면에 떠있는 시간이 더 많아졌지만 나는 아직 "프로그래머"라는 직책을 버리지 않았습니다. 하는 일은 달라졌어도 여태껏 했던 일의 맥은 같다는 걸 알았습니다.
(이미지출처)


코드와의 만남

처음 컴퓨터 프로그램을 만난 것은 중학교 실습 교과서에서 본 FORTRAN 코드였습니다. 기억을 더듬어보면 교과서에 컴퓨터 관련 페이지가 몇 페이지 있었고 천공카드이야기도 있었고 그 당시 최첨단 언어인 FORTRAN으로 짠 이차방정식 예제 코드가 있었던 걸로 기억합니다.
컴퓨터 언어라는게 신기해서 1/3 페이지 정도 되는 몇 줄짜리 포트란 코드를 오려서 읽고 또 읽어 그냥 외워버렸습니다. 아무런 지식이 없었던 때인데도 외워버리니까 이해가 되더군요. 그 정도로 신기해하고 열정적이었죠.
그리고 그 열정은 대학을 가서 파스칼을 독학하고 C를 독학하고 컴퓨터 언어에 깊이 빠졌습니다. 명령어들을 조합하고 엮어서 프로그램이 만들어지는 과정이 너무 재미있었습니다.


객체에 빠지다

군대를 제대하고 세상이 많이 바뀌었습니다. 접근하기 어려웠지만 인터넷이라는게 등장하고 언어쪽에서는 이해할 수 없는 객체라는 놈이 새로운 다크호스로 등장했습니다.
이 때 선배가 건네준 객체지향 관리 기법이라는 책을 읽고 또 한 번 감동~. 이 기술에 또 한 번 빠지게 됩니다. 처음 입사한 회사도 객체지향 기술을 주로 다룬 행운도 따랐습니다.
이 때는 코드를 넘어서 프로그램 내에 존재하는 객체들을 찾아내고 관계를 맺고 구조화하는 일이 주된 관심이 되었습니다. 바로 설계라는 영역에 들어섰습니다.


컴포넌트와의 불편한 관계

지금은 소프트웨어 컴포넌트나 CBD에 대한 이해가 어느 정도 공유된 상태라고 보여집니다. 2000년 들어서기 전 ETRI에서 진행하는 컴포넌트 소프트웨어 프로젝트에 참여한 적이 있습니다. 이 때 회의를 보면 컴포넌트에 대한 정의가 명확하지 않았던 때였던 것 같습니다. 어떤 이는 OS 조차도 컴포넌트로 정의해 버리곤 했는데 모든 게 컴포넌트라면 정의는 쉽지만 우리가 푸는 영역의 해결은 되지 않았습니다.
현재는 소프트웨어 컴포넌트에 대한 어느 정도 공통된 이해가 있고 객체보다는 좀 더 넓은 영역에서 소프트웨어를 정의합니다. 이 때는 주로 소프트웨어 모듈(컴포넌트) 구분과 이들의 명확한 인터페이스 정의에 제 업무 시간을 많이 사용하게 되었습니다.


아키텍처 세계

소프트웨어 컴포넌트 설계 외에 프레임워크 설계를 담당하다가 성능, 가용성 등 시스템 품질이라는 영역을 다루다가 보니 아키텍처라는 영역에 오게 됩니다.
이 때는 주로 전체 시스템에 대한 영역과 이들간의 관계에 집중하게 됩니다. 그 안에는 컴포넌트도 있고, 모듈도 있고 그리고 하위 시스템도 존재하게 됩니다. 시스템이 목표하는 품질에 맞추기 위해 전체적인 소프트웨어 얼개를 어떻게 맞추느냐가 주업무가 됩니다.
아키텍처 일을 하다 보면 프레임워크가 중요한 부분을 차지하게 되는데 이 때 개발자들이 쉽게 사용하고 생산성을 높일 수 있는 프레임워크를 고민하게 됩니다. 그러면서 개발환경에도 관심을 갖게 되고 개발자가 좋은 생산성을 낼 수 있는 여러가지 방법을 고민하게 됩니다.

이 때 개발자가 행복하게 효율적으로 일하는 방법이 중요하다는 것을 깨닫게 되었습니다.


팀워크의 힘을 경험하다

좋은 사람과 좋은 개발 환경과 좋은 기술을 가지고 있으면 이 세계에서 일하는 것이 한결 쉬워집니다. 물론 그 결과물도 훌륭하게 나오겠죠. 그래서 좋은 아키텍처를 계속 고민하고 개발자들이 효율적으로 일할 수 있는 환경(형상관리, CI, 자동화...)에 힘을 쏟는 것이 굉장히 중요합니다. 그리고 가장 중요한 것은 좋은 사람들입니다.

좋은 사람들은 그냥 만들어지는게 아니고 팀워크라는 것을 통해 만들어집니다. 일하는 방법에 대한 공감이 형성되어야 하고 서로 존중하는 문화가 만들어져야 합니다.


모든 것은 사람이 중심이었다

프로그래머라는 직업은 고객이 원하는 문제를 풀어주는 직업이라고 봅니다. 그 방법은 코딩이 될 수도 있고 객체설계, 컴포넌트 설계, 아키텍처 설계가 될 수도 있습니다.
그러나 모든 것은 사람이 하는 일이고 사람이 그 중심에 있습니다. 사람들을 어떤 환경(프레임워크)에서 어떤 일하는 문화(프로세스)에서 일하게 조직하느냐(설계)가 가장 막강한 방법입니다.

고객의 문제를 풀어주는 가장 훌륭한 도구는 컴퓨터 언어나 설계가 아니라 바로 사람입니다.

나는 개발자가 행복하게 일할 수 있는 환경을 설계하는 사람이 되고 싶습니다.


6 Comments
댓글쓰기 폼