'개발자'에 해당되는 글 2건

  1. 2007.08.14 단순한 개발자 4
  2. 2007.08.10 즐거운 개발자 11
개발2007. 8. 14. 03:14
다행입니다. 저의 바램대로 일정은 연기되었습니다. 고생에 대한 격려도 받았구요. 좋지 못한 상황까지 각오하고 있었는데, 정말 다행입니다.

제가 초반에 산정했던 프로젝트 일정은 크게 빗나갔습니다. 거대한 산이 존재하고 있다는 것을 프로젝트가 꽤 진행된 이후에 알아챘기 때문입니다. 만만하게 봤다가 큰 코(?) 다쳤지요. 그 이후에 어떻게든 일정을 맞춰보려고 아둥바둥했었지만 역부족이었습니다. 결국 보고는 늦어졌고, 일정에 대한 압박을 느껴 고민 아닌 고민을 했었네요. 물론 관리자와 개발자, 그리고 소프트웨어에 대한 제 생각에는 변화가 없습니다만, 우려했던 현실은 다행히도 해피하게 변했네요.

오늘 좀 더 현실적인 일정을 다시 산정했고, 내일부터 몇 달간은 다시 맘잡고 열근모드 들어가려고 합니다. 후배 개발자가 의욕을 잃지 않도록 격려해주신 분들께 참으로 감사드리고... 당분간 블로그 관리는 좀 소홀해지겠지만, 연말쯤엔 '문제의 작품'을 소개드릴까 하오니, 사알짝 기대바랍니다.

Posted by roguebean
개발2007. 8. 10. 04:48
저는 개발자입니다.
초등학교 2학년때 친구네 집에서 처음으로 컴퓨터를 접했습니다. XT 컴퓨터였는데, 흑백 모니터에 하드디스크라는 건 없었고, 5.25인치 플로피 디스크로 MS-DOS를 띄웠던 기억이 납니다. 처음에는 그저 게임이 좋아 방과후에 그 친구네 집에 들러 몇 시간씩 게임을 하다가 집에 가곤 했었습니다. 'Rampage'라는 게임을 즐겨했었는데, 2인용도 가능해 친구랑 즐거운 시간을 보낼 수 있었습니다.

그러던 어느날 컴퓨터를 가르쳐주는 학원이 있다는 걸 알게 되었고, 그 곳에 다니면 더 많은 게임을 할 수 있지 않을까라는 단순한 생각에 결국 부모님을 졸라 학원을 다녔습니다. 실제로 그 학원은 저같은 원생 유치를 위해 주말마다 게임을 할 수 있는 시간을 줬습니다. 어린 마음에 신나게 즐겼었지요.

학원에서는 GW-BASIC이라는 프로그래밍 언어를 배웠었는데, 저의 프로그래밍 경험은 그 때가 처음인 것 같습니다. GW-BASIC은 줄번호로 한 라인을 시작했었는데, 1, 2, 3... 으로 1씩 증가시킬 경우, 나중에 중간에 새로운 라인을 추가하려면 아래쪽 라인의 번호를 모두 밀려써야 하는 불편함 때문에 항상 10, 20, 30... 으로 번호를 매겼던 기억이 납니다. 중간에 새로운 라인을 추가할 때는 15, 25, 35... 이렇게 넣으면 되니까요.

프로그래밍은 굉장히 즐거웠습니다. 충격적인 경험이기도 했구요. 제가 머릿속으로 생각한 계산과정이 컴퓨터라는 기계에서 정확하게 동작하는 것을 보고 너무나 신기했습니다. 프로그래밍에 오류가 있으면 그것마저도 정확하게 반영을 해주더군요. 이런 똑똑한 기계를 대체 누가 만들었을까... 호기심이 충만했습니다.

그 이후 초등학교 3학년 때 우리집에 첫 컴퓨터가 들어왔습니다. 삼보 286 AT 컴퓨터였는데, 당시에는 좀 산다는 집에만 있었던 컴퓨터를 아버지가 거금 200만원을 들여 사주셨습니다. 처음에는 그저 값비싼 게임기였는데, 나중에는 어떻게 어떻게 알게 되어서 모뎀으로 밤새 PC통신도 해보고, 덕분에 전화요금이 10만원 넘게 나와 혼나기도 많이 혼나고... 이래저래 재미있는 경험들을 해볼 수 있었습니다.

중, 고등학교 때는 프로그래밍보다는 3D 디자인에 푹 빠졌었습니다. 3D STUDIO를 주로 사용했었는데, 컴퓨터에서 사물을 3D로 표현할 수 있다는 게 너무 신기했습니다. 게다가 애니메이션까지도 제작할 수 있어 시각적인 즐거움이 엄청났었습니다. 언젠가 학교에서 장래희망을 조사했는데, '컴퓨터 그래픽 디자이너'라고 제출했던 기억이 납니다. 그 때 만들었던  작품들 중 일부는 남겼지만 아쉽게도 대부분의 작품들은 잃어버렸습니다. 허접하긴 해도 간혹 보고 싶을 때가 있는데, 그 때마다 백업의 중요성을 새삼 느낍니다.

그렇게 소년시절을 보내고, 운 좋게 대학교에 들어갔지만 이래저래 술만 마시고 방황만 하다가 결국 군대를 갔습니다. 끔찍한 2년 2개월이었지요. 복학 후에는 머리가 굳어서 조금 힘들었지만, 정신차리고 공부를 해봤더니 다시 흥미가 생기기 시작했습니다. '컴퓨터 시스템'이라고 주로 어셈블리 언어를 다루는 강의가 있었는데, 그 과목을 시작으로 점점 재미가 붙더군요. 그래도 솔직히 그 때까지만 해도 제가 개발자라는 직업을 가질 수 있으리란 생각을 못 했습니다. 무개념에 지식과 상식이 황폐했기 때문입니다.

