우리가 미처 알지 못한 소프트웨어 공학의 사실과 오해

By | 2006/02/22

제 전공이 컴퓨터공학과이면서도

대학 1년 교양과목만 들어

전공은 하나도 배우지 못한

이름만 컴공과생입니다.

그래서 실제로 프로그램을 하나 만들 때마다

맨 땅에 헤딩하는 느낌이죠.

그게 너무 싫어서 전 ‘소프트웨어 공학’을

독학으로라마 조금 익히기를 원했고,

존경하는 학교 선배 중 한 명이

책 두 권을 추천해주셨습니다.

그 중 한 권은 가격이 너무 비싸 사지 못했지만,

나머지 한 권은 도서관에 있어 바로 읽을 수 있었습니다.

‘우리가 미처 알지 못한 소프트웨어 공학의 사실과 오해’

아직 다 읽지는 못했지만, 많은 부분이 공감이 갑니다.

서론에 적혀져 있는 데로 이 책은

문제의 해결방법을 설명하는 책(how-to book)이 아니고,

문제를 설명하는 책(what-is book)입니다.

그게 오히려 저에게는 더 좋았습니다.

반발심을 가지지 않고 문제를 사실로 받아들이고,

해당 문제점을 공감하면서

문제점을 해결하는 방법을 자유롭게 생각할 수 있었습니다.

 

특히나 이 책이 저에게 깊게 다가온 것은

‘길지 않은 소프트웨어 개발경력인데도

공감이 가는 사실이

비단 저의 실력이 낮아서가 아니라

모든 엔지니어들이 겪고 있는 것이다.’ 라는 것입니다.

 

저의 소프트웨어 개발 경력은

저 만의 프로그램을 만든 것이 대부분이고,

남을 위해 만든 것은 극히 드뭅니다.

그 중 최근에 하나 만든 것이 있습니다.

현재 저는 도서관에서 근무중인데,

공무원들이 서류를 작성할 때마다

계산기가 부서져라 두들이면서

숫자를 더하고 나누더군요.

그 모습이 조금 안쓰럽기도 하고,

‘소프트웨어 개발 프로젝트를 공부 차원에서 만들어보자.’라는

생각에 서류 작성 프로그램을 만들어 줬습니다.

약 한 달에 거쳐 프로그램은 완성되었고,

거기서 얻은 경험이 이 책에 다 적혀있었습니다.

 

먼저, 추정에 관한 사실입니다.

사실 9에 추정은 부적절한 시기에 정해진다고 합니다.

확실히 맞는 말이였습니다.

저는 라이브러리를 무엇을 써야겠다도 정해지기 전에

대략 2주 정도 걸릴 것이다 라고 추정을 한 것입니다.

그렇게 공무원에게 말했고,

공무원은 2주 정도를 기다렸지요.

물론 제 주 업무가 프로그래밍이 아니었기에

한 달 정도 늦은 것에 대해서 변명을 할 수 있었지만,

추정이 잘못되어 사람 기다리게만 했다는 것입니다.

 

다음은 재사용에 관한 사실입니다.

위의 프로그램을 만들고 나서

저 역시 비슷한 프로그램이 필요했습니다.

저번에 만든 것도 있어

그 소스를 그대로 가져와

조금만 수정을 하면 금방 만들어지는 줄 알았습니다.

하지만 아니었습니다.

저번 프로그램의 소스는 저번 것에 맞는 것이였지,

새롭게 만든 프로그램에 적용하기에는 수정할 것이 너무 많았다는 것입니다.

혹자는 이렇게 말할지 모르겠습니다.

‘처음부터 만들 때 재사용할 것을 생각하고 만들었어야지.’

저도 그렇게 생각해서 몇몇 함수는 그렇게 만들었습니다.

하지만 기대하던 만큼은 아니더군요.

그래서 수정을 그만두고 새롭게 짰습니다.

수정을 하고 있었으면 대략 삼 일이 걸릴 작업을

하루로 앞당겼습니다.

