본문

669번째 편지 - 소프트웨어 공학 에세이 [맨먼스 미신]에서 배운 인생



저에게 이번 주는 두려움과 설렘이 함께 하는 한 주가 될 것입니다. 저희 회사 HM company가 만든 내부감사 솔루션 <하이에나>를 이번 주 5월 12일부터 14일까지 일산 킨텍스에서 열리는 제20회 세계 보안 엑스포(SECON&eGISEC)에서 일반에게 공개하기 때문입니다.

저는 <하이에나>를 만들면서 수많은 시행착오를 겪었습니다. 처음 하는 일이니 으레 그러려니 하였지만 그 시행착오는 끝도 없이 발생하였고 저를 지치게 만들었습니다. 괜히 착수했다는 후회도 여러 번 하였습니다.

저의 힘들어하는 모습을 본 아들이 책을 한 권 추천해 주었습니다. 컴퓨터 공학을 전공하는 정민이가 추천한 책은 1975년에 출간된 <맨먼스 미신>(The Mythical Man-Month)이라는 책입니다.

그 책의 뒷면에는 이런 글이 쓰여 있었습니다.

"40년의 세월을 견뎌낸 소프트웨어 공학의 고전"

"소프트웨어 개발이 본질적으로 왜 어려운지, 소프트웨어 설계⋅구현에서 왜 개념적 일관성이 중요한지, 사람을 많이 투입했는데도 프로젝트 진행이 더뎌지는 이유가 무엇인지 등 오늘날에도 우리를 괴롭히는 문제에 대한 단서와 해답의 실마리를 제시한다."

이 책은 소프트웨어를 개발하는 회사의 경영자가 알아두어야 할 사항들을 쉬운 말로 설명하고 있었습니다. 저에게 딱 필요한 책이었습니다. 이 책을 읽으며 많은 위로와 용기를 얻었습니다.

이 책을 다 읽고 나니 이 책은 소프트웨어 설계에 관한 책이지만 '제가 개발하려는 소프트웨어'를 '제가 살고 싶은 인생'으로 대체 시켜 읽으면 구체적인 지침이 있는 인생 철학서이기도 하였습니다.

이 책은 프로그래밍이 얼마나 즐거운 일인지 언급합니다.

"프로그래밍은 다섯 가지 즐거움을 선사한다. 1. 무엇인가를 만드는 기쁨, 2. 다른 이에게 쓸모 있는 것을 만드는 기쁨, 3. 복잡한 퍼즐 같은 사물을 만드는 매혹적인 경험, 4. 지속적인 배움의 기쁨, 5. 너무나도 유연하고 다루기 쉬운 표현수단(컴퓨터 언어)으로 작업하는 기쁨"

저는 이 글을 읽고 제가 왜 소프트웨어 개발에 매료되었는지 이제야 알게 되었습니다. 다섯 가지 즐거움은 모두 제가 좋아하는 것들이었습니다. 여러분, 이 글에서 '프로그래밍'을 '인생'으로 바꾸어 읽어 보십시오. 스스로 느껴지는 것이 있을 것입니다.

이 책은 <개념적 일관성>을 가장 중요하게 강조합니다.

"개념적 일관성이야말로 시스템 설계에서 가장 중요한 부분이다. 이를 얻으려면 시스템의 설계는 한 명 또는 생각을 같이하는 극소수에 의해 이루어질 수밖에 없다."

그런데 <하이에나>를 개발하면서 저희는 이 원칙을 위반하였습니다. 개발 초기에는 외부에서 개발 용역을 맡은 전문가가 회사에 들어와 일을 하였습니다. 1년여에 걸쳐 거의 코딩이 끝났을 무렵, 회사와의 갈등으로 개발에서 손을 떼게 되었고 결국 내부 인력이 개발을 떠맡게 되었습니다.

개념적 일관성이 무너진 것입니다. 그 결과 2년이라는 시간이 더 필요하게 되었습니다. 혹독한 대가를 치른 것입니다.

우리들 인생 설계에는 개념적 일관성이 있을까요. 어릴 때는 부모님, 학창 시절에는 선생님, 직장에서는 상사가 우리 인생 설계에 개입합니다. 제가 진지하게 제 인생을 고민하고 설계하는 것은 한참 후의 일입니다.

계속 읽어 보겠습니다.

