본문 바로가기
컴퓨터/전산, 그 외

개발이라는 작업, 개발자

by adnoctum 2011. 8. 20.


   나는 어느 정도 정체성이 뚜렷한데, 일단 개발자는 아니다. 물론 하는 일의 대부분이 코딩(개발)이지만 말이다. 그리고 한 번도 직업으로 개발을 생각해 본 적이 없다. 만약 그랬다면 부전공을 수학이 아니라 전산을 했었겠지. 소프트웨어 개발의 가장 난점은 99%[각주:1] 완성될 때까지 겉에서 보이는 것이 없다는 것이다. 게다가 9-6가 철칙이라면 밤새 작업을 하는 나같은 경우에는 낮에 졸거나 노는 사람으로밖에 보이지 않는다. 또한, '창의적'이라는 것, 이것이 조금 애매한데, 아주 간단한 예를 들어 보자면 얼마 전 썼었던 1픽셀에 관련한 글. 아무 것도 아닌 것 같지만 개발을 하다 보면 수많은 문제에 부딪히게 되고, 그럴 때마다 적절한 방법을 찾아서 해결해야 한다.

시작하기 전에는 뻔해 보인다. - IEEE.

수학 공식처럼 답이 있는 게 아니다. 차라리 에러가 난 것은 원인이 뚜렷하기 때문에 쉽다. 문제는 '방법(알고리즘)'을 매번 생각해 내야 한다는 것이다. 문제는 이런 문제를 해결하는 과정이 밖에서는 거의 보이지 않는다는 것이다. 내 경우라면, 서점에 간다거나, 그냥 한량처럼 길가 아무 벤치나 공터에 앉아 캔커피나 마시면서 멍때리고 있는 것 정도. 그리고 특히 집중이 잘 되는 때인 잠들기 전과 아침에 샤워할 때. 사람들이 많고 자질구레한 소리가 많이 나는 근무 시간에 나는 주로 논다. 하지만 문제는 결국 풀리게 되는데, 그래 봤자 본전, 해야 할 일을 한 것 뿐이다. 못 했으면 못 한 것이고.

   난 학부 2학년 1학기를 마치고 10개월 정도 회사를 다녔는데, 내가 느꼈던 것은 딱 위의 것이었다: 잘 하면 해야 할 일을 한 것, 못 하면 못 한 것. 결과적으로 내 스타일은 결코 회사에 적응할 수 없다는 것을 알게 되었지. 지금 있는 실험실은 생물학 실험실인데, 내 세 번째 정체성은 생물학도라 이것은 상관이 없는데, 지도교수님이 MD, Ph.D[각주:2]라서 소프트웨어 개발에 대해 잘 모르신다. 회사랑 공동연구 때문에 내가 1년 정도 알고리즘을 작성했었는데, 그 때도 위와 같은 상황의 기미를 느꼈다. 고민은 계속 하고 있는데 겉에서 봤을 때는 아무 것도 안 하는 것처럼 보이는 것. 그래서 교수님께 위와 같은 맥락의 이야기를 했고, 저 때 회사를 나오기 직전에 썼던 글을 교수님께 메일로 보냈었다. 그 글은 이렇다.

난 아닌가보다 2001-06-14 오후 6:38:53

이정설 (adnoctum )    번호: 2004   / 평점:  (-)  / 읽음:216