20~25% 이상을 수정하고자 하면

차라리 처음부터 다시 작성하는 것이

더 효율적/효과적이다는 사실 19의 말이 맞았던 것입니다.

 

이렇듯 아주 간단한 소프트웨어 개발을 하였는데도,

알 수 있는 사실이 잘 해결되지 않는 것을 보면

소프트웨어 개발이 정말 어렵기는 어려운가 봅니다.

하지만 이 책에 나와있는 얘기 하나가 저를 포기할 수 없게 만듭니다.

 

사실 13에 나오는 얘기로

Linbeng라는 분이 조사를 하였습니다.

그 조사 결과로 나온 것이

경영자가 생각하는 가장 실패한 프로젝트와

기술자가 생각하는 가장 성공적인 프로젝트가 일치한다는 것입니다.

그 프로젝트는 추정 규모보다 예산은 418%, 일정은 194% 초과했지만,

소프트웨어는 130%, 펌웨어는 800%를 초과했던 것입니다.

이러한 프로젝트를 성공했다고 말하는 기술자의 이유 중 하나가 다음과 같습니다.

 

‘제품을 개발하는 것은 기술적 도전이었다.

(무엇보다도, 기술자들이 어려운 문제를 해결하는 것을 좋아한다는 것은

많은 자료를 통해 알 수 있다.)’

 

이유보다는 괄호 안의 글을 읽고 저는 매우 기뻤습니다.

저는 언제나 ‘기술자는 프로젝트를 수행하면서 어떤 보람을 느낄까?’

하는 의문이 있었습니다.

즉, 시간의 압박, 자금의 압박 등이 있는 기술자에게

어려운 문제를 풀 수 있는 여건이 되지 않을 것이라 생각했습니다.

그래서 ‘어려운 문제를 해결했을 때 얻는 쾌감을 느낄 수 있을까?’

하는 의문이 언제나 있었습니다.

하지만 느낄 수 있다고 이 책에서는 말해주었습니다.

그렇기에 저는 기술자의 길을 걸어도 아쉬운 것이 없어진 것입니다.

 

이제 반 정도 읽은 책.

마지막까지 읽고나서 과연 어떤 느낌이 들지

그 때 다시 글 남기도록 하겠습니다.

5 thoughts on “우리가 미처 알지 못한 소프트웨어 공학의 사실과 오해

  1. mark

    25% 이상 수정하고자 하면 처음부터 다시 작성하는게 더 낫다.. 이 말은 CODE COMPLETE에 있는 내용과는 상반되는 내용이군요. 코드 컴플릿도 시간이 되시면 일독을 추천합니다!

    Reply
  2. NoSyu

    이 책을 읽다보면 저자의 경력이 얼마나 되는지 궁금할 때가 있더군요.
    자신의 신념을 아주 강하게 굳혀진 사람이더군요.^^
    그래서 이 책만 믿기에는 좀 그랬는데,
    mark씨가 우매한 후배에게 책 한 권 추천해주시네요.ㅠㅠ
    근데… 너무 비싸네요. 할인해서 59,940원….;;;;
    복학 전까지는 근처 대학교 도서관에서 살아야 할 듯..;;;;ㅠㅠ

    Reply
  3. mark

    아 죄송.. 상반되는 내용은 코드 컴플릿이 아니라 조엘 온 소프트웨어라는 책이었습니다(치매? -_-;;) 어디사시는지.. 근처면 책 빌려드릴텐데^^;

    Reply
  4. NoSyu

    조엘 온 소프트웨어.. 현재 산 이후 읽어야 할 책 대기큐에 적재되어 있는 상태입니다.
    순서를 조금 앞당겨야겠네요.^^
    끝까지 살펴주셔서 고맙습니다.ㅠㅠ

    Reply
  5. NoSyu

    조엘 온 소프트웨어를 읽어보았다.
    이제 mark씨께서 추천하신 코드 컴플릿도 읽어야겠다.
    그런데 중고책이냐 새 책이냐 고민이다.

    Reply

Leave a Reply