뜻밖의 여정, 프로그래밍

뜻밖의 여정, 프로그래밍


손수건 따윈 잊어라 다른 많은 것들도 이 여정이 끝나기 전까진 샤이어의 언덕과 작은 강에 익숙하겠지만 이젠 고향을 뒤로하고 앞에 놓인 세상을 만나라 <호빗: 뜻밖의 여정>

프로그래밍을 공부하고 있다고 하면, 주변에서는 ?_? @_@ 이런 표정을 짓는다. 나의 간단한 프로필을 말하자면...

    1. (핵)문과
    1. 여자
    1. 곧 서른
    1. IT 관련 경험 없음

당연히 내 주변에도 관련 분야에 일하고 있는 사람도 많지 않다. 나조차도 내가 지금 이걸 왜 공부하고 있는지 생각할 때가 있다. 보통 사람들보다 조금 더 컴퓨터를 좋아했던 것은 사실이다. 초등학생 때 컴퓨터학원을 다니면서 HTML을 배워보고, 나모 웹에디터로 웹페이지를 만들어본 적이 있었긴 하다. 남들보다 더 일찍 스마트폰(그땐 PDA)을 쓰면서 얼리어답터의 기질을 보이기도 했다. 그렇지만 작년까지만 하더라도 내가 개발자라는 커리어를 진지하게 고민하는 사람이 될 줄은 몰랐다.

한 5년 정도, 고시라 불렸던 시험을 준비했다. 그 관문이 그렇게도 높고 험할 줄은 몰랐다. 조금만 더 하면, 한번만 더 해보면 될 것 같았다. 그러다보니 5년이라는 시간이 흘러 있었다. 고시낭인이 되었다는 선배들의 이야기를 남 얘기처럼 들었다. 하지만, 하나의 꿈을 향해 달려가느라 주변의 변화에는 둔감했던 내가 있었다. 이제는 마지막이라 생각했던 면접을 망치고 돌아오는 길, 나는 서른을 눈앞에 두고 있었다.

내 자신을 불쌍하게 여길 틈 따위는 없었다. 꽤 괜찮은 중견기업에 사무직으로 일을 했다. 끝없는 야근이 이어졌어도, 나만의 커리어를 쌓을 수 없는 직무였어도, 그래도 열심히만 하면 먹고 살 수는 있을 만한 회사였다. 그놈의 꿈을 좇느라 멀쩡한 회사를 퇴사했던 것은 결국 나였다. 누구라도 탓하고 싶었지만, 그냥 나는 열심히 하지 않았기 때문이라 생각하기로 했다.

내 길은 거기서 끝났다. 기재가 부족하다거나 운이 없어 매번 패배를 기록했다는 의견은 사양이다. (...) 난 그냥 열심히 하지 않은 편이어야 한다. 열심히 안 한 것은 아니지만 열심히 하지 않은 것으로 생각하겠다. 난 열심히 하지 않아서 세상에 나온거다. 난 열심히 하지 않아서 버려진 것뿐이다. <미생>


역시, 시작은 파이썬

하고 싶다고 생각한 일을 할 수 없다면, 하면 좋을만한 걸 빠르게 시작하는 게 좋겠다는 생각이 들었다. 무엇이라도 새로운 걸 공부하고 싶었다. 그 즈음 알파고가 이세돌을 4:1로 이기며 인공지능의 시대가 도래했다는 뉴스가 여기저기에 퍼져 나갔다. 머신러닝이니, 딥러닝이니 하는 기술 용어가 평범한 사람들의 입에도 오르락내리락 했다. 안그래도 먹고 살 문제로 혼란스러웠는데, 더 우울한 마음이 들었다. 지금 생각해보면 왜 그랬는지 잘 모르겠지만 괜히 지기 싫다(?)는 마음이었던 것 같기도 하다.

여러 가지 검색 끝에 파이썬이라는 프로그래밍 언어를 한번 배워봐야 겠다는 생각이 들었다. 일단 컴퓨터의 언어를 조금이라도 이해해봐야겠다는 생각에서였다. 교보문고에 가서 Do it! 점프 투 파이썬 책을 샀다. 컴퓨터학원을 다니던 어릴 때 생각이 났다. 모두 다 이해한 건 아니었지만, 마음 잡고 공부하니 이틀만에 책 한 권을 다 볼 수 있었다. 학창 시절에 이 책을 봤다면, 어렵게 풀었던 수학 공식이나 계산문제도 왠지 더 재밌게 느꼈을 것 같다는 생각이 들었고, 생각보다 프로그래밍이라는 분야가 그리 접근하기 어렵지 않을 수도 있겠다는 생각이 들었다.

