1만 시간의 법칙 – (자스 1년이면 초보가 아님)

[ 이글은 2017년 04월 17일에 최종 수정되었습니다. ]
§

Outliers (아웃라이어) 는 전세계 수십개 언어로 번역된, 매우 유명한 (뉴욕타임즈) 베스트셀러 입니다.

한국어 번역에 “성공의 기회를 발견한 사람들” 이란 부제가 달렸듯이, 아직 학생이거나 내 인생에 어떤 꿈을 갖고 성공하고자 하는 사람이라면 꼭 읽어봐야 하는 필수 도서 입니다.

책을 읽다보면 이게 뭐야? 금수저론 이야? 라고 생각할 수 도 있는데 (성공할 수 있는 조건은 태어날때부터 결정되어 있다는 내용때문에 그렇게 오판하기 쉽지만 이 책을 끝까지 읽어보셔야 합니다), 현실을 말할 뿐이며, 자신의 노력에 따라서 태생적 한계는 벗어날 수 없지만, 어느정도 성공할 수 있다는 매우 유익한 정보를 알려 줍니다.

이 책에 나오는 1만 시간의 법칙은 여러 학자들과 연구원들이 과학적으로 분석을 했을정도로 이제는 정설로 받아들여지고 있습니다. 사실 제 인생 경험을 되돌아 봐도 매우 상식적인 얘기 입니다.

이 1만 시간의 법칙은 무엇인가?

편리님이 오래전 냑, 그누보드 에 입사하기전에 본인의 블로그에 밝혔듯이, 3년만 미치면 어디가서도 꿀리지 않는 개발자가 될수 있다는 주장과도 일맥상통하는 내용 입니다.

어떤 분야건 1만 시간만 투자하면 그 분야의 최상급 수준에 오를수 있다는게 이 1만 시간의 법칙입니다. (아무리 머리가 나빠도 평타는 친다는 얘기죠.)

365일 기준으로 1년에는 8760시간이 존재합니다. 잠자고, 밥먹고, 일상생활에 꼭 필요한 부분에 시간을 할애한 나머지 시간을 모두 투자하면 (몰빵하면) 3년이란 시간동안 어떤 분야에 1만시간을 투자할 수 있습니다. (직장생활을 하고 있다면 절대 쉬운일은 아닙니다 만 불가능 하지도 않습니다.)

친구 끊고, 게임끊고, 모든 사회생활을 다 끊고, 정말 그 분야에 미치면 가능합니다.

그 3년이란 시간동안 편리님은 완전 php 에 미쳐서 모든 시간을 투자했고 이제는 리자님 (그누보드 만드신분) 보다 php 를 훨씬 더 잘해서 실질적인 그누보드 관리및 개발은 편리님이 하십니다. 애초에 컴공 전공도 아니었고, php 는 if else 도 모르는 상태에서 그 3년이란 시간동안 그누보드 개발을 총괄하는 개발자로 자신을 성장시킬 수 있었던 것 입니다.

css 에 3년을 투자해 보세요. 전세계 존재하는 어떤 css 기법이나 형식도 눈감고 똑같이 그려낼 수 있는 수준에 도달합니다. 레이아웃을 보면 머리속에서 css 가 자동으로 그려집니다. (pseudo elements 까지 포함해서 머리속에 코드가 그려진다는 얘기 입니다.) 자스 (javascript) 도 똑같습니다. 내가 자스에 1만 시간을 투자했다면, 어떤 코드를 봐도 다 이해가 됩니다.

하지만 여기에 문제점이 하나 존재합니다. 최근 Princeton 대학 연구결과에서도 밝혀졌듯이 이 1만시간의 법칙은 목표하는 target (목표점?) 이 static (고정) 되어 있는 경우에만 그 법칙이 성립됩니다.

무슨 얘기냐? php 같은 경우, 편리님이 1만시간을 투자하는 동안, php 는 크게 바뀌지 않고 달라지지 않았기에 그 1만시간을 투자한 후, 최상급 수준에 오를 수 있었던 것 입니다.

반면 자스의 경우 기존사용되고 있는 ES5 (ECMAScript 5) 기반으로 1만시간을 투자했다고 해서 자스 코더의 최상급 수준에 도달할 수 없습니다. 그 이유는 이제 모든 브라우져에서 적용되기 시작한 ES6 (ECMAScript 6) 의 개념들을 탑재하지 못했기 때문입니다.

겨울나무님도 제시한 arrows 라던가 promises 같은 새로운 개념들을 학습하고 실제 적용하는 코딩 연습을 해야 하기 때문입니다.

css 만 해도 element 를 가로 정렬하려면, 기존 float 모델 (float left 하고, clear left, right, 아니면 both 를 주는 형태) 을 사용하다, 이제는 display 에 flex 주고, flex-direction 을 row 로 먹여야 하는데 이 float 모델과 flexbox 모델은 전혀 다른 개념이잖습니까?

section:not(:has(header:first-child)){ }

css 경력이 10년이 아니라 20년이라도 평소 css 를 꾸준히 학습하지 않는다면 이 위 css 한줄도 해석을 못한다는 사실.

그러니 기존 css 나 js 에 1만시간을 투자했다고 해도, 개발자로 일하기 힘든겁니다. 하지만 겨울나무님의 경우처럼 es5 가 아닌 es6 를 기반으로 1년이란 시간을 투자했다면 절대 자스 초보는 아닙니다. 물론 실무경험이 부족하다면 (일명 꼼수) 직장에서 별로 쓸모 있는 인재가 아닐수도 있겠죠.

