Posted by YoungMoon
:

프로그래머로 살아남기라는 제목부터가 심상치 않다. 느낌이 좋지 않을 수도 있다. 도데체 프로그래머란 직업이 어떻길래? 라는 의문이 강하게 와닿을 것 같다. 사실 현직 프로그래머에게는 가장 민감한 주제라고 볼 수 있다. 적어도 필자에게는 그랬었다. 그래서 그것을 다루기가 매우 조심스럽다. 왜냐하면, 정답이 없이, 보편적인 결론을 내릴 수 밖에 없기 때문이다.

“프로그래머로 오랫동안 살아 남을 수 있을까?” 라는 고민은 현직 프로그래머라면 누구나 한번쯤 해보는 생각일 것이다. 그들 스스로도 프로그래머의 라이프사이클이 존재한다고 말하기도 한다. 그리고, 3~4년차 프로그래머들은 자신의 다른 미래를 준비하기도 한다.
프로그래머란 직업이 어떤 것인지! 모든 것을 알려준다는 지식인에서 검색해보자. (정말 정확한 정보를 알려주는 것인지는 천천히 생각해보자.) 상당히 비관적인 답변들로 가득 채워져 있을 것이다. 대충 이런 내용들이다.

첫번째는 프로그래머는 3D 업종이라는 것이다. 모르는 사람들이 보면 컴퓨터 앞에 앉아서 키보드나 두드리며 하는 일이 편하지 않겠냐고 오해를 한다. 하지만, 다시 생각해보면, 프로그래머는 몸으로 일을 하는 것이 아니라, 머리로 일을 하는 직업이다. 하루 종일 전자파가 가득한 공간에 앉아서 머리를 굴려야 한다고 생각해 보자. 정말 힘든 일이 아닐까?

두번째는 박봉이라는 것이다. 프로그래머라는 직업을 동경하는 나이어린 친구들이 많을 것 같다. 그런 친구들에게 제일 먼저 해주고픈 이야기가 있다. 프로그래머는 결코 고수익을 보장하는 직업이 아니라는 점이다. IT강국이라는 화려한 수식어 뒤에는 박봉에 힘들어하는 기술자들이 있었다는 것이다. 밤을 새며 일하는 직업의 대명사로 프로그래머를 떠올린다. (또 하나 있다. 편견일지 모르지만, 작가라는 직업도 그런 것 같다.) 하지만, 사실 일은 정상적으로 해야한다. 밤을 새며 일하게 만들고도 박봉에 시달리게 한다면, 이는 매우 바람직하지 못한 것이다.

세번째는 수명이 짧다는 점이다. (오해는 하지 않았으면 좋겠다.) 잘 모르는 중견 간부들은 이런 소리를 하기도 한다. "프로그래머를 나이 35 넘어서도 할꺼냐?" 라고.. (35이라는 숫자에 큰 의미는 두지 말았으면 좋겠다. 그냥 예를 든 것이다.) 다시 말해서, 프로그래머는 젊었을 때의 한때 직업이라는 생각들을 한다는데에 문제점이 있다. 이런 사회적 관념과 더불어 개인적으로도 어려운 점이 발생한다. 현실적으로 나이가 35정도가 되면 보통 가정이 있고, 아이들이 생긴다. 생활을 보장해 줄 수 있는 수준의 연봉이 따라주어야 한다는 것이다. 보통 이 과정에서 프로그래머를 많이들 그만둔다.

세가지 정도 프로그래머로 살아가는 에로사항들을 적어보았다. 과연 사실일까? 필자도 프로그래머란 직업을 5년 정도 달고 다녔다. 사실 위 세가지는 필자가 가졌던 고민들이었다.
(프로그래머라는 직종은 참 많은 분야로 세분화 될 수 있다. 그리고, 현직에서 프로그래머로 종사하는 분들도 꽤 많은 숫자일거라 짐작한다. 위 내용은 필자 스스로의 주관적인 생각일 뿐 전체 프로그래머의 입창을 대변하는 것은 아니라고 말하고 싶다.)
정말 매우 우울한 일이 아닐 수 없다. 마치 프로그래머를 직업으로 삼고자 하는 사람이나, 새내기 프로그래머들에게 빨리 그만두라고 이야기 하는 것 같다.

