제대로 된 프로그래머가 되려면 프로그래밍 언어와 알고리즘, 자료구조 등에 대해 깊은 지식이 있어야 한다. 프로그래밍 언어만을 잘 한다고 되는 것이 아니고, 소프트웨어의 전체적인 구조를 설계하고 이해하는 능력 역시 중요하다. 이런 의미에서 단순히 지시받은 내용을 프로그래밍 언어로 옮기는 단순한 작업만을 하는 사람들은 코더(coder)라고 구분해 부르기도 한다.
뛰어난 프로그래머가 되기 위해 공부해야 할 것은 무척 넓고 광대하다. 현대에선 프로그램이 사용되지 않는 분야가 없어서 그렇다. 프로그램을 짜면서 그 분야에 어느정도 지식을 가지고 있어야 한다. 또한, 그 내용을 완벽하게 이해하지 못한다면, 능동적으로 프로그래밍하는 것은 무리다. 복사 붙여넣기야 잘하겠지만 좋은 프로그램을 만들기는 어려울 것이다.
게다가 가장 지식 공유가 활발한 직종이기도 하다. 예를 들어, 위키는 프로그래밍에 쓰이는 패턴들을 정리해기 위해서 처음 탄생했다. 또한, 모르는 사람이 모여서, 상업적인 목적으로 만든 것보다 쓸만한 물건을 만들어 내는오픈소스 프로젝트는 활발한 지식 공유 없이는 유지될 수가 없다.<tt class=\"foot\">[1]</tt><tt class=\"foot\">[2]</tt>
또한 컴퓨터 분야의 발전과 변화가 엄청나게 빠르기 때문에 어제의 상식이 구시대의 유물로 변하는 것은 금방이다. 이를 계속 따라잡으려면 새로운 지식을 받아들이는 것을 게을리해서는 안되고, 그렇지 못하면 도태될 수밖에 없기 때문에 프로그래머라는 직업을 계속하기 위해서는 많은 노력이 필요하다.
그래서 공부하기 힘든데다가 타고난 재능이 없으면 일정 수준 이상으로 올라가기가 힘들다. 조엘 온 소프트웨어에서 머리속에 프로그래밍을 담당하는 기관이 있는 사람과 없는 사람이 있다. 라고 할 정도로, 사람들 간의 실력 편차가 심하다. 어느정도로 심하냐하면, 10년동안 프로그래밍하면서 먹고 산 보통 프로그래머가 어느정도 뛰어난 실력을 지닌 신입 프로그래머만도 못한 경우가 흔하다. 대기업은 그래도 상대적으로 뛰어난 신입을 뽑기 때문에 이런 일을 보기 좀 힘들지만, 중소기업에서는 일반적인 프로그래머와 신입 병특 프로그래머를 비교해도 경력이 비참해질 정도로 격차가 큰 경우도 종종 있다. 괜히 유명한 프로그래머들이 20대 초반에 창업을 해서 두각을 드러내기 시작하는 것이 아니다.
뛰어난 두뇌와 피나는 노력이 필요한 직종이지만, 한국에서는 박봉과 야근에 시달린다. 오죽하면 4D라고 불리기도 하겠는가.(Dirty, Difficult, Dangerous + Dreamless) 그래서 대학을 입학하는 학생들의 선호도는 떨어지는 편. 반면, 외국에서는 삶의 질 1위를 다툴정도로 삶을 누리며 살수있는 직업이기도 하다. 고급 인력이기 때문에 대우와 연봉도 훌륭한 편. 그래서, 많은 뛰어난 프로그래머들이 외국으로 향한다.
이런 현상이 벌어진 이유 중 하나는 IT 버블 당시의 무분별한 프로그래머 양산이다. 프로그래밍은 누구나 할 수 있다. 프로그래밍 언어와 개발 도구가 발달하면서 컴퓨터의 내부 동작을 이해하지 못해도 웬만한 프로그램은 만들 수 있게 되었기 때문이다.(물론 규모가 있는 프로그램을 제대로 만들기 위해선 전문적인 지식이 필요하다) 그런데 이를 잘못 받아들인 한국의 높으신 분들은 실업자 대책으로 아무나 할 수 있고 인력도 부족한 프로그래머를 양산하기로 마음먹고 말았던 것이다.
흔히 프로그래머는 학력이 중요하지 않다고 한다. 고가의 실습 도구가 필요한 다른 분야와는 달리, PC 한대만 있으면 되고, 정보는 인터넷에 넘쳐난다. 마음만 먹으면 혼자서도 공부할 수 있다. 하지만 그게 실력이 중요하지 않다는 이야기는 아니다. 학벌 좋은 사람들은 그걸 공짜로 얻은 것이 아니라 중고등학교 시절 노력의 결과라는 사실을 명심하자. 그렇게 노력한 경험이 대학교 온다고 그냥 사라져 버릴까? 학벌이 전부는 아니지만, 그걸 얻기 위한 노력마저 의미없는 것으로 폄하하는 건 안될 일이다.
C 문법만 달랑 익힌 코더부터 MIT 박사 출신 아키텍트까지 전부 프로그래머라고 통칭하다 보니 대학교육을 굳이 필요없는 것으로 오해하는 경향이 있는데, 프로그램이 커지면 효율적인 설계를 위한 전문지식이 중요해진다. 집을 짓는 것에 비유하면, 단칸 초가집 짓는 데는 복잡한 건축학 지식따위 없어도 된다. 하지만 고층빌딩을 짓는 데에는 공학적인 지식이 반드시 필요하다. 이런 지식은 대학의 컴퓨터공학과에서 배운다. <tt class=\"foot\">[3]</tt> 물론 비전공자가 독학으로 익히는 것이 불가능한 것은 아니나, 그 정도 노력이면 좋은 대학 가는 것이 훨씬 쉽다.
공부하기는 싫은데 컴퓨터 만지작거리기는 좋아하는 중고딩들이 프로그래머 하겠다고 설치는 경우가 종종 있는데, 대학 안 가도 사법고시 볼 수 있으니 고등학교만 나와서 고시 패스하고 판검사 되겠다는 말과 같다. 고닥공소리 듣기 딱 좋다.
어쨌든 그래서 수많은 국비 지원 프로그래머 양산용 학원이 생겼다. 물론, 그들의 실력이 뛰어날리는 없다. 뛰어난 사람도 있겠지만, 극소수이다. 대부분은 기본중의 기본인 데이터 구조조차 제대로 모른다. 프로그래머의 생산성 편차는 무척 크다. 최저에 비해 최고는 무려 수백배의 생산성 차이를 보이는 경우도 있다.(물론, 팀 구성도 중요하지만.) 그런데, 학원에서 몇개월 공부한, 재능이 있는지 없는지도 모르는 프로그래머가 어느정도 실력을 보이겠는가? 게다가 그렇게 손쉽게 양산되는 프로그래머의 공급은 순식간에 수요를 넘어서 버렸고, 프로그래머의 몸값 하락을 불러왔다. 제조업 시대의 잔재로 야근과 추가근무를 해야했고, 연봉도 높게 받을수도 없었다. 이에 실망한 사람들이 떠나도, \'프로그래머나 해볼까\'하는 마음에 학원을 거친 새로운 사람들이 들어오니 악순환이 반복되었다.
하지만, 정부에서 IT 지원한답시고 국비 지원 학원이나 지원하고 있으니, 안될꺼야
그러면서도 현장에서는 프로그래머 구하기가 하늘의 별따기라는 말이 계속 나온다. 이쪽에서 원하는 것은 프로젝트를 제대로 수행할 수 있는 능력이 있는 프로그래머이기 때문에 속성 프로그래머는 있어도 별 의미가 없다.<del>사실 돈만 많이 준다고 하면 뛰어난 프로그래머가 줄을 설텐데 무슨 걱정인지</del>
그래도 알아주는 공대에서 프로그래밍 배운 경우에는 그나마 상황이 나은편.
프로그래머 하다가 나이들어 잘리면 치킨집밖에 할 것이 없다는 농담이 있다. 그런데 실제로도 그런 경우가 있는 듯하다.#
개념글 ㄳ
정말 유치하고, 우물안 개구리 같은 글이라고 볼 수 있겠다
지난 37년 동안 나는 하루에 14시간씩 연습을 했다. 그리고 났더니 사람들은 나를 천재라고 부르더라. - 파블로 드 사라사테
매우 훌륭한 글이며 이글을 이해 못한 프로그래머는 코더로 밖에 안보임