오프라인 교육 기관을 찾아보던 와중 패스트캠퍼스에서 하는 왕초보 프로그래밍 첫걸음 CAMP (지금은 왕초보 프로그래밍 유치원이라는 이름으로 바뀌었지만 컨셉은 비슷한 것 같다) 를 수강했다. 당시에는 웹을 기본으로 하는 과정개발 분야의 커리어에 관심 있는 사람을 위한 과정 이렇게 두 개가 있었는데, 파이썬을 조금 공부해봤다는 생각에 후자를 선택했다. 내가 선택한 과정은 C와 파이썬을 중심으로 프로그래밍/컴퓨터공학 기초 내용을 다루는 수업이었다.

처음에는 쉽지 않았다. 일단, '이걸 가지고 뭘 할 수 있지'라는 생각이 들었다. 프로그래밍으로 무엇을 할 수 있을지에 대한 감각이 없었던 것 같다. 가령 fizzubzz (3, 6, 9 게임 같은 문제) 를 프로그래밍으로 구현할 수 있다는 것은 알겠는데, 그 너머에 무엇이 있는지 알기가 어려웠다. (처음 공부를 할 때부터 웹 개발을 시작했다면 더 좋았을 것 같다. 어쨌든 손에 잡히는 결과물을 만들 수 있기 때문이다.) 코드를 가지고 뭘 할 수 있을지에 대한 상상력이 부족했고, 또 성취감과 흥미를 느끼기도 어려웠다.

거기에 이어, '이걸 왜 써야하지' 하는 데까지 생각이 미치기도 했다. 그나마 파이썬은 이해할 수 있었지만 C는 난이도가 너무 높게 느껴졌다. 나중에 알게된 것인데 대학에서 컴퓨터공학을 전공하는 학생들이 처음 입학해서 배우는 게 C이고, 그걸 공부하고 프로그래밍을 포기(!)하는 사람들이 많이 있다고 한다. include <stdio.h>가 무엇인지, int main(void)를 왜 선언해야 하는지에 대해서 설명을 듣기는 했지만 이해가 되지는 않았다. 추상적인 부분이 많아서인 것 같기도 했다. 가령 강사님이 라이브 코딩을 하면서 프로그래밍을 짜는데, "당장 이해가 가지 않더라도 일단 한번 따라 쳐보시라"고 이야기를 하지만 이해가 가지 않는데 따라 치는 것의 의미를 느끼기가 어려웠다. 대학을 다닐 때 공대 수업을 청강했던 적이 있다. 교수님은 "아, 이거 뒤에 다시 나올거니까 일단 넘어가세요"라고 여러 번 말을 했던 것 같다. 문제는 일단 시작이 막히면 그 뒤로 넘어가는 게 쉽지 않았다는 것이었다. 내가 공부했던 분야인 사회과학에서는 "왜"라는 질문을 던지는 게 중요했는데, 공대에서는 일단 한번 다 보면서 전체 그림을 그리는 것이 중요했다. 프로그래밍 공부에서도 비슷한 생각이 들었다.

하지만 오프라인 강의를 들었던 장점이 있었다. 물어볼 수 있는 사람이 있다는 것이었다. 강의를 들으면서 강사님에게 바보 같은 질문도 계속 했고, 앞으로의 커리어도 많이 물었다. 그때 결정한 게 웹 개발이었다. 강사님은 무엇부터 해야 할지 잘 모르겠다면 일단 웹 개발부터 공부해보는 것이 어떻겠냐고 추천해주셨다. 실제로 웹 개발자 중에 비전공자 출신이 많고, 또 전체 개발자 중에서도 웹을 개발하는 비중이 아주 높다는 것을 알게 되었다. 어릴 때 컴퓨터학원을 다니면서 배웠던 HTML, CSS 같은 걸 해봤을 때 어느 정도 재미를 느꼈다는 것도 생각해내었다. 다시 방향을 잡고 공부를 시작해 나갔다. 혼자서 할 수 있을 것이라 생각했다.


혼자 웹 개발을 공부해 나가다

