ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트웨어 컨플릭트 2.0(시대를 뛰어넘는 즐거운 논쟁) - 로버트 L. 글래스[위키북스]
    컴퓨터 공부 ver 0.2/기타(책 등등) 2011. 5. 21. 15:15
    반응형

    이런 책을 읽고 나서 블로그에 글을 올리면 항상 찜찜하고 쌉사름한 것이, 컴퓨터에 대해 쥐뿔도 모르는데 이런 주제에 관련된 책을 읽고, 내 생각을 쓴다는 것이 뭔가 마음 한구석 착한 감정보다, 그 한구석을 뺀 나머지 나쁜 감정들이 내 자신에게 욕을 해대는 기분이다. 그래도 조심스럽게 말하고 싶은 건 컴퓨터를 막 시작한 분들 보다는 소프트웨어 공학이라든지, 컴퓨터에 활용도가 개발에 많이 치우치신 분들이 보신다면 적극 추천할 만한 책입니다. 경험에서 우러나오는 거거든요. 과거 컴퓨터란 윈도우로 시작해서 인터넷과 문서 작성이 대부분이었고, C언어에 대해 얕고 좁게 알던 시절 이 책을 읽으면 뭔가 새로운 세계가 열릴 것이라 믿고 샀다가 서랍 구석 어딘가 쑤셔 넣고, 나중에 발견해서는 이런 책도 있었군이랬던 저랍니다. 그리고 가장 중요한 경고성으로 가격이 2만원이 넘는답니다. 소프트웨어 공학에 관심이 없으시다면 부디 다른 책 두 권을 살 수 있는 가격이니 자신을 변화시킬 수 있는 다른 책을 권해 드리고 싶군요.

    책 제목에도 나와있듯이 이 책의 내용들은 소프트웨어 공학을 공부하고 있는 학생 혹은 현업에서 일하고 계신 분들이라면 한번쯤 고민해봤을 문제에 대한 문제를 제기한다? 혹은 저자와 싸움한 판 할까라는 결투 신청의 기분으로 보면 나름 재미있답니다. 책이 나온 건 대충 내용을 보면 1980년대? 제가 태어난 때쯤, 저자(1954년에 사회 초년생으로 컴퓨터 업계에서의 일을 시작하셨답니다. 태어나신 때가 아닙니다.)가 쓴 수필들을 모아 놓은 거랍니다. 언급되는 언어도 포트란, 코볼 이런 거랍니다. C언어, JAVA에 대한 언급은 없습니다. 안 나왔다는 얘기죠.

    하지만 이런 문제에 대한 건 지금도 큰 변화가 없는 것 같습니다.

    1.     이론이 먼저일까? 실제가 먼저일까?

    2.     과연 완벽한 프로그램을 개발할 수 있는 방법론이나 개발 툴이 있는 것 일까?

    3.     소프트웨어 오류를 없앨 수 있는 방법은 무엇인가? 그리고 그 오류를 애초에 없앨 수 없는 것인가?

    4.     자동 프로그래밍 가능한 것인가?

    5.     과연 새로운 언어(여기서는 4GL(4 Generation Language))를 사용하는 것이 이익인가?

    6.     개발 과정에 있어서 관리, 마케팅, 컨설팅과의 연관 관계(정확히 맞는 표현인지는 모르겠다. 자세한 건 책을 통해 확인하시길)

    그 밖에 몇 가지 의문사항들에 대한 저자의 얘기를 담고 있다. 읽다 보면 공감하기도 때론 반박하고 싶어 입이 근질근질하기도 한다. 그래서 더 재미있다.

    위의 내용은 이 책에 대한 간단한 정리라면 지금부터는 내 생각이니 굳이 읽지 않으셔도 됩니다. 그저 내 생각을 정리하고 싶어 쓰는 글입니다.

    우선 이론이 먼저인지, 실제가 먼저인지에 대한 생각은 실제가 먼저라 본다. 어떤 과학적 정의 또한 현실의 세계에 일어나는 현상을 보고, 그들만의 수치와 단위로 이해하기 쉽도록(이해하기 쉬운가?) 시각적으로 문서화 놓은 것이라 생각된다. 그러하기에 컴퓨터(물론 컴퓨터가 과학의 한 분야인지에 대해서는 잘 모르겠다. 이 얘기도 이 책에 나온다. )도 그러지 않을까 한다. 디자인 패턴이나 개발 프로세스에 관한 이론도 실제 개발 과정에서 이렇게 작성하니 오류발생이 감소하거나, 성능이 좋아졌기에 다른 사람들에게도 알리고 싶은 마음에서 그러한 이론이 나온 것이 아닐까 한다. 그렇다고 실제가 먼저라 하여, 잘 정의되어 있는 이론은 무시하고 무작정 달려들기만 한다면 물론 언젠가 해결될 수도 있겠지만 그러기에는 시간이 너무 오래 걸리지 않을까? 그러한 시간을 단축하기 위해 과거 더 열악한 환경에서 개발을 하신 분들이 남겨 놓은 이론을 무시해서는 안 되는 것이라 생각된다. 그래서 내 원대한 꿈은 이론을 바탕으로 하지만 언젠가 그 이론마저 깰 수 있는 더 나은 이론을 만들 수 있는 소이 말하는 능력자가 되는 것이다. 언제쯤 될 수 있으려나?

    완벽한 프로그램을 만든다. 학기 중 아주 소박한 프로그램을 만들다 보면 통일만큼이나 간절한 내 소망이다. 머리로는 완벽한데 프로그래밍으로 컴퓨터에 옮기면 당연한 듯 오류를 보여주신다. (덕분에 이 책, 저 책 오늘도 야작을 하게 만들어 주신다. 물론 아주 사소한 Syntax 에러일 경우가 대부분이지만.) 그리고 최종 제출기간에 맞춰 낸 결과물을 보면 역시나 완벽함과는 거리가 먼 앞으로 성장 가능성만 내포하고 있는(머리 속에 짠 알고리즘대로 짤 수만 있다는 가정하에) 그런 프로그램이 만들어진다. 아쉽게도 아직 현업에 대한 경험은 없어서 이런지는 모르겠지만, 책을 통해 이런 얘기를 많이 들었다. 완벽한 프로그램은 없다고. 그만큼 불가능한 일이라고. 그렇게 Stakeholder와의 관계는 점점 암흑 속으로 치닫는다고 한다. 그리고 그 Stakeholder 100%완벽하다며 자신은 그 회사와는 다르며, 더 나은 프로그램 환경을 제공한다는 회사로 옮긴다. 그리고 다시 원점으로 돌아온다. 회사만 바뀐 체. 물론 개발자로써 완벽한 프로그램을 만들고 싶다는 꿈을 가지고 있을 것이다. 나 또한 그런 프로그램을 만드는 것이 꿈이다. 하지만 여기서 이어질 수도 있는 얘기라 생각되어 계속 내용을 이어가자면 유지보수에 대한 얘기가 나온다. 그리고 그 유지보수에 대한 비용에서나 어떤 만족도에 있어서 프로그램 개발 과정에서 가장 큰 비중을 차지하는 것이라 나온다. 물론 수업 중에도 그러하다 배웠다. 하지만 아쉽게도 학교 수업에 유지보수에 관한 내용을 담은 수업은 없다. 그러하기에 학생이 느낄 수 있는 유지보수의 중요성은 거의 제로에 가깝다. 그저 유지보수라 하면 개발자라는 스타 뒤에서 묵묵히 개발자가 욕먹지 않을 정도로 형상 유지와 문제 해결을 처리해주는 매니저 같은 느낌이다. 나 또한 유지보수에 관련된 업무보다는 개발자가 되고 싶다. 그것이 지금의 현실에서는 돈을 더 많이 벌 수 있기 때문인지도 모르겠다. 무려 2~30년 전에 나왔던 문제임에도 아직도 별 다르게 바뀐 점이 없다라는 점은 지금의 모습을 다시 한번 뒤돌아 봐야 할 때인지도 모르겠다. 이 책을 읽다 보면 대부분의 내용이(코볼, 포트란, 에이다라는 단어를 사용하는 것 빼고)2~30전 얘기라는 생각을 못하게 된다. 빠르게 변화하는 기술에 비해 사람의 인식은 그것을 따라가지 못함을 느꼈다고 해야 하나? 근데 과연 나는 따라갈 수 있을까라는 의문도 있다. 다시 내용으로 돌아와서, 소프트웨어 개발이란 초기 요구사항에 만족하는 프로그램을 만들어가고, 때론 변화하는 요구사항도 만족해야 한다. 하지만 사람은 욕망의 동물이지 않은가 언제든 현실에 만족하지 못하고 더 나은 삶을 추구하고 싶어한다(나쁜 영향도 있지만 내가 지금 이 생활을 할 수 있는 것은 많은 분들이 이러한 본능(?)을 좋은 방향으로 사용했기 때문이라 생각된다). 지극히 개인적인 생각이지만 유지보수라는 단어보다는 성능향상보수? 성능향상유지개발 과정이라는 뭐 그런 뜻의 단어로 바뀌어야 하지 않을까 생각한다. 단어 하나가 주는 힘은 사람들의 인식에 있어서 무시 못할 힘을 가지고 있다고 생각하기 때문이다.

    그리고 자동 프로그래밍에 관한 내용. 아마 개발자 분들이라면 희망하는 기술이면서 나오지 않았으면 하는 기술이지 않을까 싶다. 지금 당장은 개발하는 것이 힘들어서 나왔으면 하지만 만약 나온다면 직업을 바꿔야 할지도 모르겠다. 자신이 필요 없어지는 것만큼 불행한 일이 어디 있겠는가? 그럼에도 한 번쯤 생각해볼 문제이다. 가끔 노트에 자동 프로그래밍에 관한 알고리즘을 짜보지만 어느 순간 공책이 아닌 전지가 필요함을 느끼게 된다. 전지에 그 과정을 옮긴다면 더 큰 종이가 필요할지도 모르겠다. 지금은 과거에 비해 개발하는 과정이 편해지긴 했다. 그리고 어떤 틀에 맞춰 데이터와 기능만 입력하면 프로그래밍 해주는 프로그램이 있다고 한다. 하지만 대부분의 회사에서 프로그래머를 구한다. 세상에 기존 사용 기술이 지배하고 있어 나오지 못하는 기술들도 꾀 있다고 한다. 변화를 외치지만 정치적으로든, 개인적인 욕심으로든 변화를 두려워하는 사람도 많은 듯하다. 자동 프로그래밍도 그런 느낌이긴 하다. 그런 배경을 생략하고 구현 가능과 불가능의 입장에서 본다면 내 짧은 사견에 의하면 불가능이라 본다. 컴퓨터란 사람의 생각을 대신하는 기계라는 입장이다. 물론 컴퓨터 프로그래밍을 모르는 분들이 자신의 생각을 컴퓨터에 입력하고, 그것을 컴퓨터가 해석해서 프로그래밍 한다. 생각만으로도 멋지긴 하다. 하지만 그 앞의 첫 단계로 넘어가면 컴퓨터의 생각을 컴퓨터가 구현해야 한다. 과연 그것이 가능한 일이 될지 의문이다. 물론 AI가 엄청 발달해서 혹은 영화에서처럼 어떤 오류에 의해 스스로 창조하는 컴퓨터가 나올지도 모르겠다. 예전 1990년 대쯤(왠지 오래된 기분이 드는 건 왜인지 모르겠다.) 누가 만들었는지 모르지만 마치 컴퓨터와 대화하는 프로그램이 있었다. 그 당시에는 안녕하세요.” 입력하면 안녕하세요라고 대답하는 것을 보고 진짜 인공지능 컴퓨터가 나왔다며 신세계에 대한 초롱초롱한 눈빛으로 응큼한 대화를 시도해보기도, 비속어에는 어떤 반응을 보이는지 입력해보기도 했다(그리고 그 대화는 10줄을 넘기지 못했다.). 지금 생각해보면 그저 단순한 조건문에 따른 결과라는 추측한다. 어쩌면 경험을 축적하고 그것을 바탕으로 창조할 수 있는 컴퓨터가 만들어진다면 자동 프로그래밍이 가능하다고 본다. 물론 최근 퀴즈대회에서 컴퓨터가 사람을 이기고, 과거 컴퓨터가 사람과의 체스 대회에서 승리를 거두기도 한 역사가 있기는 하다. 하지만 그런 틀이 갖추어진 상황이 아닌 경우가 아니라면 컴퓨터는 그저 인간을 돕기 위한 기계에 불과하다는 생각을 한다. 물론 이 지구 밖 우주 어딘가 생물체를 지배하는 컴퓨터 같은 존재라든지, 생물체와 기계가 공존하는 세계가 있을 것이라는 생각도 즐겁게 할 수 있다. 그리고 내가 살아있는 동안 이런 기술을 사용해 볼 수 있는 기회가 있었으면 한다. 물론 내 생명이 거의 다 했을 때쯤?

    이 밖에 정말 많은 주제를 담고 있다. 그 주제에 관해 하나하나 얘기하다 보면 한없이 써 내려갈 것 같다. 우선 여기까지만 하고 나중에 틈틈이 하나의 주제에 대한 내 생각을 정리해야겠다. 누군가 이거에 관해 얘기하고 싶은데, 입이 근질근질 하다. 왠지 상당히 오덕스럽다.

    반응형

    댓글

Designed by Tistory.