오늘 내용은 ‘송만약의 나쁜 프로그래머 이야기’ 시리즈를 쓰기 시작할 때 가장 먼저 다루려고 했던 부분이었다. 하지만 글 쓰는 도중 떠오르는 옛 기억의 분노로 지우기를 반복해서 늦어졌다. 이번에는 우황청심원 복용과 분노를 다스리는데 특효인 내 딸의 사진을 보면서 써보았다.

image: shutterstock
image: shutterstock

주변에 시간개념이 없는 사람들이 종종 목격되곤 한다. 모임약속 시간이 딱 되서야 나갈 준비를 한다던가, 아니면 약속시간이 거의 다 되어가는 데 방금 일어났다고 전화가 온다던가, 연락없이 개인적인 일로 참석을 못하던가 등등의 사건이 항상 따라다니는 사람들.

개발자가 시간개념이 없는 류라면 정말 답이 없다. 프로젝트의 실체와 마무리를 담당하기 때문이다.

적어도 친구나 개인적인 일에만 늦고 실제 업무에 있어서는 그렇지 않는다면 그나마 좋게 쳐 줄 수 있을지도 모르겠다. (다만 친구들이나 주변 사람들에게는 노답이겠지만..) 하지만 업무에 있어서 시간을 챙기지 못하는 사람은 개발 조직내에서 처치 곤란한 문제다.

사실 이런 말을 하기 전에, 자의가 아닌 경우로 늦어지는 것은 개발자 입장에서 보면 비일비재 하다.

개발 집중기간인데도 불구하고 수시로 디자인, 기획이 변경되는 일이 벌어지면 어쩔수 없이 일이 미뤄지고 QC(품질관리)시간을 까먹으면서 일을 진행하는 현실이 있는 것은 맞다.

“그런데 말입니다…… “

Image: https://www.youtube.com/watch?v=JcdGpjEdOCo
Image: https://www.youtube.com/watch?v=JcdGpjEdOCo

개발 기간 내에 디자인이나 기획의 변경이 예상되는 상황에서 ‘어차피 기획이나 디자인이 추가될 것이니 나도 늦게 하겠다.’ 라고 생각하는 개발자들이 실제로 있다.

변경이 예상된다면 그 만큼 상황에 맞춰서 빨리 한다던가 그 부분만 프로토타입으로 미리 틀을 잡아놓는 다던가하는 식으로, 최우선적으로 무언가 방안을 마련해 놓아야 정상적인게 아닌가?

기획자나 디자이너를 골탕먹이기 위해서 사표를 미리 써놓고 작전을 진행하는게 아니라면 결국 일을 미룸으로써 생기는 댓가는 당신의 팀장이 치뤄야한다. 당신의 팀이 할 수도 있는 고생을 용인하며, 의도했다면 당신은 이미 중증의 나쁜 프로그래머라고 단언할수 있겠다.

개발자의 일은 프로젝트의 마감과 밀접하게 연관되어 있을 수 밖에 없고 기획이나 디자인 파트에서 수정을 요청하게 되는 사안은 실제로 개발되어지는 실물이 완성본에 가까워 지면서 상상하던 것과 괴리가 있거나, 혹은 현재 개발진들의 기술적인 능력에 따라서 차이점을 발견했기 때문이다.

유능한 기획 파트나, 디자인 파트라면 미리 파악하는 능력이 특출난 경우가 있어 미연에 방지하거나 혹은 기간을 줄일 수도 있다. 개발진에서도 그러한 기획과 디자인 단계에 능동적으로 개입하여 시행착오를 줄이는 방법을 시행할 수 있다. (사실 이렇게까지 해도 ‘부사장님 지시사항입니다’라는 말 한마디로 다시 뒤집어 엎어야 하는 상황도 있다는 건 안다. 그런건 부사장을 욕하자. 어쩔수 없잖아…? )