패스트캠퍼스 캠프 과정을 수료한 후에는 일단 혼자 공부를 시작했다. 가장 먼저 접했던 건 오픈튜토리얼스 생활코딩이었다. 아주 쉬운 언어로 조근조근 설명을 하는 강의였다. 다만 이고잉님의 목소리는 다정다감하고 잠이 왔기 때문에 1.5배속 정도로 강의를 들어 나갔다. 웹 애플리케이션 만들기 강좌가 가장 기초가 된다 해서 3번 정도 계속 돌려가며 보았다. 다만 응용력을 발휘해서 새로운 나만의 무언가를 만들었어야 했는데, 개념을 머릿속에 집어넣느라 바빠서 그 부분은 아쉬웠던 것 같다.

생활코딩 외에도 여러 가지 무료 온라인 학습 플랫폼을 통해 웹 개발을 공부해 나갔다. 지시에 따라 브라우저 상의 IDE에서 코딩을 해나가며 결과물을 완성하는 코드카데미도 수강했다. Learn HTML/CSS, JavaScript, Command Line, Git, Sass 등을 배웠다. 준비된 카탈로그에서 절반 정도는 따라쳤던 것 같다. 문제는 뇌를 놓고 코드만 따라치다보면 타자연습에 불과할 수도 있었다. 내가 바로 그런 사람 중에 하나였던 것 같다. 코세라 같은 MOOC에서 수업을 신청해보기도 했다.

4~5개월 정도 혼자서 공부를 해보려고 다양하게 시도를 해봤다. 그런데 막상 Atom을 켜고 무언가를 만들겠다는 생각을 하면 막막했다. 수많은 수업을 듣고 튜토리얼을 따라쳤는데도, 내 실력은 그 자리에 있는 것 같았다. 주변에 같이 개발을 공부하는 친구도 없고, 어디에 무슨 커뮤니티가 있었는지도 몰랐다. 빠르게 높은 수준에 다다르고 싶다는 의욕은 있었는데, 역시 혼자서 하려니 자꾸 쳐지고 재미가 없게 느껴졌다.


패스트캠퍼스 프론트엔드 개발 스쿨을 선택하다

이미 캠프 과정을 한번 들어본 적이 있었기 때문에, 패스트캠퍼스에서 하는 풀타임 교육 과정을 택하는 것이 어려운 일은 아니었다. 커리큘럼이 탄탄해보였고, 커리어 서비스 같은 것을 제공해주는 것도 마음에 들었다. 웹 프로그래밍을 배워볼지, 아니면 프론트엔드 개발을 배워볼지 정도만 선택하면 되는 정도였다. 여러 고민을 해봤지만 역시 눈에 보이는 결과물을 만들어보고 싶다는 생각이 들었다. 또, 웹에서는 프론트엔드 분야가 계속 발전해나가고 있다는 글을 많이 접하기도 했다. 프론트엔드에서는 계속해서 신기술과 프레임워크가 출시되고 있고, 그 분야가 계속 넓어진다는 점도 매력적이었다. 처음 개발을 공부하는 입장에서는 아무래도 새롭게 발전해나가는 분야에 진입하는 것이 다른 사람들과의 경쟁에서 우위를 점할 수 있지 않겠나 하는 생각이 들었다.

패스트캠퍼스 외에도 여러 옵션을 고민했다. 국비지원 학원은 분명 매력적인 선택지였다. 패스트캠퍼스는 수강료를 내면서 다니는데, 취업성공패키지를 통해 공부를 하면 오히려 용돈을 받으면서도 수강이 가능했다. 물론 국비지원 학원이 별로라는 이야기는 많이 들었지만, 좋은 학원을 잘 찾는다면 그 나름대로 괜찮다는 이야기를 듣기도 했다. 하지만 혼자 개발을 독학하면서 느낀 점이 있었는데, 프로그래밍 분야는 제대로 된 로드맵이 없는 상태에서 공부한다면 한없이 시간과 리소스를 낭비하게 될 가능성이 높다는 것이었다. 내가 이 분야에 전혀 문외한이기도 하고, 주위에 프로그래밍을 공부하거나 개발자로 전직한 사람이 많지 않았다.

