2004년 6월 28일 월요일

프로그래머에게 필요한 환경들

좋은 툴이 주어진다면 일의 효율이 많이 올라가는 것은 사실이다.
물론 필요이상으로 큰 모니터라든지,
쓸데없이 키보드나 마우스를 여러개 준다고 해서 타이핑이 더 빠르게 되는 건 아니지만
세심한 것들만 바꿔도 향상되는 경우도 있다.
집중하고 조용한 환경에서 프로그래머가 집중할 수 있게 해주는 것도 필요하고 말이다.


너무 자주 일의 진행에 대해 물어보거나
준비안된 상태에서 회의나 세미나를 하거나
뭘 해야할지 모르고 마냥 기다려야 할 때,
일을 하려는 데, 자꾸 옆에서 커피를 마시거나 잡담을 시킨다거나 하면
괴로울 수 밖에 없다.


회사에서는 프로그래머를 공사장에서 벽돌 나르는 사람과 별 다르게 취급하지 않는 것 같다.
단지 벽돌을 나르느냐 키보드를 치느냐, 월급을 얼마주느냐의 차이 정도로 밖에 생각하지 않는 다.
하지만 프로그래밍은 벽돌 나르기와는 조금 많이 다르다.
작업의 난이도가 높고 비슷한 경력과 팀에 소속되어 있더라도 숙련도나 개인의 능력에 따른 차이도 10배 이상 된다.
(비슷한 월급을 받아도 작업에 따라서는 10배정도 효율적인 사람도 존재할 수 있다.)


한 번 집중이 깨어졌을 때, 그것을 만회하고 다시 원래의 context를 회복하는 데
최소한 15~30분 정도 걸린다.
(context는 심리적인 mood 뿐만아니라. 배경지식, 단기기억, 현재 작업해야 하는 위치를 찾아내는 것,
 reference page, computer system의 구동 및 과거 상태 복원(resume, load) 등을 모두 포함한다.)


요즘 내가 하는 일 같은 경우는 적절한 성능의 서버가 좀 더 많이 주어진다면
2~3배정도 일을 빨리 해낼 수 있을 것 같다.
(parallel하게 프로그램을 돌릴 수 있어서 대기 시간을 줄일 수 있다.
내가 요즘하는 일의 대기 시간은 12~36시간이다.)


그리고 다른 팀원들이 정량적인 소요시간 예측과 투명한(명확하고 확실한) data와 module을 제공한다면
trial & error 시간을 줄여서 2배정도 더 단축 할 것 같다.
기본적인 data schema나 data의 제약조건 등도 주지 않는 다.
그냥 파일 하나 던져주고
"여기 있으니, 필요한 것 다 준 셈이다. 넌 꼬마가 아니니 필요한 건 네가 직접 알아내라." 라는 식이다.
(내 생각에는 내 숙련도의 문제라기보다는 그들의 비효율적인 communication 이라고 생각한다.)
그럼 나는 상당한 시간을 쓸데 없는 퍼즐을 푸는 데 소모해야 한다.
sort가 된 자료인지 확인하는 데 몇 시간을 써야 하고 (data가 너무 크다.)
delimiter를 찾기 위해 시간을 쓰고 (공통된 library도 아닌 곳이 있고 delimiter도 맘대로.)
data가 consistant하지 않기도 한다. (consistant한 data의 정의도 없다.)
invalid한 data가 포함되있으면 프로그램이 돌다가 중간에 죽기도 한다.
6시간 동안 돌다가 죽어서 처음부터 다시 돌리는 짓을 2번만 해도 하루 이상 손해다.
그 외에 쉽게 찾을 수 없는 작은 조건들(문자 길이 제한, data의 frequency 제약 등...)은
찾을 수 조차 없다.(not computable) 그것들은 그들의 모듈에서는 하찮은 조건이지만
모듈의 다음 단계에서는 시간 추정을 위해 상당히 중요한 factor일 수도 있다.
그리고 앞 모듈의 도움 없이는 계산 불가능한 factor들도 있다.
이런 factor들이 하나씩 늘어가면서 module과 data는 불확실(불투명, unpredictable)해지고
내가 해낼 수 있는 가능성의 범위가 점점 줄어든다.


팀에 몇 번 이야기 해봤는 데.
"불평하지 마라.", "그게 왜 불만이냐? 다들 그렇게 해왔다.", "넌 아직 숙련되지 않았다.",
"바빠서 그런 것 할 시간이 없다.", "priority가 돌아오면 해주겠다. 지금은 10~20위 바깥의 일이다."
라고 말하고 있다.


서버는 예산 문제로 얼른 들어 올 수 없다고 했다.
(싼 서버를 쓰고 있지만 내 월급보다 훨씬 비싼 게 사실이다. 그들에게는 서버 구매 비용이
 나같은 하급 프로그래머 한 명이 몇 달의 시간을 소모하는 것보다 비싸다고 판단하고 있다.)
-> 연봉은 한 사람이 얻는 경제적 이득만을 나타내는 것이 아니다.
    그것은 그 사람의 가치를 나타내는 것이고 또한 발언권의 크기를 나타내기도 한다.
    내 책임과 권한보다 훨씬 큰 일이라면 회사에 도움이 되는 의견을 내고
    발언권이 적어서 받아들여지지 않는 경우가 더 많다.


그들에게 내 자신의 가치와 방법이 효율적임을 증명하는 방법은 내 프로덕트가 돈을 많이 벌어다 주게 하는 건데.
사실 내가 하는 방법이 3개월 안에 그 효과를 발휘할 수가 없다.
(난 효과를 1~2년 정도로 잡고 있다.)
그리고 효율적으로 해봤자, 적절한 measure 도구가 없기 때문에 평가되지 못할 가능성도 크다.
유학가서 좋은 대학원의 학위를 받아오면 믿어줄 것 같다.
(뭐 그 정도 좋은 대학원에 가게 된다면 진대제씨 정도의 대우를 받기 전에는 절대 이 나라로 돌아오지 않겠지만..)

댓글 없음:

댓글 쓰기