일반인이 code를 만났을 때
크리스마스를 10일 앞두고 NEXT에서 최종 합격 소식을 들었다. 한창 학교가 어수선할 때라 입학 자체를 포기해야 하나 고민하기도 했지만, 이미 다니던 회사에는 퇴사 의사를 밝혔기 때문에 더 물러날 곳도 없었다. 그 시점까지도 나는 단 한 줄의 코드도 써본 적이 없었다. 금융을 전공한 나는 Computer Science 비전공자로 NEXT에 지원했고, 여러 단계의 전형에서 코딩능력을 평가받지는 않았다. 넥스트는 감사하게도 코딩을 처음 배우고 싶다는 사람에게, 이미 코딩을 얼마나 할 줄 아는지 보여달라고 하는 가혹한 일은 하지 않았다.
그 당시 나는 코딩을 한다는 것에 점점 호기심을 갖고 있었고, 제대로 배워보고 싶어서 넥스트에 지원하는 노력까지 했지만, 혼자 코딩을 해보려는 시도는 하지 않았다. 지금 생각하면 스스로도 이해가 안 되는 행동인데, 이건 개발자의 관점에서 이해가 안 되는 것이고 살면서 단 한 줄의 코드도 작성해본 적 없는 사람이었을 때를 생각하면 충분히 이해가 된다. 초, 중, 고를 지나 대학에 다닐 때까지 나와 가장 친한 친구들은 전부 컴퓨터 혹은 소프트웨어와 무관했고, 누군가가 코딩을 하는 모습은 스타트업에서 일하면서 개발자분들의 모니터에서 처음 봤다.
많은 외국어도 재미있게 배웠고, 여러 번의 인턴으로 회사생활도 경험했지만 나는 컴퓨터 분야에 대해서는 백지와도 같았다. 코딩이라는 것을 하려면 대체 어떻게 시작해야 하는지, 내가 가진 컴퓨터로 가능한 일인지, 누구에게 배울 수 있는 것인지, 책을 보고 배우는 것인지, 수업을 들어야 하는 것인지, 얼마나 어려운지... 아무것도 아는 것이 없어서 두려웠다. 시작해야 한다는 생각만으로도 머리가 새하얘지는 두려움이었다.
그래서 나의 경우는 스스로 열정이 넘쳐서 첫 코드를 작성한 것은 아니었고, 넥스트 입학 전 방학숙제를 해야 해서 울며 겨자 먹기로 누군가의 도움 없이 코딩을 시작하게 되었다.
나의 첫 코딩을 공부하려는 시도는 'Head First Programming'라는 이름의 책을 읽는 것이었다. 아래가 그 책의 표지이다.
개발자분들이 이 글을 보면 비웃으시겠지만, 난 이 책을 처음 보고 일종의 컬처쇼크를 받았다. 어떤 분야의 전문지식을 배우기 위한 서적이라고 하기에는 전에 본 적 없던 구성이라서 모든 IT서적이 이런 것인가 하는 크나큰 오해가 시작됐다. 아래 사진처럼 이 책에서는 내가 알아야 할 정보와 온갖 사진, 말풍선 등이 만화책처럼 배치되어있다.
책의 레이아웃에 1차 충격을 받았지만, 마음을 다잡고 열심히 해보려 했다. 밑줄을 그으면서 공부했는데, 도통 책을 빨리 읽지 못했다. 처음 배우는 생소한 용어와 개념들을 다 기억하지 못해서, 책의 다음장에 갔을 때 '앞에서 배운 내용을 다 까먹었는데 어쩌지? 하나도 외우지 못했어!' 하고 다시 앞장으로 돌아갔기 때문이다.
나중에 알게 되었지만 코딩을 하면서 새로 배우는 모든 것들을 한꺼번에 외울 필요는 없었다. 실제 개발자가 되고 나서도 많은 부분을 공식문서와 책을 찾아보고 필요한 만큼씩 사용한다. 그때까지 내가 공부했던 모든 분야에서는 정해진 분량의 지식이 있고, 일단은 그걸 거의 다 외우는 것이었다.(문과라서 더 그랬던 것 같다...) 일단은 이해를 하고 그리고 거의 외운 다음에, 뭔가 더 어려운 문제를 고민할 수 있는 식이었다. 그래서 나는 코딩이라는 것도 책에서 가르쳐 주는 내용을 모두 이해하고, 거의 외우다시피 한 다음에야 무언가를 만드는 것을 할 수 있다고 생각했다. '아무것도 기억하지 못하다니, 난 멍청이야.'라는 생각을 하면서 넥스트에 입학하기도 전에 코딩을 포기할 뻔했다.
코딩에 대한 나의 첫 번째 감정은 '나는 멍청이야'였다.
넥스트 입학 날짜가 다가오고 첫 번째 과제인 책 읽기는 포기하고, 다음 과제로 codeAcademy라는 사이트에서 python이라는 프로그래밍 언어를 배우기에 도전했다. 웹 콘솔에서 python code를 따라서 타이핑해보는 방식의 수업인데, 'Hello, world!'라고 입력했더니 'Hello, world!'라고 나왔다. 세상에!
그런데 아무런 감흥이 없었다. 왜냐면 나는 코딩을 못해본 거지 원시인은 아니었기 때문이다. 나는 저게 무엇을 의미하는지 전혀 몰랐고, 당시의 인식으로는 컴퓨터로 뭔가 입력하면 그게 화면에 노출되는 것은 당연히 돼야 하는 일이었다. 나는 윈도 98로 처음 컴퓨터를 배운 세대이고, 입력하는 대로 화면에 나오는 것은 전혀 신기한 일이 아니었다. 그래서 난 이 순간을 내가 처음으로 코딩한 순간으로 기억하고 싶지 않다.
코딩을 해보고 나서 첫 번째 감정은 실망감과 지루함이었다.
넥스트에서 첫 프로그래밍 언어는 c언어였다. 동시에 Javascript를 배웠고 입학하고 한 주가 지났을 뿐인데 나는 멘탈이 무너지고 있었다. 정호영 교수님이 그때의 내 상태에 딱 맞는 code.org 를 소개해주셨다. 나는 엘사가 좋아서 주말에 겨울왕국 시리즈를 따라 했다.
똑똑한 유치원생도 따라 할 수 있는 수준의 블록 코딩이지만, 이때 처음으로 내가 지금 하는 행동(=코딩)에 대한 개념을 잡을 수 있었다. 드디어 내가 컴퓨터로 하는 일이 무엇을 의도하는 일인지 이해하는 순간이었다. c언어로 *를 1개에서 5개까지 반복해서 출력할 때는, '이런 *같은 특수문자를 출력하는 건, 실제로 일할 때는 대체 어디다 써먹으려고 배우는 걸까?', '도대체 변수라는 것은 한번 할당했다가 가만두지 않고, 왜 다른 값을 또 할당할까?' 같은 너무 바보 같아서 하지 않은 질문들에 스스로 납득할 수 있게 되었다. 그리고 엘사블록코딩을 JavaScript라는 언어로 잘하게 된다면, web에서 움직이는 엘사를 내가 만들 수 있게 될 거라 생각하니 신이 났다!
그래서 나는 code.org에서 엘사 코딩을 한 순간을 나의 첫 코딩의 순간으로 기억하고 싶다.
처음으로 코딩을 해보니 꽤나 신이 났다. 그래서 스스로도 예상치 못하게 그 이후로 계속 코딩을 해서 지금은 개발자가 되었다. ‘코딩을 하고나서 신나는가?’는 나에게 여전히 중요한 질문이다.
일반인을 위한 TMI
1. 'Head First'시리즈 책은 미친 책이 아니다. 책의 서두에도 나오듯이 메타인지의 관점에서 독자들의 효과적인 학습을 위해 일부러 저런 레이아웃을 사용한다. 모든 개발 책이 이런 것은 아니고, 이 시리즈의 특징이라서 개발자마다 호불호가 극명히 갈린다.
2. 'Hello, world!' 는 프로그래밍 세계의 'May the Force be with you.'로 이 세계 사람들이라면 다 알만한 문장이다. 모든 프로그래밍 언어를 새로 배울 때 만나게 되는데, 자세한 설명은 링크에서!