하지만 인연은 어떻게든 이루어지나 봅니다. 친구 소개로 아르바이트를 시작한 게 연이 닿아 지금까지도 한 회사를 다니고 있습니다. 여기서는 재미있는 일들을 많이 할 수 있어 좋았습니다. 생업으로 다니는 거라 연봉도 신경쓰이긴 하지만, 솔직히 그보다는 재미있어서 다니고 있습니다. 배우는 것도 굉장히 많구요.

그런데 언제부터인가 회사라는 조직에 실망을 하기 시작했습니다. 저는 소프트웨어도 하나의 예술작품이라고 생각합니다. 잘 만든 소프트웨어를 보고있자면 아름답다는 생각이 듭니다. 멋진 그림을 보거나 멋진 음악을 들으면 아름답다는 생각을 하는 것과 비슷한 것 같습니다. 스위스 시계나 멋진 건축물같은 경우도 마찬가지구요. 가치를 인정받는 예술작품은 작가의 장인정신이 깃들어 있습니다. 작품을 볼 줄 아는 사람이라면 굳이 설명하지 않아도 알 수 있습니다.

소프트웨어도 마찬가지라, 이 작품이 명작인지 졸작인지 알 수 있습니다. 명작이라 불리는 소프트웨어는 개발자의 장인정신이 깃들어 있습니다. 하지만 이런 소프트웨어를 만들려면 개발자의 실력도 실력이지만, 주변환경도 굉장히 중요한 것 같습니다. 개발자가 개발에 전념하고 정성을 들일 수 있도록 환경을 만들어줘야 합니다. 가장 이상적인 경우는, 개인적인 생각입니다만, 그냥 믿고 내버려두는게 아닌가 싶습니다. 물론 개념없는 개발자를 방치해두는 것은 위험하겠지만요. 그리고 칭찬은 못 할 망정 사기를 꺾는 일은 하지 말았으면 좋겠습니다. 일부러 그러는 것은 아니겠지만 말입니다.

저는 오늘 사기가 많이 꺾였습니다. 사실 요즘 굉장히 흥미로운 프로젝트를 진행중이라, 오랜만에 창작의 즐거움을 만끽하고 있습니다. 시간가는 줄 모르고 일하고 있습니다. 이번 프로젝트를 위해 많은 연구를 했고, 어떻게든 개념을 정확하게 코드로 표현하려고 노력중입니다. 명작을 만들 능력까지는 안되더라도, 좋은 소프트웨어를 만들기 위해 제 깜냥으로 할 수 있는 모든 노력을 다하고 있습니다. 하지만 회사는 이런 걸 원하는 게 아닌 것 같습니다. 노력도 중요하지만 그보다는 일정 관리가 더 중요한가 봅니다. 기능을 어떻게 구현했는지보다는 기능을 구현했냐 못했냐가 더 중요한가 봅니다. 저도 이해는 갑니다. 회사 입장에서는 리스크를 관리해야 되고, 프로젝트의 지연은 쉽게 용납할 수가 없겠지요. 스펙에 적혀있는 기능이 동작하는지 안하는지도 물론 중요하구요.

그렇지만 정말 그게 최우선의 가치입니까? "동작만 하는 코드"는 누구나 작성할 수 있습니다. 코드의 품질을 따지지 않는다면 일정이 지연될 일은 별로 없을 겁니다. 그렇게 해서 그 일정을 준수했다고 칩시다. 당장은 좋은 평가를 받겠지요. 하지만 그 뒤에 유지보수는? 뻔합니다. 조금만 코드 수정해도 여기저기서 삐걱댑니다. 나비효과도 생깁니다. 여기서 수정했더니 저 멀리 있던 엉뚱한 놈이 망가집니다. 이런 모래성같은 코드는 파도 한 방에 하염없이 무너집니다. 기능 추가는 어떻습니까? 모든 부품들을 처음부터 새로 만들어야 됩니다. 이미 스파게티로 섞여버린 코드에서 재사용 가능한 모듈을 빼낸다는 건... 미친짓입니다.

지금 당장은 더뎌보이더라도 신경써서 개발을 해두면 두고두고 편합니다. 프레임웍이 잘 잡히면 쉽게 무너지지 않습니다. 버그양산도 드물어서 디버깅 시간도 비약적으로 줄어듭니다. 모듈별로 경계를 확실히 구분해두면 여기저기서 재사용 가능합니다. 이후에 모듈을 그대로 사용할 수 있다면 새로 개발할 필요가 없으니 결국 장기적으로 봤을 때 훨씬 더 유리하다는 겁니다. 이런 사실을 간과하고 지금 당장 눈에 보이는 결과만을 좇다보면... 뒷일은 불보듯 뻔하지 않겠습니까.

오늘 그렇게 관리에 대한 얘기를 듣고나니 참으로 기운이 빠지더군요. 신경써서 구조 잡고 모듈을 독립적으로 만들려고 아둥바둥 노력해봤자 뭐하나 싶었습니다. 아무도 알아주지도 않는 거 그냥 고민하지 말고 대충 빨리빨리 만들어서 일정 지키고, 평가나 잘 받을까라는 생각까지 들었습니다. 나는 그저 수많은 기계들 중에 제때 일처리 못하는 불량품같은 존재인가 싶기도 하고.

저는 아직 이상주의자입니다. 기술로 먹고사는 회사에서 관리를 목적으로 기술을 경시한다는 것은 이해가 안 됩니다.
그리고 저는 바랍니다. 일정을 맞추기 위해 기술을 깎을 게 아니라 기술을 위해 일정을 지연시킬 수 있기를.

신나고 즐겁게 개발하고 싶습니다.

Posted by roguebean