티스토리 뷰

음, 제목이 좀 자극적이려나요..

컴퓨터 프로그래밍을 어려서부터 해보았고.. 40이라는, 젊은 나이라고만은 할 수 없는 지금까지의 경험 위주로 좀 비관적인 이야기를 해 볼까 합니다.
사실, 컴퓨터 프로그래머는 대우를 받아야 하며, 대우를 받는 직업일 것으로 예상되었지만.. 현실은 그 반대네요.
몇가지 가설을 세우고, 그에 대한 생각을 읊어보려 합니다. 물론, 조금은 나아졌으면.. 하는 바램이 있긴 하지만 별 기대는 하지 않습니다.


1. 영어권 국가가 아니라서?
  사실, 세계공용어는 한글이 아니라 알파벳이며, 일반적으로 영어가 두려운 우리는 영어를 쉽게 읽는 사람들과의 경쟁에서는 뒤쳐질 수 있다고 생각합니다.
  물론 영어를 쉽게 접하기 위한 여러가지 훈련을 하지만, 네이티브와는 아무래도 차이가 나지요.
  근데 이건 그리 큰 문제는 아니지요.. 네이티브 영어권 외국인이 한국에 와도 비슷할걸요?


2. 프로그래머와 비 프로그래머의 인식 차이
  사실, 프로그래밍이라는건 눈에 보이지 않는 건물을 세운다고 생각하면 거의 비슷한 이미지인것 같습니다.
  실제로 건축에도, 소프트웨어에도 Architect라는 타이틀을 가진 사람이 있죠.
  최근에는 오픈소스라는 자재가 있어서 사용을 하기도 하고요.
  각종 툴들 역시 많이 좋아졌습니다. 지금 우리 사회에서도 셀프인테리어를 하는 분들이 많이 생겨났죠.
  그런데, 웬지 프로그래머에 대한 인식은 사무직 정도로 인식되는것 같습니다.
  또, 아무런 대화도 없이 프로그래머가 클라이언트의 계획을 전부 알고 있을거라 생각하는 분들도 계시죠..
  프로그래밍은 건물을 세우는거랑 비슷하다고 했지요.
  건축에서 가장 중요한 작업은 설계죠?
  그런데, 이상하게도 소프트웨어 직군에게는 그 설계를 위한 인식 자체가 없습니다.
  탭 카운팅* 한계조율도 안 하죠.
  클라이언트가 계획한걸 프로그래머가 예측해서 때려맞춰야 하는 이상한 상황이 많이 나옵니다. 심지어 그 계획은 매우 추상적이죠.
  컴퓨터는 확실히 구체화된 내용이 아니면 받아들이지 않습니다. 아, AI가 한 스카이넷 정도로 발전한다면 모르겠군요.
  결국 추상적인 내용을 구체화하는것도 프로그래머의 역할이죠.
  운이 나쁘다면, 같은 일을 수십 번씩 하기도 합니다. 욕을 먹어가면서요.
  자, 여기서 또 욕을 먹는건 또 뭐냐.
  추상적으로 며칠이면 끝나겠지. 하는 것, 이 부분은 특히나 개발자 출신 클라이언트 역시 비슷합니다.
  프로그래머의 일은 대부분 한번에 끝나지 않습니다. 설계를 잘 했다면 전체를 재작업 할 일은 많이 줄어듭니다만, 위에 이야기했죠. 좋은 설계에 대한 인식 자체가 없다고.
  뭐, 건설업체가 그렇듯, 설계도 하나로 계속 우려먹잖아요? 이쪽도 마찬가지이긴 한데, 집은 좀 이상해도 맞춰 살거나 하지만, 프로그램은 꼭 클라이언트의 마음에 들어야 합니다.
  건물과 달리, 실제 사용에 대한 댓가가 극히 낮죠. 건물은 몇십억이 들어가지만, 프로그램은 컴퓨터 한대만 있으면 되니까요.


