나의 프로그래밍 공부법 - 제 2 장 전산학 전공자와 비전공자의 차이

2012. 11. 11. 15:41기타/나의 프로그래밍 공부법

아마도 이번 장 역시 전 장에서 강조하는 "센스"에 대한 고집처럼 "전산학 전공자"에 대한 필자의 주장은 이 글을 읽는 대부분의 독자들에게 반감을 살 수도 있다. 미안하지만, 그렇다고 하더라도 필자는 이왕이면 프로그래머가 되기 위해서는 "전산학" 또는 유사 학과를 전공하는 것이 조금이라도 좋을 수 있다는 의견을 계속 견지하고 싶다.


다행히 여러분이 전산학 전공자라면 문제가 없겠지만, 만일 여러분이 비전공자이면서 "프로그래밍 공부"를 시작하려는 분들이라면... 전공자 못지 않은 기초 실력을 다지기 위해서 더 많은 노력을 해야한다는 논리로 받아들여주었으면 한다. 일부 경험을 기초로한 필자의 선입견으로만 판단한다면 비전공자들은 자신들의 불리한 점에 대해서는 조금 인정하지만, 그것을 극복하기 위해서 전공자 못지 않은 노력은 거의하고 있지 않기 때문이다.


즉, 여기서 중요한 것은 전공자냐 비전공자냐 편을 가르고 싶은 것이 아니다. 전공자이든 비전공자이든 제대로된 프로그래밍 공부를 위해서 필요한 기초 지식부터 열심히 학습하고 준비하는 자세가 필요하다는 것이다. 그것이 준비되어 있지 않은 상태에서의 "프로그래밍 공부"라는 것은 명백하게 한계가 있고, 그렇기에 대부분 제대로 공부를 끝내지 못하는 것이다.


------------------------------

2 장 전산학 전공자와 비전공자의 차이


여러분들이 프로그래머가 꿈인 청소년이라면 우선 전산학(Computer Science)을 전공을 선택하여 대학에 진학하는 것을 권하고 싶다. 소프트웨어 개발과 관련하여 기초적인 학습 지식을 배울 수 있는 “전산학” 관련 학과는 컴퓨터공학과, 컴퓨터학과, 전자계산학과, 전산과학과, 소프트웨어공학과 등이 있는데, 학교와 학과에 따라서는 다루는 커리큘럼이 다소 차이가 있을 수 있으니 잘 알아보고 지원을 하는 것이 좋다. 담당 교수들의 성향에 따라서는 하드웨어 비중이 높을 수도 있어서 소프트웨어와 관련된 커리큘럼을 사전에 체크해보자.


그러나 여러분이 프로그래머가 되고 싶어하는, 이미 대학교를 졸업한 전산학 비전공자라면 어떻게 해야 할까? 소프트웨어 개발 역시 “기술” 직종이기 때문에, 소정의 기술 교육을 받으면 충분히 개발자가 될 수 있다고 생각하는 경우가 많다. 이러한 생각은 한 편으로는 맞지만 한 편으로는 “틀리다”라고 말 할 수 있다.


단순하게 프로그램 구현을 위해 소스 코드만을 작성하는 “코더”라면 기술 교육을 받아서 충분히 해낼 수 있기 때문에 맞는 이야기라고 할 수 있다. 하지만, 기초가 탄탄하지 못하고 전체 시스템에 대한 충분한 이해가 없다면 기본적인 프로그래밍 그 이상은 불가능하기 때문에 맞지 않은 이야기라고도 할 수 있는 것이다.


물론 전공자라고 해서 모두가 제대로 교육을 받고 기초를 탄탄하게 쌓은 것은 아니지만, 귀동냥으로라도 전산학 관련 과목을 이수한 경우라면 전혀 이수하지 않은 사람보다는 분명히 나을 수 밖에 없는 부분이 있다. 대학교 전공 수업 이외에는 소프트웨어 관련 기초 학문을 마땅히 배울 수 있는 기회가 별로 없기 때문이다. 수지 타산이 맞지 않기 때문에 “소프트웨어 공학”, “운영체제론”, “이산 수학”이나 “데이터베이스 개론”, “인공지능”을 가르칠 수 있는 학원은 없을 것이다.


훌륭한 요리사가 되기 위해서 허드렛일부터 하나씩 배워야 하는 것은 누구나 다 인정을 하면서도, 제대로 된 프로그래머가 되기 위해서는 기초부터 탄탄하게 다져야 한다는 점에는 의문을 던지는 경우가 종종 있다. 어렸을 때부터 단지 컴퓨터를 좋아했었고, 전공을 하지 않았지만 학원에서 6개월씩이나 배웠으니 충분히 좋은 개발자가 될 수 있다고 이야기 하는 것은 어렸을 때부터 요리에 관심이 많았고 정식으로 요리를 배우지는 못했지만 요리 학원에서 6개월 수강했으니 충분히 훌륭한 요리사가 될 수 있다고 이야기하는 것과 같은 이야기이다. 과연 이 말을 쉽게 인정해줄 수 있는 요리사가 얼마나 있을까?