# Make Program

프로그램을 개발한다는 것은 언제 부터인가 협업이라는 개념에 대해서 생각하지 않을수 없었다. 단순히 한 개인이 하나의 프로그램을 개발하는 시대가 저물면서, 아니 어쩌면 너무나 큰 시스템들을, 너무나 빠르게 요구하는 시대일 지도 모른다.

여러 사람들과 프로그램/소프트웨어를 개발하면서 가장 중요한 것은 커뮤니케이션(Communication)이다. 단순히 상대방과 말을 하고 소통하는 것에서 부터 이제는 그것을 방법론이라고 부르기도 한다. 그 만큼 커뮤니케이션을 협업으로 개발해야 하는 소프트웨어의 성패를 갈라 놓기도 한다.

협업의 개념이라는 것은 어찌보면 한 개인, 한 프로그래머가 담당해야 하는 업무의 범위 자체가 조금은 작아 졌다고 볼수가 있다. 큰 소프트웨어를 개발할 때에는 분석, 설계, 코딩의 각 단계에 따른 사람이 다르고, 산출물이 다르다. 때문에 자기는 자기가 맡은 부분에 대해서 열심히 하면 된다.

어떻게 보면 이런 부분이 현재의 문제. 소프트웨어를 만드는 사람이 소프트웨어를 만드는 부품으로 전락해 버린것일지도 모른다는 생각이 든다. 그 사람이 안 만들면 다른 사람이 만들면 될 정도로. 인력수급이 자연스러워 졌고, 너가 아니면 다른 누구든지 대체가 된다는 식의 인식역시 팽배해져 있다.

조금 과거로 돌아가보자. M이라는 프로그램은 다들 아시다시피 컴퓨터를 사용하기 어려워하는 여자친구를 위해서 누군가가 혼자서 만들었던 프로그램이다. 해당 소프트웨어는 소위 대박을 쳤고, 많은 돈을 벌었는지 아닌지는 모르겠지만, M이라는 프로그램은 명작 그 자체였다. 
혼자 만드는 소프트웨어. 지금은 상상도 할수 없는 먼 과거의 애기일지도 모르지만, 개발자는 처음에 혼자서 소프트웨어를 개발하는 시기가 있다. 대학생이든, 고등학생이든 말이다. 이때의 책임감, 그리고 열정을 이루다 말할수 없다. 왜냐하면, 그 소프트웨어가 곧 나이고, 내가 만든 소프트웨어가 곧 나를 보여주기 때문이다. 

협업속의 하나의 모듈은 어쩌면 무리없이, 버그없이 잘 돌아가기만 하는 하나의 요소이기만 하는 지도 모른다. 하지만 그런 모듈은 곧 자신이라는 생각을 가져야 한다. 하나의 소프트웨어를 기획하고 설계하고 디자인하고 코딩했던 예전을 추억하면 열정을 마음속에 새겨넣기에 현실은 너무 가혹하지만, 지금의 프로그래머들에게는 그러한 열정이 필요한 시점이라는 생각이 든다. 

그저 잘 돌아가기만 하는 소프트웨어 모듈을 만들면 스스로 역시 그저 잘 돌아가는 소프트웨어를 만든 소프트웨어 개발자이자 프로그래머일 뿐이다. 그런 모듈은 언제든 새로운 더 성능이 좋은 모듈로 대체될수 있듯이, 사람역시 마찬가지다. 


4GTj8_U–FA$
나는 새로운 소프트웨어를 만들고 있다. 분석, 설계, 디자인, 코딩까지 모든 부분을 내가 스스로 담당하고 문서도 만든다. 물론 시행착오도 있다. 처음 계획했던 디자인부분과 코딩시에 수정되는 경우도 있고, 셀 수도 없는 문제가 사실 많다. 그만큼 어렵기도 하다. 그래서 더 도전하고 싶다. 
새로운 소프트웨어를 만드는 가장 큰 원칙은 가장 쓸모있게 만들자는 것이다. 그래서 좀더 이쁘게 그리고 좀더 클라이언트에게 편리하게 만든다. 클라이언트에게 인계시 돈은 받지 않지만, 상용 컴포넌트를 사서 개발하고 있다. 혹자는 미친짓이라고 하지만, 나에게는 프로그래머로써 열정과 책임감을 다지고 실력을 스스로 검증해 볼수 있는 좋은 기회라는 생각이 든다.