Tweet |
one eighty five: The Platform of Surrender by Anna Gay |
저에게 아마 이 세상에서 제일 재미있는 직업이 무엇이냐고 묻는다면 아마도 개발자라고 할 것 같습니다. 두 번째로 재미있는 직업이 무엇이냐고 하면 시스템 엔지니어라고 할 것 같고, 세 번째 마지막으로 재미있는 직업이 무엇이냐고 하면 컨설팅이라고 말하게 될 것 같습니다. (그리 특별한 이유가 있는 것이 아니고 앞서 말한 순서대로 제 경력이 만들어졌기 때문입니다. ^^)
제가 컴퓨터 언어를 배우게 된 것은 아마 꽤 오래 전 COBOL이 최초였던 것 같습니다. 그 당시에 애플(Apple)이라고 불리던 PC는 저에게는 굉장히 고가의 장비여서 살 수 없었고, 그 다음 게임기로 유명했던 MSX 등도 친구 집에서 간혹 사용해 봤을 뿐 가질 수 없는 기계였습니다. (그래서 간혹 블로그에서 사람들이 옛날 추억 삼아 애플이나 MSX에 대한 글을 읽었을 때마다 옛 생각이 나서 마음이 좀 아픕니다. ㅠㅠ)
하지만, 아주 우연한 기회에 당시 기업에서 많이 사용하고 있던 COBOL을 배우게 되었습니다. (COBOL이 꽤 오래된 언어 같지만, 아직도 일부 금융권에서는 파스칼의 전신인 PL-1과 COBOL를 사용하고 있습니다. ^^) 그래서, 그 당시에 최고의 장비라고 할 수 있는 메인프레임을 처음 사용해 볼 기회를 가지게 되었습니다. 메인프레임은 지금도 그렇지만 그 당시에도 매우 비싼 장비여서 단말기를 아무나 함부로 사용할 수 없었고 극소수의 제한된 사람만 사용 가능한 장비였습니다.
덕분에 COBOL를 배우면서 메인프레임에서 프로그래밍하는 방식을 조금씩 배우게 되었는데, 그 당시 제가 하던 코딩은 지금처럼 PC의 통합환경에서 코딩을 하던 것과는 많이 상이하다고 할 수 있습니다. 앞서 언급한 바와 같이 당시에는 전산장비가 매우 고가였기 때문에 단말기에서 코딩을 하는 방식이 아닌 종이 위에 코딩을 하는 방식으로 프로그래밍이 이루어졌습니다. 덕분에 프로그래밍을 단말기와 키보드가 아닌 연필과 지우개로 배우게 되었습니다.
지금 생각해보면 말도 안 되는 이야기처럼 들리지만 그 때는 종이 위에 코딩을 해서 키펀칭을 하는 분들께 드리면 해당 코딩라인 수만큼 결과물로 펀칭카드를 받았고, 펀칭카드를 입력장비에 올려놓고 리더기를 통해서 프로그램을 처리했습니다. 혹시라도 코딩이 잘못되는 경우가 발생하기라도 하면 위와 같은 과정을 반복해야 했는데, 키펀칭도 접수순서가 있는 관계로 다시 하려면 상당한 시간을 기다려야 해서 종이 위에 코딩을 할 때 문법적인 오류뿐만 아니라 머리 속으로 디버깅을 해서 문제점을 찾아야 했습니다. (당시에 저를 가르쳐주셨던 선생님께서는 머리로 디버깅을 아주 능숙하게 하셨는데, 지금 생각해 봐도 대단한 능력이셨던 것 같습니다.)
이렇게 상당히 원시적으로 힘들게 코딩을 해우기는 했지만, 그래도 종이 위에 코딩을 하면서 배운 것도 많았습니다. 생각하시기에 따라서는 종이 위에 코딩을 하는 것을 우습게 생각하실 수도 있겠지만, 종이로 코딩을 하려면 일단 구문에 대해서 정확하게 알아야 하고, 알고리즘에 대해 고민을 하고 코딩을 시작해야 하기 때문에 논리적으로 사고를 하는데 매우 도움이 됩니다. 적절한 알고리즘에 대해 고민을 하지 않고 프로그래밍을 선행할 경우 중간에 혼동이 생겨서 다시 처음부터 작업을 해야 하는데, 이 작업을 연필과 종이로 재작성 하려면 엄청난 시간과 노력이 수반됩니다.
아주 당연한 이야기지만 연필로 코딩을 하다가 수정을 하게 보면, 종종 중간의 코딩을 지우거나 추가를 해야 했는데, 이런 경우 공간이 모자라는 경우도 많아서 추가되는 부분이 많은 경우에는 코딩을 별도의 용지에 작성해서 기존의 코딩 부분에 붙여야만 하는 경우도 많았습니다. 더욱이 너무 많이 지우개를 사용하는 경우에는 용지가 찢어져 버려서 테이프로 코딩용지의 뒷부분을 붙여야 했던 일도 다반사로 일어나서 신중하게 코딩을 해야 했던 것 같습니다.
이런 문제들을 몇 번 겪고 나면 다른 사람이 시키지 않아도 함수(Function)나 프로시져(Procedure)만을 메인 부분에 기술하고, 해당 함수나 프로시져는 다른 종이에 기록하는 방법을 사용하게 되는데, 이렇게 개발하면서 왜 함수와 프로시져가 분리되어서 코딩이 되어야 하는지를 뼈절이게 배웠습니다. 다 아시다시피 이런 방식으로 프로그래밍을 할 경우 코드의 가독성이 높아지게 되고 논리구성도 체계적으로 가능하게 되는데, 이런 연유로 지금도 각종 프로그래밍 서적에서 위와 같은 방식으로 프로그래밍을 하라고 프로그래밍을 처음 배우시는 분들에게 가르치는데, 아무래도 제 생각엔 그러한 연유에는 종이로 코딩을 하던 역사가 반영된 결과가 아닐까 하는 생각을 해 봅니다.
아무튼 이런 제 프로그래머 인생 중 가장 최고의 정점은 아마도 지금의 회사에 들어와서 패키지를 만들 때였던 것 같습니다. Visual C++를 가지고 만든 패키지였는데, 설계, 개발은 물론이고 인스톨실드(InstallShield )를 가지고 패키지까지 다 해야 했던 고난의 작품이었습니다. 게다가 나중에는 사용자 설명서, 제품 설치 매뉴얼까지 다 만들어야 해서 정말이지 꽤나 힘들었던 패키지 개발이 아니었나 하는 생각이 듭니다. 하지만, 다른 개발자분들도 마찬가지이겠지만 패키지를 개발하다 보면 새벽부터 밤늦게까지 야근을 해야 하는 경우도 많고 그 당시에는 무척이나 힘들지만, 나중에 완성된 작품을 보면 뭐라 할까 남들은 모르는 희열감을 느낄 수 있었던 때였던 것 같습니다. (아무래도 이런 희열감 때문에 프로그래머라는 직업에 많은 분들이 뛰어드는지도 모르겠습니다.) 더욱이 패키지를 개발한 당시에는 회사의 10대 패키지 안에 들어 당당하게 홈페이지에 게시가 될 정도였으니 개발자로의 자부심도 꽤 괜찮았던 것 같습니다.
하지만, 제가 만든 패키지가 여러 가지 이유로 외산 패키지에 밀리면서 제품 개발이 중단되었고, 전 갑자기 개발자에서 시스템 엔지니어(System Engineer)로 업을 바꾸게 되었습니다. 아마도 이 때가 제 인생에서 제가 프로그래머로써 계속 살아가야 하는지에 대한 고민을 가장 많이 했던 시기였던 것 같은데, 어찌됐던 간에 자의 반 타의 반으로 인해 하루아침에 프로그래머에서 시스템 엔지니어(System Engineer)로 전업을 하게 되었습니다.
SE를 할 때도 개발자와 마찬가지로 밤을 새는 경우도 많아서 업무적으로도 매우 힘든 시기였기는 했지만, 업무를 수행하면서 시스템 운영에 대한 기본기를 배울 수 있었고 또한 시스템 및 DB 튜닝을 배울 수 있는 기회를 얻어서 그리 나쁘지만은 않았던 것 같습니다. SE 일 이후로 택한 업무가 지금 하고 있는 컨설팅인데, 이제는 더 이상 기계를 만질 일도 없고 프로그래밍을 할 기회도 없어진 것 같습니다. 그냥 누군가 말했듯이 백지 위에 글자면 족하다고나 할까요? 어찌 생각하면 프로그래머랑 전혀 상관이 없는 삶이고, 제가 그 옛날 프로그래머에 입문을 하면서 꿈꿔왔고 바라던 삶은 아닌 것 같지만, 그래도 또 다른 인생을 사는 것이 새로운 활력소를 줄 수 있어서 재미있는 것 같습니다.
컨설팅을 하면서 한 가지 재미있는 사실은 그 오래 전에 배웠던 종이 코딩이 업무를 하는데 있어 도움이 된다는 것입니다. 사용하는 언어가 컴퓨터 언어에서 사람의 언어로 바뀌었지만, 컨설팅도 프로그래밍과 마찬가지로 항상 논리와 흐름을 먼저 생각해야만 좋은 프로그램(보고서)를 만들 수 있다고나 할까요? 아무튼 제 인생이 앞으로 어떻게 전개되어 어떤 모습으로 다가올 지 모르겠지만, 이전의 삶을 볼 때 앞으로도 그리 평탄하게 가지는 않을 듯 싶습니다.
그래도 오늘 문득 그 옛날 담배연기 자욱했던 방에서 사람들이 두드리던 정겹던 키보드 소리가 많이 그리운 것을 보면 프로그래머에 대한 기억은 떨쳐버리지는 못하는 것 같습니다.
추신: 그냥 밤에 갑자기 생각이 나서 쓴 글인데 아침에 일어나서 다시 읽어보니 신세를 한탄하는 것 같기도 하고, 오래된 이야기들을 주절주절이 떠드는 것 같아 갑자기 늙었다는 생각도 듭니다. ^^
'컨설팅이야기' 카테고리의 다른 글
네이버와 네트워크 효과(Network Effect) (4) | 2007.05.13 |
---|---|
네트워크 효과(Network Effect) 이야기 (2) | 2007.05.13 |
IT Doesn't Matter - IT는 더이상은 중요하지 않다. (9) | 2007.05.09 |
피플웨어(Peopleware)와 생산성 - 한국과 미국의 IT기업 근무환경 비교하기 (12) | 2007.05.08 |
성과보상 이야기 - 보상은 항상 돈을 의미하는 것은 아니다. (4) | 2007.05.07 |