프로그래머의 몸값은 프로그래머가 결정한다.

자신의 가치를 너무 저가로 쳐서 도매로 넘기지 말라는 것이다. 구인구직 사이트를 보면 참 황당할 때가 많다. 어느 기업에서 프로그래머를 뽑는다. 이것저것 자격사항을 적어놓았다. c/c++, java, delphi, web 프로그래밍까지 다 할 줄 알면서 연봉은 1600을 주겠다고 적어놓았는데, 그래도 구직자가 넘쳐난다. 한 1~2년 정도 하면 저것들을 다 마스터해서 잘 할 수 있을까? 결코 아니다. 실제로 저 정도의 실력이 된다면 연봉 1600은 어림도 없는 일일 것이다. 자신의 몸값을 낮추는 일은 다른 프로그래머에게도 피해를 끼치게 된다.
우리나라에서 프로그래머라는 직업은 상당히 중요한 의미를 가진다. 천연자원이 부족한 국내 산업 여건을 살펴볼 때, IT산업은 주요 수익원의 한 부분이 됨과 동시에 해외 경쟁력부분에서 한 축을 담당한다. 모바일 프로그램의 경우도 전세계에서도 상위권을 지키고 있다는 자부심을 가져야 한다. 때문에, 우리나라를 위해서라도, 실력있는 프로그래머들이 헐값이 넘겨지고, 사라지게 되는 일은 막아야 한다는 것이다.
필자는 개인적으로 국내 프로그래머의 힘을 한데 모을 수 있는 협회 같은것이 있었으면 좋겠다라는 생각을 한다. 그래서 프로그래머들의 능력에 맞는 적정한 연봉에 대한 기준을 제시하고, 프로그램 개발에 대한 비용도 현실화 해서 제시하자는 것이다. 또, 프로그래머에 대한 자격기준을 자체적으로 세워서, 그들의 실질적인 가치를 평가하고, 교육까지도 가능하게 하는 공인된 기관을 설립하는 것이다. 지금처럼 정보처리기사 하나 땄다고 해서 어떤 평가가 가능하겠는지 생각해 봤으면 좋겠다. 이력서에 한줄 넣어봤자 도움되지 않는다. 좀더 세분화되고 현실적인 체계가 필요하지 않을까?

꼭, 하고 싶은 이야기가 하나 있다. 프로그래머끼리 서로 죽이지 말자는 것이다. 예를 들어 사장님이 나에게 하나 물어보는 질문이 있다. 어떤 회사에 1000만원을 주고 개발을 맏겼는데, 좀 봐달라는 내용이다. 그런데 내가 보기에 그리 싸게 주고 한것 같지는 않고, 기능도 조금 못미치는 것 같다. 그럴때 어떻게 이야기 하겠냐는 것이다.

A : 프로그램 만드는데, 돈들일 필요 있나요? 그냥 한 200주고 아르바이트 쓰시죠..
B : 이거 너무 허접한데요. 너무 비싸요. 한 500은 깎을 수 있겠습니다.
C : 프로그램은 괜찮게 만든 것 같습니다. 그런데 만약 제가 만든다면, 이부분을 보완해서 좀 더 완성도 있게 만들 것 같습니다.

