본문 바로가기

기타/객체지향 토막글

프로그래머, 장인 또는 고된 현실에 찌든 노동자, 수필 객체지향

우리가 프로그래머로 일하는 이유는 두가지이다. 프로그래밍이 좋아서 프로그래머가 되었다. 어떻게든 먹고 살려다보니 밥벌이 삼아 프로그래머가 되었다. 전자는 순수한 열정이 느껴지고, 후자는 치열한 생존 전쟁의 이미지가 풍긴다.

어렸을 때 빌게이츠와 애플의 스티브잡스등의 IT영웅들을 잡지에서 보던 나는, 세상의 프로그래머는 단지 프로그래밍이 좋아서 프로그래머가 되었을 것이라고, 프로그래머는 뭔가 순수하고 특별한 세계를 가진 사람들일 것이라고 기대했다.

나는 존재하지 않는 이상계에 대한 꿈을 꾸었다. 우리나라는 프로그래밍이 좋아서 프로그래머가 되는 순수한 열정을 지켜주진 않는다. 우리나라 프로그래머는 밤12시 넘어서 일하고, 새벽에도 일하고, 주말에도 일하며, 명절에도 일하고, 결혼기념일에도 일하며, 심지어는 장인어른 칠순잔치에도 야근하는 모습을 보았다. 마치 전쟁터의 포화로 아름다운 도시가 쑥대밭이 되듯이, 우리나라의 개발 환경은 프로그래밍이 좋아서 프로그래머로 일하는 사람들의 열정을 파괴한다.

그래서 우리나라 대부분의 프로그래머는 먹고 살려는 밥벌이로 프로그래머를 하고, 프로그래밍이 좋아서 프로그래머가 되었어도 결국 먹고 살려는 밥벌이의 목적으로만 프로그래머를 할 것이었다.


밥벌이의 목적으로만 프로그래밍을 할때의 문제점은 장인 정신이 사라진다는 것에 있다. 장인 정신이 깃든 프로그램은 내가 만든 프로그램에 열과 성에다가 혼까지 집어넣어 정성을 다한 프로그램이다. 마치 장인의 자부심이 깃든 도자기 처럼 예술 작품을 만들기 위해 혼신의 노력을 기울인다. 

하지만 밥벌이의 목적으로만 프로그래밍을 할 경우는, 월급과 비례하고 업무량에 반비례하여 개발자의 노력이 작동한다. 대부분의 개발자는 박봉에 비해 엄청난 업무량에 시달린다. 그래서 제대로 프로그램을 만들 생각보다는, 그저 갑의 감시를 피할 정도의 테스트 통과용 코딩에 집중한다.


그렇다면 우리나라 IT환경과는 상관없이 장인의 정신을 지니게 된 프로그래머가 자신의 프로그램으로 추구하는 가치는 무엇일까 생각해보았다. 먼저 내가 만든 프로그램을 고객이 만족스럽게 사용 하는 것이 중요한 가치일 것이다.

잘 만든 프로그램은 고객이 동작시킬때 만족스러워 한다. 그 이후에 고객이 계속 프로그램을 다룰때도 계속 만족스러워 한다. 고객의 업그레이드 요청이 쉽게 해결될때 만족한다. 이렇게 고객의 가치를 최우선으로 생각한 프로그램이 잘 만든 프로그램이다.

고객을 위한 프로그램은 밖을 지향한다. 프로그래머를 위한 프로그램은 안을 지향한다. 프로그래머는 자신의 프로그램이 유연하고 확장하기 쉽고 유지보수 하기 편할때 만족스러워 한다. 프로그래머는 자신과 미래에 자신의 프로그램을 다룰 다른 프로그래머를 위해, 자신의 프로그램을 유연하고 확장하기 쉽고 유지보수 하기 편하게 만들어야할 사명감을 가져야 한다. 장인 정신이 깃든 프로그래머는 이런 사명감을 가진 프로그래머이다.


그래서 정리하면 고객과 프로그래머가 골고루 만족할 수 있는 프로그램이 잘 만든 프로그램이며, 장인정신이 깃든 프로그램이다. 이 명제를 지키지 못한 프로그램은 대부분 척박한 개발 환경에서 이루어지는 테스트 통과용이며 밥벌이용 프로그램이다.

그나마 척박한 개발 환경에서도, 고객과 프로그래머를 모두 생각한 프로그램을 만들기 위해 노력하는 장인 프로그래머들을 위해, 객체지향의 다양한 디자인 원칙이 도와주고 있다. 우리는 '객체지향 디자인 원칙'같이, 프로그래밍 장인이 되기 위한 기술을 부단히 익혀야 할 것이다.