3. 그놈의 일정, 일정.
  프로그래머들은 건축가 대접이 아니라 사무직 대접을 받는다고 했지요.
  다들 단순 사무직으로 생각하나 봅니다. 필사같은 작업이라면 당연히 시간당 몇페이지가 가능한지 바로바로 나오죠.
  그런데 이쪽 일은 시도때도 없이 충돌이 일어납니다. 한가지 기능만 추가하는데 뭐 그렇게 오래 걸리냐는 소리를 정말정말 많이 들어봤습니다.
  일을 시작하게 되면, 항상 물어보는게, 얼마나 걸리냐..
  하드웨어는 그나만 좀 덜한것 같지만, 소프트웨어는 진짜 뭘 어떻게 설명을 해야 할 지 모르겠고, 설명 해도 못 알아들을 가능성이 높죠..
  지금까지의 경험을 토대로 해서 이야기하면 돌아오는 소리는 왜 그렇게 오래 걸리느냐입니다.
  그리고 세부항목을 달라고 합니다.
  솔직히 프로그래머가 제일 짜증나 하는 일입니다.
  이놈의 고무줄같은 일정 어떻게든 픽스하고 싶은건 클라이언트보다 프로그래머쪽입니다.
  그래서, 여러가지 문제가 발목을 잡을 것을 예상해서 제출을 하면 에러가 왜 생기냐며 그 항목을 삭제합니다.
  예전에는 별로 그런게 없었지만, 최근에는 각 항목을 딱딱 분리하기가 힘듭니다.
  여기저기 연결되어 있어서 어디서 문제가 발생할지 가능성을 파악하려면 또 시간이 걸립니다.
  그래서 프로젝트중에 언제까지 될 것 같냐는 소리를 제일 싫어하게 됩니다. 노이로제처럼 반응하는 분들도 있을겁니다.
  솔직히 남은 시간 예측은 하나의 별도 업무로 봐야 할 만큼 어려운 일입니다.
  프로그래머들은 사장님들한테 투자 언제 받을 수 있을 것 같냐고 안 물어보잖아요.
  사실, 故 스티브 잡스는 승질이 엄청 급했다고 합니다. 웬만한 분들은 알고 계실테지만, 금방 될 줄 알았던 클릭 휠(조그 다이얼)에 전원 연동 작업에 8년을 투자했다고 합니다.
  잘 모르는 분들이 보기엔 너무 간단하잖아요. 근데 그걸 8년이나? 말도 안 되는 이야기 같지요?


4. 포괄임금제
  이건 프로그래머 직군 외에도 해당되는 이야기겠습니다만, 밤샘작업을 한다고 시간이 얼마나 땡겨지겠습니까?
  현실은 오류 발생 빈도만 높아지지요. 자주들 하는 이야기가 졸음운전은 음주운전보다 위험하다고 하지요?
  그런데 왜 일하는데는 그걸 적용을 안 하는지 모르겠습니다.
  특히 프로그래머 직군은 일 하는 시간이 짧으면 짧을수록 효율이 더 잘 나오는 직군인것 같지만..
  어쨌든 한국은 예외인것 같습니다.
  어차피 엄청 열심히 일을 하건 아니건 간에 걍 앉아서 노는 걸로 다들 생각하니까 말이죠.


5. 못 배워서?
  모든 사회 문제를 교육 문제로 돌리는것도 나쁘지는 않습니다만, 사실 제가 보기에 프로그래머를 비롯한 공과 직군에게는 좀.. 주입식이라고는 하지만, 고등교육 대부분이 대학 교육의 필수과목이기 때문에 교육탓을 하기는 좀 애매하다고 생각합니다.
  그리고, 컴퓨터 언어 교육같은 경우 정규교육이 아니더라도 굉장히 많은 레퍼런스가 있고, 관심만 있다면 충분히 배울 수 있다고 생각합니다.

 

* 탭 카운팅 : 유저가 필요한 액션을 하기 위해 몇 번 탭을 해야 하는지 세어보는 것. 미국의 앱 개발회사중에는 아예 탭 카운팅만 따로 하는 QA가 있다고 합니다.