해병대 원칙과 프로그래밍
해병대의 원칙은 이렇게 말합니다: 신체적으로 적합한 남녀를 찾았다면, 올바른 교육과 훈련을 통해 그들 대부분을 뛰어난 전투원으로 키울 수 있다. 프로그래밍도 기타 연주, 수영, 자전거 타기처럼 하나의 기술이다. 사람은 태어날 때부터 자전거 타는 사람이 아니다.

프로그래머보다 두 배로 일하고도 네 배 적게 버는 똑똑하고 유능한 사람들도 적지 않다. 어쩌면 그저 자신의 자리에 있지 않을 뿐일까?
왜 프로그래밍인가?
누군가에게 프로그래밍을 가르치기 전에, 그것이 그에게 무엇을 가져다줄지 먼저 알아보는 것이 좋다.
1. 쉽고 재미있는 일
프로그래밍은 쉽고 재미있는 일이다. 창의성을 발휘할 여지가 매우 크다. 많은 초보 개발자들은 자신이 좋아하는 일을 하면서 거기에 대해 돈까지 받는다는 사실을 처음엔 선뜻 믿지 못한다. 하지만 곧 익숙해진다.
2. 보수가 좋다
유능한 전문가들이 5년쯤 일하고 나서 차나 집을 사기 시작하는 모습을 보는 건 참 기분 좋은 일이다.
3. 유연한 근무 시간
빡빡한 근무표는 불쾌하다. 러시아워에 교통 체증을 겪어 본 사람이나 5분 지각으로 벌금을 물어 본 사람이라면 누구나 동의할 것이다. 오전 11시에 출근해서 5시에 퇴근할 수 있다면 어떨까? 꿈같다고요? 대부분의 프로그래머에게는 현실이다. 맡은 일을 잘 해내기만 하면 누구도 뭐라 하지 않는다. 많은 회사에서는 아예 출근하지 않고 집에서 일할 수도 있다. 언제든 합의할 수 있다.
4. 전문적 성장
거의 모든 조직에서, 명망 있는 직책을 얻고 높은 소득을 올리려면 커리어를 쌓아야 한다. 프로그래머는 그냥 프로그래머로 남아도 된다. 프로그래머에서 관리자나 관리자급 직책으로 바꿀 필요도, 그 자리를 놓고 경쟁할 필요도 없다. 그냥 전문성만 키우면 된다. 경력 5~10년의 프로그래머는 훌륭한 연봉을 받는다.
5. 높은 국제적 이동성
전 세계에서 가장 고소득인 세 직종: 변호사, 외과의/의사, 그리고 프로그래머. 변호사는 해외에서 일하기가 매우 어렵다. 법이 다르고, 판례법 등도 다르기 때문이다. 의사는 언어와 다른 의료 기준을 배우고, 시험을 다시 봐야 한다. 프로그래머는 그럴 필요가 없다. 같은 언어, 같은 표준. 종종 고객도 같다.
6. 업계 최고 수준의 연봉

가장 높은 편이다. 특히 초보 프로그래머에게 더욱 그렇다.
책 한 권 읽고 프로그래머가 될 수는 없다. 최소 500시간의 실습이 필요하다. 복싱과 똑같다. 경기 영상만 다 본다고 프로가 되지 않는다. 체육관에서 훈련에 긴 저녁 시간을 보내야 한다(그래서 CodeGym에는 실습 과제가 아주 많다).
프로그래밍을 10시간 만에 배우게 해 주겠다는 모든 제안은, 복싱을 10시간 만에 가르친 다음 링에 올리겠다는 말과 같다. 그러지 마세요.
가끔 초보자가 포럼에서 어떻게 프로그래머가 되냐고 묻으면 이렇게 말하곤 한다: 스스로 과제를 만들어서 해 보라. 그렇게는 안 된다. 사람은 자신의 지식의 경계 바로 너머에 있는 과제를 스스로 만들어 낼 수 없다. 아는 건 알고, 모르는 건 모르는 것이다.
해당 주제를 잘 아는 사람만이, 매 과제가 새로운 것을 가르치면서도 분석에 한 주씩 걸리지 않도록 구성된 단계적인 과제 집합을 설계할 수 있다. 바로 우리가 그렇게 했다.
혁신적인 학습 접근법
CodeGym의 학습 과정은 대학에서 배우던 방식과 다르게 구성되어 있다. 곧바로 알게 될 것이다. 하지만 그만큼 더 효과적이다.
대학에서는 보통 이렇게 배웠을 것이다: 긴 이론 강의와 이를 보강하는 실습. 이 방식은 폭넓은 지식을 주는 데 초점이 맞춰져 있다. 하지만 실제 실무 능력은 만족스럽지 못하다. 솔직히 말해, 그런 방식으로는 쓸모 있는 것을 거의 못 하게 된다.
여기서는 다른 접근을 쓴다. 이론은 지식이고, 지식은 우리의 질문에 대한 답이다. 그래서 우리는 먼저 질문을 준다 — 현재의 지식으로는 풀기 어려운 실습 과제들, 그리고 그다음에 답(그 과제를 훨씬 더 쉽게 풀 수 있게 해 주는 이론.
새로운 내용은 세 단계로 제시된다:
- 입문 (이론은 최소한으로, 또는 몇 가지 실습 과제).
- 핵심 지식 블록 (무슨 이야기인지 완전히 이해해야 한다).
- 세부와 작동상의 뉘앙스 (빈틈을 메운다).
이렇게 해서 여러분은 최소 세 번 같은 주제를 마주치게 된다. 게다가 모든 것이 강하게 연결되어 있어, 어떤 주제를 완전히 설명하려면 그 전에 다른 주제들을 적어도 부분적으로 언급하지 않고서는 불가능하다.
어떤 학생들은 과제에 대해 불평하기도 한다: "그건 아직 배우지 않았어요." 이런 과제는 생각해 볼 기회다. 지금 가진 지식만으로 어떻게 풀 수 있을까? 이 과제들에 한두 시간쯤 쓰게 되겠지만, 그 뒤에는 새로운 독창적 접근이나 멋진 해법을 기쁘게 맞이하게 될 것이다.
게다가, 현실의 직장에서도 먼저 과제를 받고, 그걸 해결하는 데 필요한 지식을 나중에 찾게 된다. 현실이란 원래 그렇다. 그러니 이런 방식에 일찍 익숙해질수록 좋다.
GO TO FULL VERSION