이래서 제가 front-end 개발자가 되고 싶어하는 분들에게 가급적이면 다른 분야 (back-end 나 서버쪽) 를 고려해 보라는 말씀을 드리는 것 입니다.

es5 기반의 자스를 바닥에 깔아 놨다면, arrows 나 promises, 또 es6 형식의 iteration 같은 개념/코딩을 학습하는데 아주 많은 시간이 소요되지는 않습니다.

물론 이거 다 코딩 연습 해보는데 또 얼마나 많은 시간이 걸릴지 한숨부터 나오는건 함정. ㅋㅋㅋ

https://github.com/lukehoban/es6features (여기에 포함되지 않은 다른 개념들도 많다는. ㄷㄷㄷ)

하지만 처음 자스 공부를 해야 한다면 es6 부터 공부를 해서는 학습속도가 많이 느려질거고, 그렇다고 es5 부터 공부하자니 이것 역시 매우 비효율적인 학습이 될 가능성이 높습니다.

그리고 es6 학습속도가 느리다면 ECMAScript 2016 는 어쩔꺼임? (ECMAScript 2016 != es7, 아직 완성된게 아님. 참고하시길) 지금이 벌써 2017년인데 이제 es6 는 떼고 ECMAScript 2016 하고 있어야 하거든요?

여기에 각종 프레임워크, library, 모바일 앱 들도 빛의 속도로 발전하고 있고. 그나마 내가 일하고 있는 회사가 개념이 잡힌 회사라 vue.js 를 사용하고 있다면 그 개발자 입장에서는 천만다행이겠죠.

학습속도가 느리면 오히려 개발자로서의 유용성이 쇠퇴하게 되는 겁니다. 자스 는 계속 앞으로 나가고 있는데 나는 그자리에 머물러 있으니까. (하… 제 얘기 하는거라는… ㅠㅠㅠㅠ)

이런 와중에 front-end 개발자가 되겠다며 jQuery 플러그인이나 가져다 덕지덕지 붙여서 자신의 포트폴리오 페이지를 만들고 계신 분을 보면 (이 글을 그분이 읽는다면 기분이 많이 나쁘실 수 있겠지만, 저는 정말 걱정이 되서 말씀드리는 것 입니다.) 제 속이 터집니다.

평생, 최소 내가 현업으로 일하는 동안, 하루에 최소 1시간 (1 hour 를 한국어로 어떻게 표현해야 하나요? ㅠㅠㅠ) 이라도 학습에 투자할 의향이 없다면 절대 front-end 개발자를 목표로 삼지 마셨으면 좋겠습니다. (1만 시간을 깔아놓고 하루에 1시간 이란 얘기 입니다.)

front-end 는 엄청나게, 또 매우 빠르게 발전하고 있고 (정말 광속으로), 앞으로 어디로 튈지도 모르는 상태라, 기존 개발자들도 이거 따라잡는데 헉헉거리고 있습니다. 최소 뒤쳐지지 않는데 혈안이 된 상태에요. 앞으로 front-end 개발자라는 직업은 제 아들처럼 최소 초등학교 때부터 코딩을 해온 인재들이 차지하게 됩니다.

[그런데 헬 조선 대학교에선 아직도 이게 (마방진: magic square) 필수 과목중 하나] – 하… 이게 사실이라면 할 말이 없습니다.

대학교 4년동안 컴공 전공해봐야 대학교 입학하기전 최소 어느 언어 하나에 1만 시간 정도를 투자하지 않았다면 그 4년동안의 교육이 아무런 의미가 없습니다. 실제 현재 미국 대학의 경우 대학교 입학하기전 이정도의 시간을 투자해 놨어야 학습자체를 따라갈 수 있기도 하고.

*이 부분에 또 논란이 있을 수 있어 이렇게 부연설명 하고 싶습니다.

야알못이 야구코치 할 수 있나요? 야구코치라는건 야구선수 생활을 하고, 그 선수로서 쌓은 경험을 토대로 어떤 노하우를 젊은 선수들에게 전수해주는 직업입니다. 그리고 이런 과정을 통해 어떤 이론을 찾아내고 철학이 생기기도 하죠. – 그리고 감독이 되어 이런 철학을 갖고 야구팀을 운영하고.

그런데 야구빠따 한번 잡아본 적도 없이 이론부터 배우는게 순서다? 야구선수가 되기전 야구감독부터 해야 하는거다? 이게 적절한 allegory (비유) 인지 모르겠지만 최소한 저의 경험으로는/생각으로는 좋은 교육방식은 아닌 것 같습니다.

코딩부터 죽어라고 수천, 수만시간을 하고난 후 어떤 노하우가 생기고 나름의 이론이나 철학이 성립되는거지 (미국식 교육) 코딩한번 해본적도 없이 이론 부터 배워서 (헬조선식 교육) 개발을 한다? 저로서는 납득하기 어렵습니다.

TL;DR (결론):

  1. 노력 없는 성공이 가능하다? No way.
  2. 헬조선 교육은? 답이 없다.
  3. 자스 3년이면? 대형사고 칠 정도의 (회사에서 그날로 짤릴 수 있는 수준의) 실력이 생긴다.
Ω