미쳐버릴것만 같다... 내가 문젠가??
 
  일하는 방식이라... 난 어떻게 보면, 절대, 절대 회사 생활을 할 수 없는 사람인가? 내가 일을 처리하는 방법은 우선 이렇다.  내가 학생 신분이었으니까, 학업을 중심으로 말하겠다. 고등학교 때, 생물 공부를  하면, 화학2 교과서가 필요했다. 나중엔 양자 역학이나, 물리 화학 정도의 책들이 필요하게 된다. 파고 들어가기 때문이다. 우선, 하나에서 걸리면, 다른 걸 못하겠다.  내가 속시원히 알 때까지 파고 들어가 본다. 아마 그래서 화학을 좋아했는지 모른다...결국 양자 역학 쪽으로 들어가다...말았지만... 그랬기 때문에, 순수 과학을 택했고, 생명 현상의 근본을, 세포, 분자, 화학적으로 파고 들어가서 밝히는 것이 재미있었기 때문에 생명과학이란 전공을 택한 것인지도 모른다. 파고 들어가기... 이젠 수학과쪽으로 2중 전공을 할 생각이다. 물리나 화학에서 나오는 그 수학식들의 "근본"에 좀 더 접근해보고 싶기 때문이다. 영어 단어를 외우는 것도, 어근을 중심으로 외우고, 수학을 하더라도, 내가 결코 이해할 수 없는 단계... 거기까지 가서야 멈추곤 한다... 그래서 초등학교 때, 경우의 수를 배우다 순열이니 조합이니...하는 것까지 파고 들어갔는지도 모른다... 초등 학교 때 집에서 한 것이 전기 분해였다는 것을, 중학교 때 알았고,  중학교 1학년 때 풀던 수II의  정석이 고3이 보는 거란 것을 고등 학교 때 알았다.

   난 그렇다. 일을 하다 한 곳이 마음에 안들면, 우선 그것부터 파고 들어가서 모조리 바꾸고 지나가야 직성이 풀린다. 그래서, 우선 무엇인가 "보여주어야" 한다고 생각하는 회사의 방침엔 결코 난 맞지 않는 사람인가보다... 지금 하는 일은 구조적으로 상당히 꼬여 있다. 난 우선 결과를 보여주는 것보단, 이 구조를 바로 잡고, 그리고 모든 것을 시작하고 싶다. 지금 클래스 하나가 절실하게 필요하다. 그 클래스를 만들고, 구조를 좀 다듬으면, 코딩량이 80%로 줄어드는 것 뿐 아니라, 가독성과 속도도 증가할 것으로 예상된다. 유지/보수가 용이해지는 것은 당연하다. 그런데, 그렇게 하려면 약간(?)의 시간이 걸린다. 하지만, 우선 뭔가 보여줄 것이 필요하다고 한다. 그래서, 결국 꼬인 곳에 또 덕지덕지 붙이고 말았다. 30분만에... 그냥 갖다 붙이고 말았다....그냥... 난 또 꼬이고 꼬인 그 구조를 한번 더 꼬고 만 것이다...

 이제, 함수 하나를 추가하거나, 어떤 기능 하나를 추가하려면 드는 시간은, 예상하기조차 힘들다... 내가 제시했던 모든 방법들은, "조속한 시일 내에 [보여줄 것]이 없다"는 이유 때문에 모두 거절당했다... 내가 30분만에 일을 할 수 있었던 것은, "밤새서 나름대로 만든 클래스"가 있어서 가능한 것이었지만,  내가 밤을 새면서 이런 일을 대비해 만든 클래스를 이용해도 들을 수 있는 말이란 고작해야, "밤샘해도 아무 이득 없으니까, 그냥 집에 가라... 야근하지 마라..."이다... 밤이 조용해서, 또,  낮에 자고, 밤에 하는 야행성 기질 때문에(고3때도 자다 교무실에   불려갔었고, "너 또 자면 이제 안 깨워준다"란 소릴 선생님이 하셨다... 고2,3학년 영어 시간은 나에겐 그냥 자는 시간이었다... 대학 1학년 화학 시간에 들은 말은 "오늘 여기까지"가 전부일 때가 태반이 넘었다... 이 외에도 나의 잠에 관한 믿기 힘든 얘기는 참 많을 정도로 난 낮에 잠을 많이 잔다... 하지만 그나마 성적이란 게 제대로 나올 수 있었던 것은, 새벽에 혼자 공부했기 때문이었다) 주로 새벽에 코딩을 하고 낮엔 자고 만다... 낮엔 자는 모습이 나의 전부였나보다... 아니면 졸고 있거나... 집보다 느린 전용선에, 칼라 프린터도 쓰기 거추장스러운(난 코드를 칼라풀하게 뽑아서 보는 것을 좋아한다) 회사에서, 내가 배우느라고 인터넷을 돌아다니는 것은, "회사에서 인터넷이나 하는" 행위로 보일 뿐이다. 내가 작년 7월에 처음 입사했을 때 갖고 있는 지식은, 델파이와 비베로 아주 간단한 프로그램을 짜 본 것과,  메세지라는 개념을 읽어본 것이 전부여서, c, c++, mfc 를 입사해서 배웠다. 그래서 많이 해맸다. c++은 우리 나라 싸이트에서(c++ 책 한권도 없다...>.<"") 배웠으며, visual c++은 책을 보며, 인터넷에서 이자료 저자료 찾으면서 배워 나갔다... 그래서, 일을 하다 허구헌날 인터넷을 할 수밖에 없었고, 우리 나라 싸이트의 여기 저기에다 질문해도 답이  안나오면, 결국 외국 싸이트에 가서, 잘하지도 못하는 영어로 질문을 하고... 게다가 지금 하는 영상 처린 처음 접하는 거라, 이놈의 수식 때문에 스탠포드대에 있는 저자한테 직접 메일을 보내서 궁금한 것을 물어보곤 했다...

 1년이 다 되어가는 내가 가진 지식은 얼마나 될까? 혼자 배워나가려니...힘도 든다... 내가 뭔가를 하려면, 우선 그것을 배우기 위해 시간이 필요하다는 걸 나만 알고 있나보다... 지금도 메모리 누수가 생기는 클래스를 그냥 쓰고 있다. "모두" 그 클래스를 쓰고 있기 때문에, 다른 클래스를 만들면, 적용하기 거추장스럽고, 새로운 클래스를 만들려면 "시간"이 들기 때문이다. 라이브러리를 쓰지 않고도 할 수 있을 텐데... 내가 하는 코드엔 에러 처리를 위한 루틴이 30%가 넘게 들어간다...  이건 당장의 개발 시간이 길어지게 되는 요인이다.  별 엽기적인 에러 처리 루틴까지 생각하기 때문에 코딩 시간이 길 수밖에 없고, 코드도 전처리 매크로가 많이 들어가기 때문에 좀 생소하지 않게 보이게 된다. 한마디로 되게 지저분해 보인다... 결국 에러를 위한 매크로를 만드는 데 쥐뿔도 모르는 어셈 코드까지 써가며(이건 외국 싸이트에서 보고, 며칠 뒤 비사모에서 보았다) 며칠을 써서 그나마 간단하게 보 이게 코드를 짤 수 있게 되었지만, 그 "며칠"동안 난 "보이는 것"을 한 것이 없다... 난 그 며칠을 그냥 "놀면서" 보낸 건가보다...

  지금 생각해보면, 실제적으로 내가 프로그램에 미친 영향은 보이는 것이 하나도 없다. 하나를 건드리기 시작하면, 여기저기 다 건들게 되는 데, 결국 그러다 시간은 다 가기 때문에, 당장 보여줄 것이... 난 없다... 지금도 내가 며칠을 써가며, 만든 클래스를 나만 쓰고 있다... 모두들 그냥 지나칠 뿐이다... 그것이 미치는 영향은 코드 내부적인 것일 뿐, 결과에는... 없다. 한마디로, 결과가 이미지로 나오는 데, 그 이미지는 그냥 똑같이 나온다... 단지 안의 구조가 그나마 보기 좋고(그나마 잘 되어 있고), 후에 수정하기 쉽다는 것 뿐... 난 아무것도 한 것이 없다...

    그래... 수능 일주일 전에 학교 안나가고, 수업 빼먹고, 지리산이나 뭐 이런 먼 곳을 가는 내 성격이, "회사"라는 공동체에 어울리지 않는 것도 알고, 그래서 내가 고쳐야 한다는 것도, 알고, 인정하며, 노력하고 있다...(하지만 아직도 많은 부분이 맞지 않아서, 남들의 눈살을 찌푸리게 한다 ^^;;;;) 내가 속이 상하는 건 이런 나의 문제에 대한 "올바른 쓴소리"가 아니라, 내가 내 돈 들여가면서까지 집에 안가고 회사에서 일하고... 했던 것이, 나에게 준 것이... 과연 무엇이었는가... 하는 것이다... 단순히 "눈에 보이는 결과"가 없기 때문에, 내가 한 일이 아무것도 없이 되는 게... 좀 씁쓸하다... 미생물 시험에서, 내가 아는 것만, 늘리지 않고 간단간단하게 써 놓아서, F를 받았던 적보다, 더 기분이 안좋다...

   난 그냥 "너 수고한 다..."같은 말을 듣고 싶은 게 아니라, 그냥 내 방식대로 일을 해 나가고, 비록 보이지는 않지만, 나름대로 고생하면서, 뭔가 하려고 한다는 그것, 그걸 알아서, 믿어 주길 바란 것이다. 아니, 그런 줄 알고 있었다... 하지만  난 그냥, 집에 가기 싫으니까, 회사에서 잠이나 자고, 인터넷이나 하면서 내 자료나 찾는... 그런 사람이었나보다...

   맞지 않는다... 눈에 보이는 것보다, 우선 되어야 할 것부터 파고 들어가서 하는 내 성격은 결코 맞지 않나보다...  교과서를 정독하고, 문제집을 푸는 것처럼, 최대한 기본에 충실하고, 보이는 것보단, 보이진 않지만, 내부의  문제를 더 중시하는, 나의 일하는 스타일은, "수익"을 추구하는 회사에 당장 "보일 것"을 줄 수 없기 때문에, 난 결코 회사에서 "수익"을 추구하면서 일을 할 수는 없는 사람인가보다...

   그냥 좀 많이 씁쓸하다... 난 그냥 맨날 아메바같은 미생물이나 보면서, "왜 그런지" 파고 들어가면서 연구나 하는, 그런 생활이 맞나보다...
 
   하도 답답해서, 나오는 대로 끄적거려 보았네요...