방통대 컴퓨터과학과 편입도 옵션 중에 하나였다. 십수년 전에 아버지가 개인적인 취미로 방통대를 통해서 국문학을 공부한 적이 있었는데, 강의 퀄리티도 나쁘지 않고 수료하는 게 굉장히 어려워서 나름대로 사회에서 인정을 받을 수도 있다는 장점이 있었다. 부모님은 굳이 학원을 다니기보다 정규 학위를 주는 방송통신대를 권했다. 하지만 앞서 얘기했듯, 눈에 보이는 결과물, 최신 기술, 좀 더 효율적인 공부방법을 고민했을 때 컴퓨터과학을 전공하는 것보다는 짧은 기간에 전 과정을 훑을 수 있는 부트캠프를 선택하는 것이 좋겠다고 판단했다. 나중에 정말 진지하게 개발을 공부하고 이론적인 배경을 탄탄하게 만드는 것이 좋겠다는 생각이 들 때 방통대를 택할 수 있을 것이었다.


내 목표는?

만학의 즐거움이라는 말은 있지만, 조기교육의 즐거움은 들어본 적이 없다. 근데 생각해보면 과거엔 조기교육이 즐겁진 않아도 가치는 있었을지도 모른다. 몇십년 뒤에 어떤 지식이 필요할지 예측할 수 있었고, 머리속에 지식을 담아두지 않으면 필요할 땐 늦었을테니까. 그래서 예전엔 조기교육이란 언어가 없었다. 원래 교육은 조기에 받는 것이었으니까.

한편 지금까지 만학의 즐거움은 흔하지 않은 것이었다. 머리속에 많은 것을 담고 있어도 할 수 있는 일이 제한적이었기 때문에 조기에 학습하지 않고서는 지식을 현실에 적용하는게 어려웠다. 지금은 어떤가? 무엇을 모르는지 안다면 들고 있는 스마트폰에 설치된 웹브라우저를 켜서, 검색하고, 질문해서 필요한 정보를 구할수 있다. 그렇게 구한 정보에 따라서 기계를 조작하면 복잡하고 힘든 일은 기계가 대신해준다. 그덕에 세상은 점점 예측하기 어려운 모습으로 변화하고 있다. 

예측하기 어렵고, 많은 것을 기계가 대신 해주고, 필요한 정보는 언제든지 구할수 있을 미래에도 조기교육이 의미가 있을까? 반대로 만학의 즐거움은 미래에도 희귀한 것으로 남아있을까? 조심스럽게 예측해보면 조기교육의 시대는 지고 만학의 시대가 올 것이다. 사실 학문은 원래 어른들이 어른이 되어서 만난 죽을 것 같이 힘든 문제를 해결하기 위해서 만든 만학의 결정체라고 할 수 있다. 또한 이미 사람들은 정보기술을 이용해서 모르는게 있을 때 검색하고 질문해서 문제를 해결하고 있다. 그렇게보면 사실 세계는 만학이라는 거대한 바다위에 조기교육이라는 섬이 드물게 존재한다. 조기교육을 막기 보다 만학이라는 거대한 거인을 흔들어 깨워야 한다.  <생활코딩: 만학의 즐거움 3>

패스트캠퍼스에서 당장 4개월 과정을 수강한다고 내 실력이 과연 최상급 개발자가 되기는 어려울 것 같다. 시작이 늦어서 조급한 마음이 들기도 하지만, 한편으로는 내가 회사를 퇴사하고 새로운 길을 가야겠다고 결심한 이유에는 '인생은 길고 세상은 빠르게 변한다'는 깨달음이 있었기 때문이었다. 4개월이 끝난 후에 취업을 하기는 해야겠지만, 어쨌든 내 목표는 '좀 더 재밌게, 그리고 제대로 프로그래밍에 입문'하는 데에 있다.

솔직히, 나는 당장 누군가를 부양해야 할 처지가 아니라는 상황이 오히려 다른 사람에 비해 특수한 경우일 수 있다. 꽤 긴 회사생활 동안 여유자금을 조금은 모아두었다. 조금 더 긴 호흡으로 내 현재와 미래를 위해 워밍업을 할 수 있는 여유가 있다. 당장이라도 일을 해야 하는 상황이라면 개발 공부를 시작하기는 어려웠을 것 같다. 한편, 직업을 찾던 시점에 경험한 좌절과 실패가 없었다면 이런 새로운 도전을 하지도 않았을 것 같다.

당장의 목표는 수업을 잘 듣고 새로운 커리어를 쌓는 것이다. 그게 꼭 유능한 개발자가 아닐 수도 있다. 창업을 할 수도 있고, 아니면 IT 유관업종으로 갈 수도 있다. 어쨌든 나는 그 시발점에서, 뒤늦은 나이에 공부의 즐거움을 느껴야 하는 길에 서 있다.