답변을 꼭 어떻게 하라고 가치관을 강요하는 것은 아니다. 하지만, 중요한 것은 내가 말한 내용이 부메랑이 되어서 나에게 되돌아 온다는 사실이다. 잊지 말았으면 좋겠다. 아무리 초급기술이라고 해도 분명 가치가 있는 것이다. 프로그래밍의 가치를 스스로 깎지 말자. 단 한줄의 스크립트 코드라고 할지라도, 그것을 공부하기 위해서 얼마나 많은 시간들을 보냈는지! 거저 얻은 것이 아님을 되돌아 보자는 것이다.
최근 인터넷을 찾아보면, 홈페이지 무료로 만들어 준다는 곳도 있고, 한 100만원 받고 해준다는 곳도 있는 것 같다. 과잉 경쟁과, 웹기술자가 넘쳐나다보니 나오게 된 현상이다. 100만원으로 어떤 사이트를 만들 수 있을까? 적어도 하나의 홈페이지를 만들려면 기획자, 웹프로그래머, 웹디자이너 이렇게 세명 정도는 한팀으로 있어야 한다. 한 한달 작업한다고 치자. 세명이서 한달동안 일해서 100만원을 나누어 가진다고 하면, 누가 하겠는가? 보나마나 원맨밴드로 작업을 하던가, 기존에 만들어 놓은 템플릿에 내용만 약간 바꿔서 쓰는 꼴이 아니면 계산이 나오지 않는다.
개발비용을 산정하는 데에 있어서, 가장 나쁜 습관이 개발기간을 기준으로 삼는 방식이다.
고급 기술자는 1일이면 만들 수 있지만, 초급 기술자는 7일 걸려야 하는 경우가 있다. 이럴 경우 1일에 만든다고 해서 하루 일당을 쳐서 준다는것은 말이 되지 않는 것이다.
개발비용은 개발내용을 전제로 산정되어야 한다. 또한, 그 내용 안에는 유지보수에 대한 부분까지 고려되어 산정해야 한다. 프로그래밍 프리랜서들이 실수하는 부분중 하나가 바로 이부분이다. 한 일주일 정도 걸릴 것 같아서 싸게 만들어 주었는데. 1년 내내 전화가 오면서 이것저것 고쳐달라고 하는 경우가 있다. 괜히 했다는 후회가 바로 가슴을 내리 꽂을 것이다.

돌아보지 않는 자는 도퇴된다.

가장 중요한 일인 듯 싶다. 일에 치어서 바쁘게 살다보면 공부할 시간이 없다. 하지만. 결국 그건 제 살을 깎아먹는 일이 되고 만다. 아무리 바빠도 그 안에 나의 시간을 집어 넣어야 한다. 그리고, 그 시간에 공부를 해야한다. 공부하지 않는 프로그래머의 수명은 채 2년을 넘기기 힘들다. 좀더 길게 보면 한 3~4년 정도 될지 모르겠다.
공부를 하는 것과 함께, 자신만의 템플릿을 만들어 놓는 것도 좋은 방법이 된다. 아마도 많은 현직 프로그래머 분들은 이렇게 하고 있을 거란 생각이 든다. 개발일지를 작성하고, 버그리포트를 만든다. 이런 문제는 이렇게 해결했다는 것을 언제든 찾아보기 쉽게 정리하는 습관을 들이자. 개발기간을 줄이는 한 방법이 될 것이다.
프로그래머란 직업은 결코 가늘고 길게 사는 직업이 아니다. IT의 동향에 민감하게 반응하고, 민감하게 대처해야한다. 그렇게 실력을 쌓다보면 나도 모르게 고수가 되어있음을 느끼게 될 것이다. 인정받는 프로그래머가 되면, 프로그래밍과 함께 컨설팅, 교육, 출판 등 다양한 부분에서 발을 넓힐 수 가 있다. 그만큼 살아갈 수 있는 영역이 확보되는 것이다.

즐기며 나만의 것을 만들자.

프로그래머를 선택하는 사람들 중 많은 경우가 프로그래밍을 좋아하기 때문일꺼라고 생각한다. 좋아하는 일은 바로 잘하는 일이 된다. 나의 일을 좋아하자. 그리고, 틈틈히 나만의 프로그램을 만들어보자. 만들어서 인터넷에 배포도 하고, 공개도 해보자. 괜찮은 프로그램이라면, 짭짤한 수입원이 될 수 도 있다. (물론 경우에 따라 틀리다.) 이렇게 하다보면 좀더 보는 시야가 넓어질 것이다. 많이 생각하고, 많이 고민하자.
또한, 중요한 것은 창조적인 프로그래머가 되어야 한다는 것이다. 기획자가 넘겨주는 기획문서 하나에 의존하며, 코더 라는 기분 나쁜 소리를 들을 것이 아니라, 내가 직접 기획자의 영역까지도 소화할 수 있는 그릇을 만들자라는 것이다.

외국어를 하나 이상 공부하자.