다행히 교수님에 대한 나의 오해는 풀렸고, 지금은 나에게 102% 적절한 환경이다[각주:3]. 사실 회사에서의 경험 때문에 내가 괜히 교수님을 오해했던 것이다. 결국 회사에서의 경험이 일종의 정신적 충격(trauma)가 되어버린 것이었을까? 나의 경우는 회사가 아니고, 더구나 랩 분위기도 일반적인 한국의 실험실과는 상당히 다르기 때문에 다행이지만, 현업에 있는 사람들은 그렇지 않겠지. 구글이 모토로라를 인수한 것 때문에 요즘 또 한창 한국의 SW 개발자 여건에 대한 이야기가 나오는데, 우낀 건 내가 회사를 다닌 10년 전과 지금의 이야기가 거의 완전히 똑같다는 것이다. 결국 10년 동안 개발자들의 열악한 여건은 변하지 않았다는 것일까? 코딩을 하다 막히면 회사 앞 닭집에 가서 사장님께 물어 보면 풀린다는 말, ㅋㅋㅋ, 40 넘어가면 개발일 때려 치우고 닭집이나 차려야 한다는 말, 10년 전에도 지금도 여전하다. 하긴, 우리 회사는 개발자가 과로사할만큼 열심히 일한다고 말하는 사장놈이 있을 수 있는 IT초강대국이니까. 쳇.


   어쨌든 나는 IT란 결국 소프트웨어가 힘인데 한국은 불모지, 라고 생각하고 있다, 예나 지금이나. IT 강국이란 건 헛소리라는 것을 나는 이미 10년 전부터 얘기 했었지. 재미있는 것은 전산과를 나와 회사 생활을 해 본 적이 없는 사람들도 한국이 IT 강국이란 소리를 하더군. 공구리 삽질 본능의 가카 뿐만이 아니라 한국내 전반적인 분위기 자체가 눈에 보이는 것이 없게 진행되는 소프트웨어 개발이라는 것을 제대로 판단하질 못한다. '눈에 보이는 것'이 없기 때문이다. 하지만 막상 작업은 차라리 눈에 보이는 것이었으면 좋을 정도로 머리 아픈 일들이다. 개발자들은 알겠지, 꿈에서도 코딩을 할만큼 고민하지만 그 결과는 막상 코드 라인 수 100라인, 애게, 별 일 아니었네, 와 별반 다르지 않게 판단되는 것을. 수많은 고민을 머금고 있는 50줄의 코드. 한줄한줄이 개발자에겐 노력의 피땀으로 보이지만 다른 사람이 볼 때는 그냥 책에 있는 것 복사/붙여 넣기 로밖에 안 보이는, 그런 황당함. 윗선들이 개발자들의 그러한 노력을 제대로 판단할 줄 모르고, 그저 라인 수, 화면 수, 등등처럼 해괴망칙한 판단 기준으로 개발자들의 노력을 판가름한다면 한국의 IT 미래는, 없다, 지금처럼. "그냥, 간단하게, 엑셀처럼 만들어 주세요", ㅋㅋㅋ, 엑셀이 무슨 개집 이름인가, 엑셀은 예술이라고.

    뭐, 그 이외에, 프로젝트 수주는 결국 대기업이 인맥 통해서 딴 다음 갑을병정~~~ 까지 가서 결국 실제로 개발하는 사람은 중소기업의 누군가가 되면서 프로젝트 비용 중 실제 개발자에게 돌아가는 것은 갑을병정~~ 거치면서 계속 깍인다는 것이나, CMM level 3이었나 5이었나를 넘어가는 곳이 한국엔 별로 없다는 것이나, subversion 같은 버전 관리 시스템을 사용하는 것도 흔치는 않다는 것 등, 회사의 일반적인 개발 환경/여건/수준이 안 좋다는 얘기는 익히 들어 왔지만 내가 실제로 경험하지 않았기에 그것에 대해선 더이상 이야기 하지 않는다.



ps. 위의, 회사 나오기 직전에 쓴 글, ㅋ, 간단히 쓰라고 해서 간단히 썼다 F 맞은 미생물학, 복학하고,빡돌아서 겁나게 공부해서 결국 A 맞았고, 영어 어근 때문에 라틴어도 한 학기 수강했었다. 저 글을 본 누군가에 의해 다른 회사에 취직은 되었었는데 너무 겉도는 것 같아 결국 학교로 돌아갔었다.


  1. 100%는 없다. [본문으로]
  2. 박사 학위를 소지한 의사. [본문으로]
  3. 나의 작업 방식을 이해해 주는 랩의 전반적인 분위기는 다른 사람들이 나에게 '면책특권'이란 말을 사용하기까지에 이르렀다. 남용하지 말자는 생각을 자주 한다, 그래도. [본문으로]

'컴퓨터 > 전산, 그 외' 카테고리의 다른 글

colormap 사용하기  (0) 2013.01.24
C++ 사용자의 파이썬 추천  (14) 2011.09.01
프로그래머와 수학 2  (3) 2011.08.15
사용자 친화적 오류 메세지  (0) 2011.08.06
테트리스 우승 전략  (2) 2011.08.01