"경험에 의한 내 나름의 법칙은 전체 일정의 1/3을 설계에, 1/6을 코딩에, 1/4을 구성요소 테스트에, 1/4을 시스템 테스트에 배정하는 것이다."

결국 테스트에 전체 시간의 1/2을 배정하여야 한다는 것입니다. 그러나 프로젝트 일정을 구성할 때는 이렇게 할 여유가 없습니다. 모두의 조급한 마음이 이를 허락하지 않습니다. 그러나 결국 그렇게 되고 말았습니다.

인생을 살면서도 늘 점검하여야 합니다. 되짚어 보고 다시 고민하고 또 해보고 그리고 한 걸음 앞으로 나가야 합니다. 너무 더디고 답답하지만 결국 이 길밖에 없고, 이 길이 가장 빠른 길이라는 것은 살아보면 압니다.

"프로젝트 규모가 작다 할지라도 관리자는 처음부터 목표, 사용자 매뉴얼, 일정, 예산 등의 주요 문서들을 작성하여야 한다."

저희는 처음 1년간 외부 개발자에게 소프트웨어 개발을 맡기는 바람에 그에게 의존하였습니다. 모든 문서는 그의 머릿속에 있었지만 글로 쓰여지지 않았습니다. 인계 후 우리는 그의 생각을 추측할 수밖에 없었습니다.

우리는 인생을 살면서 인생에 관한 주요 내용들을 글로 작성하고 있을까요. 인생의 목표, 버킷 리스트, 일정, 예산, 관련 인물 등을 문서로 작성하고 계시는가요. 그리고 그 문서를 자주 갱신하시나요.

이 책은 <일정 지연>의 문제점에 대해 경고하고 있습니다.

"매일매일 조금씩 일어나는 일정 지연은 큰 재난보다 더 알아차리기 힘들고, 예방도 어려우며, 만회하기도 힘들다. 일정은 마일스톤 milestone과 목표 날짜로 이루어진다. 마일스톤은 구체적이고 명확하고 측정 가능한 이벤트여야 하며 날이 선 듯이 분명하게 정의되어야 한다."

저는 <하이에나>를 만들면서 일정 지연을 여러 차례 경험하였습니다. 각 지연은 매우 짧은 것이었지만 결국 1년을 지체시켰습니다. 더 중요한 것은 이 책이 말하듯 '만성적 일정 지연은 사기를 꺾는 주범'입니다.

오늘이 벌써 5월 10일입니다. 지금쯤이면 금년에 수립한 계획들이 많이 망가져 있을 것입니다. 벌써 포기한 계획도 상당수일 것이고, 포기하지 않고 진행되고 있더라도 지연되고 있는 것이 대부분일 것입니다.

마이크로소프트의 짐 매카시는 "만약 시한을 한 번 놓쳤다면, 다음번에는 반드시 맞춰야 한다."라고 말합니다.

그러나 실제 삶에서는 시한을 한번 놓치고 나면 시한을 어기는 것이 별거 아니라는 생각을 하게 되어 다음번에는 더 쉽게 자신과 타협합니다. "뭐 어때 좀 늦는다고 하늘이 무너지는 것도 아니잖아."

이런 타협은 결국 그 목표에 대한 의욕을 꺾고 포기로 이끕니다. 이는 우리가 수없이 경험해 보아 잘 아는 일입니다.

맨먼스 미신을 읽고 저는 <하이에나> 개발에 대한 큰 그림을 잡을 수 있었습니다. 또 한편으로는 인생에 관한 많은 팁을 배울 수 있었습니다.

이제 내일모레면 그렇게 우여곡절을 겪은 <하이에나>가 세상과 만나게 됩니다. 어떤 평가를 받을지 걱정됩니다. 그러나 분명한 한 가지는 소프트웨어 개발을 멈추지 않을 것이라는 점입니다. 왜냐하면 다섯 가지 즐거움을 주는 일이기 때문입니다.

인생이 힘들기는 하지만 우리는 오늘도 그 발걸음을 힘차게 내딛습니다. 인생 앞날에는 여러 가지 기쁨이 숨어있다는 것을 알기 때문입니다.

이번 한 주도 웃으며 시작하세요.

2021.5.10. 조근호 드림

 

 













트위터 페이스북 카카오톡
이전글 목록으로 다음글