하지만 시간에 매우 관대한 (나쁜)개발자들의 경우에는 기획과 디자인 개입을 매우 꺼린다.

당연하게도 기획과 디자인에 개입한다는 것은 그들(기획,디자인)의 타임테이블에 자신이 맞추어야 한다는 의미이기 때문에 당장 내 프로젝트에도 시간을 못 맞추는 판에 그게 가능하리라 아무도 생각하지 않는다.

‘왜 개발자가 기획과 디자인에 개입해야 하는가’라고 반문이 있겠다. 프로젝트는 팀플레이지 않는가…승리하기 위해서는 서로 유기적이고도 능동적인 지원이 필수다. 그렇게 해서 성공할수 있다면 그렇게 해야하는게 맞는게 아닌가?

시간을 못 지킨다는 것은 (이 글에서의 나쁜 프로그래머는 지킬 의지가 없다는 것에 가깝다.) 기획이나 디자인 파트에서도 노답인 상황인 것은 마찬가지지만, 개발파트에서는 정말 너~~~무 너무 너무 심각한 상황일 수 밖에 없다.

개발자의 개발 능력이라는 것은 ‘어떤 방식으로 개발이 가능한가’라는 것이 우선적인 요소가 아니라 ‘얼마의 기간 안에 완성이 가능하냐’라는 시간 제약의 요소가 더 큰 비중을 차지한다. (애초에 ‘개발이 가능하냐’라는 말은 ‘상식적인 기간 내에 개발이 가능하냐’라는 말과 동일하다!)

가끔 ‘개발 기간이 의미가 없다’라는 말을 하는 양반들이 있다. ‘시간을 들이면 들일 수록 안정화되고 질 좋은 결과물이 나오게 된다’라고 생각하기 쉬운 데, 그것도 상식적인 시간 내에서나 말이 되는 소리다. 14년 걸려서 나온 FPS게임 ‘듀크 뉴캠 포에버(Duke nukem forever)’가 그 당시 수준으로 100배 안정화되고 질좋게 나왔던들 14년이 걸렸는데 그게 무슨 의미가 있을지, 난 알 수가 없다.

이미지: Duke nukem forever
이미지: Duke nukem forever

시간 늦는 것을 아주 당연하게 느낀다는것은 개인적인 사견으로는 싸이코패스와 큰 차이가 없다고 생각한다. (본인 밖에 모르고 주변 사람들의 피해따윈 안중에도 없고 사회성이 결여된!)

비단 개발자가 아닌 다른 업무의 종사하는 이들에게도 시간관리는 매우 중요하다. 늦을 수 밖에 없는 상황에 놓여있다 하더라도 그것을 최소화 하려는 노력이 중요하다.

당연히 늦을 것이기 때문에 혹은 나는 원래 늦게 하는 사람이니까,
다들 나를 기다려주니까…

이와 같은 상황에 안주해버린 조직과 개발자에게는 미래가 있다고 생각하는 것인가? 기업에게 있어서 시간개념이 없다니!!! 당장 그렇게 생각하는 개발자가 있다면 회사는 즉시 짤라 버려라. 혹시 회사가 그런 개발자를 대안이 없다는 이유로 방치하고 있다면 그 회사에서 빨리 나와라. (그걸 보고 있는 당신도 당연하게 시간의 중요성을 잊어버리고 있을게 분명하다.)

늦는 다는게 당연하다는 건 어디서부터 잘못됐다고 말하기에 이미 너무 멀리 와 버린 것은 아닐까…겨우 시간 약속 하나 안지키는게 뭐 어떠냐고?( 겨우? 겨우? ) 아주 기본적인 약속을 안 지킨다는 것을 말하고 있는 것이다.

못 지킬 약속은 애초에 하지를 말고 약속을 했으면 최대한 지키려고 발버둥 쳐야한다. 그게 세상에 있는 개발자뿐 아닌, 모든 사람들의 존재이유 아닌가?

크리에이티브 커먼즈 라이선스