누군가 그런 질문을 한 적이 있다. 프로그래밍을 공부하고 있는데, 그 외에 더 어떤것을 해야하냐는 것이다. 자격증을 따는 것은 어떨까라고 고민중이라는 것이다. 자격증을 따는 것이 바로 취업과 연관되는 것은 아니지만, 평가에 도움을 줄 수는 있다. 그런데 필자의 생각엔 거기 까지가 끝인것 같다. 회사를 들어갈 때는 도움이 될지 몰라도, 들어가고 난 이후에는 전혀 무용지물이 되어버리는 것이 자격증이다. 그래서 외국어를 공부하라고 권유하고 싶은 것이다.
외국어 한가지라도 회화가 가능한 정도가 되면, 회사를 다니면서 있을 수 있는 좋은 기회, 또는 프리랜서로서 어떤 영역을 확보하고자 할 때에 분명 큰 도움이 된다. 뿐만 아니라, 다른 부서의 사람들로부터도 인정을 받을 수 한 부분이 된다. 기회는 갑자기 다가오지만, 그 기회를 잡는 사람은 평상시 꾸준히 준비한 사람만이 잡을 수 있다. 눈앞에 다가온 기회를 조건이 안되서 놓치게 되는 그런 불상사가 생기지 않기를 바라는 마음이다.
프로그래밍 하는데 있어서, 외국어가 무슨 필요가 있느냐고 반문하지 않았으면 좋겠다. 중요한 초창기 기술문서는 모두 영어로 나온다. 내가 크고자 한다면, 다른 사람들보다 한줄이라도 먼저 보아야 하지 않을까?

몇가지 필자의 생각들을 적어보았는데, 어떻게 받아들였는지 모르겠다. 프로그래머로 살아남기라는 주제에 대하여, 공부해야 한다. 그리고 프로그래머로서 할 수 있는 나의 영역을 넓히라는 말로 결론을 지었다. 나는 아직도 프로그래머가 좋다. 아직도 공부해야 할것이 산더미 처럼 쌓여서 더욱 좋다. 점점 내공이 쌓여가는 모습을 스스로 만족해 하며 살아가는 것이 나는 아직도 정말 즐겁다. 이제 프로그램을 시작하려는 분들께 말씀드리고 싶은 것은 어느 직업이든 상위 30% 안에 들도록 노력해야 한다는 것이다. 아직 멀고 험난한 길 인 듯 보이지만, 누구나 쉽게 딸 수 있는 열매는 맛이 없는 법이다.

Posted by YoungMoon
:

수영하다가 우연히 발견한재밌고 알찬 내용이네요.

마치 실연이후 길거리에 들리는 유행가 가사가 마치 내맘을 대변해주는 듯 착각과 같은 느낌.

챙파가 11년동안 키보드 두둥기면서(이젠 기획이나 PM역할을 하지만) 공감하는주요 내용에 밑줄긋습니다. 근데 다 밑줄 그을듯.ㅎㅎ

1. 정보모음에 소홀히 하지 말고 설명서를 읽음에 게을리 하지 말지어다. 오늘 필요 없는 정보는 내일 필요하리라. 가장 가치 있고도 저렴한 지식은 책 속에 있느니라. 서점과 동료의 책꽂이에 무엇이 꽂혀 있는지 때때로 살피어라. 무심코 흘렸던 종이 한 장이 너의 근심을 풀어 주었으리라. 설명서는 충분히, 꼼꼼히 읽을지어다. 모든 의문은 설명서를 안 보는데서 생기니라. 그렇더라도 모두 다 읽을 필요는 없느니라. 많은 정보가 능사는 아니니라. 정보의 가치를 찾는 법부터 배우라. 세상엔 너무나 많은 자료와 정보가 넘쳐난다.

알알이 모두 끌어 모을 생각을 하기 보단 정보를 하나로 꿰는 법부터 먼저 배우는것이 너의 근심에서 쉽게 벋어나게 하는 방법이 되리라. 일을 시작하기전에 필요한 정보를 꼼꼼히 먼저 챙기는 법부터 배워라. 너희는 먼저 개발 의뢰서를 꼼꼼히 읽을지어다. 만약 개발 의뢰서가 없다면 발주자에게 요구할 지어다. 개발 의뢰서 없는 프로그램은 존재하지 않으니라.


2. 너의 PC가 안전하다고 믿지 말지어다. 5분 후에 정전이 되고 내일 너의 하드가 맛이 가리라. 그러니 너의 소중한 소스코드는 정기적으로 여러 군데에 단계별로 백업해 두어라. PC는 평상시엔 안전하다. 그런 실수를 저지르는것은 네자신이거나 아니면 외부적인 요인에 기인한다. 항상 백업을 철저히 해두며 백업에 백업까지도 챙겨두라.그리고 백업을 했다면 리스트를 작성하라. 쓸데없는 백업은 백해 무익하나니 리스트를 항상 유지할 지어다. 너희는 노트를 옆에 끼고 살 지어다. 노트는 너의 생명이며, 너희가 기억하지 못하는 모든것을 상기시켜 줄지어다.


3. 변하는 수를 다룰 때에는 늘 조심할지어다. 정수가 절대로 그 한계를 넘지 않으리라 가정하는 것은 어리석음이라. 127 ,-128 ,255 ,32767 ,-32768 ,65535, 이 숫자들을 너의 골수에 새기어라. 0.0은 0이 아니니 실수는 원래부터 결코 정밀하지 않느니라. 부호 없는 것과 있는 것을 어울리거나 정수끼리 나눌 때에는 늘 조심하여라. 변수는 프로그램의 근원, 프로그램을 작성할때 가장 유의 할것이 바로 변수의 이름 짓기니라. 이름보고도 성격을 알 수 있게 해두라. 그러나 변수는 성질이 드러우니 변수에 성격을 부여할때는 조심스럽게 할지어다. 너희는 코딩하기 이전에 계획을 할 지어다. 이는 프로그래머가 코더가 아닌 것이니라.


4. 무슨 일을 반복시킬 때에는 처음과 끝에 유의할지어다. 너의 컴퓨터는 1보다는 0을 좋아 하니라. 배열의 첨자가 그 범위를 넘지 않을지 손 댈 때마다 따져 보아라. 수식에 1을 더하거나 뺄 때에는 늘 긴장하라. 너의 프로그램은 단지 한 번 덜해서 틀리고 한 번 더해서 다운되느니라. 프로그램을 작성할땐 계산, 판단, 비교를 그 모든걸 컴에게 되도록 맡기지말라. 네손으로 미리 계산하고 그 결과를 사용하는 방법이 최선이니라. 컴퓨터는 의지가 없나니 네가 잘못하든 잘하든 아무런 상관이 없느라. 너희는 머리가 악세사리가 아님을 기억하고 항상 생각하고 항상 노트에 적을 지어다.


5. 항상 모든 경우의 수를 고려하고 섣불리 생략하지 말지어다. 절대로 없어 나지 않을 일은 반드시 일어나고, 가장 드물게 일어날 일이 가장 너를 괴롭히리라. 그러하니 언제나 논리에 구멍이 없는지 꼼꼼히 따져 보고, if를 쓸때에는 else 부터 생각하라. 논리적인 오류는 성급함에서 생기나니 처음엔 항상 원리와 원칙을 지키라. 생각은 네가 하라 그리고 그 결과를 컴에게 시켜라. IF를 쓰기전에 규칙을 세우라. 먼저 IF의 결과에대한 규칙부터 세우고 따져라. 그리고 논리적인 계산을 IF문장안에서 하지 말라. 하나의 IF문장속에 수많은 논리연산은 버그의 원인이니라. 어느 정도의 프로그램에 대한 윤곽이 잡히면 프로토 타입을 만들지어다. 프로토타입은 프로그램에 대한 시뮬레이션이며 발주자의 요구를 빨리 수용 하는 방법이니라.

6. 함수 안에서 매개 변수값은 결코 믿지 말지어다. 지금 그 매개 변수가 결코 가질 수 없다는 값을 내일부터는 가지리라. 그러하니 매개 변수 값이 올바름을 항상 검사할지어다. 그렇더라도 처리 속도가 문제가 되는 경우는 예외이니라. 함수도 하나의 독립적인 프로그램이란것을 잊지말며, 네가 프로그램을 작성할땐 모든 함수가 돼도록이면 독립적으로 돌아가도록 할지어다. 함수의 매계변수는 항상 그옆에 작은 컴맨트와 초기화를 잊지말라. 처음부터 속도문제를 생각하지 말라. 모든 루틴을 최적화 할순 없다. 전체 프로그램중에 단 20%가 전체 실행시간에 80%를 점유한다. 프로토 타입에대한 발주자의 의견을 꼼꼼히 들을 지어다. 이는 발주자에 대한 신뢰도의 척도니라.

7. 오류를 알려 주는 기능은 있는 대로 모두 활용할지어다. 컴파일러의 경고는 모두 켜두어라. 경고는 곧 오류이니라. 오류를 알리는 함수의 결과를 확인하지 않는 우를 범하지 말지어다. 모든 파일 입출력과 모든 메모리 할당은 조만간 실패할 것이라. 컴파일러가 모든 경고기능을 동원해도 알려주지 않는 것은 많다. 중요한 건 오류가 생기기전에 규칙을 지켰는지 생각하라. 파일의 입출력과 메모리의 항당은 항상 쌍으로 생각해서 열었다면 닫아주고 활당받았다면 돌 려주라. 프로그램의 매인턴앤스를 게을리하지 말지어다. 이는 프로그램 만드는 일 보다 중요한 일이니라.

8. 한 번의 수정과 재컴파일만으로 연관된 모든 것이 저절로, 강제로 바뀌도록 할지어다. 어떠한 것을 수정했을 때에 연관된 것이 따라서 변하지 않는다면 그것이 곧 벌레이니라. 컴파일러로 하여금 매개 변수 리스트를 완전하게 검사하도록 하고 언젠가 손대야 하거나 따라서 변해야 하는 수치는 전부 매크로로 치환하며, 형 정의를 적극 활용하여라. 이미 완벽한 루틴을 손대지 말라. 프로그램이 무너지는 가장 첫번째이유는 도미노 현상 때문이나니 한번의 수정과 재컴파일로 쓸데없는것을 손대게 하지 말라. 컴파일러가 매개변수 리스트를 챙기지 말게 하라. 프로그램에 들어가기 전엔 미리 함수명과 매개변수 리스트를 만들어라. 너희는 프로그램의 도큐멘트를 만드는일에 게으르지말지어다. 이는 사용자가 너의 프로그램에 대해서는 바보이기 때문이니라.


9. 사용자가 알아서 잘 써 주리라고 희망하지 말지어다. 너의 프로그램은 항상 바보만이 쓰느니라. 사용 설명서를 쓸 때에는 결코 빠뜨리지 말아라. 빠뜨린 만큼 사용자는 너를 괴롭힐 것이니라. 사용자는 나쁜놈이다. 쓸데없는짓을 잘한다. 무식하다. 인간성도 더럽다. 대부분이 바보며 가끔 똑똑한 사람도 있는데 그 놈은 더 하다.모든것을 설명하지 말며 온갇기능을 가진 하나의 프로그램을 작성하려 들지 말라. 많은 기능이 필요한 프로그램은 나누어서 작게 따로 만들어주라. 너희는 공부하는데 게으르지 말지어다. 자고나면 새로운 하드웨어와 새로운 소프트 웨어가 나오기 때문이니라.


10. 매사에 겸손하고 항상 남을 생각할지어다. 가장 완벽한 프로그램일수록 가장 완벽하게 숨은 벌레가 있느니라. 네가 이 세상 최고의 프로그래머라고 떠들며 자만할 때, 옆집 곳간에서는 훨씬 더 뛰어난 것을 묵묵히 만들고 있느니라. 아무렴 프로그래밍은 혼자 잘나서 할 게 아니니, 너로 인해 다른 사람들도 더불어 잘 되면 그 얼마나 좋은 것이냐. 프로그래머는 논리적으로 생각하여야 하지만 프로그램은 비논리적으로 작성하라. 프로그래머가 경지에 들면 누가 누가 잘하는지 알수가 없는 법, 또한 프로그래머로서의 '무지'에 대해서 잊지마라. 프로그래머의 '무지'는 생략하고, 선택하고, 단순화시키고, 명백하게하는 것이니라. 항상 새로운 아이디어와 새로운 생각으로 무장하라. 그리고 나누라 나누는곳에 기쁨있나니 너희는 모든 프로그램에 대해서 위의 프로시줘를 따를 지니라.

Posted by YoungMoon
: