2년간의 여정, 42서울 본과정(이너서클) 후기
42서울 소개
42서울은 프랑스의 CS 전문 사립 고등교육기관, école 42의 여러 캠퍼스 중 하나이다. (실무 코딩을 빠르게 배우는)다른 부트캠프와 다르게 최소 2년에서 5년동안 CS지식을 기반으로 하는 과제를 통해 기초와 역량을 높일 수 있는 학교다. 그래서 42서울은 부트캠프가 아니라 칼리지에 더 가깝다. 42 캠퍼스는 학년제가 아닌, 레벨로 성취도를 나타내는데, 프랑스에서는 17레벨 정도를 넘으면 RNCP 자격이 주어지고, 이를 학사 레벨로 취급한다.
42서울 입과한 이유
나는 원래는 디자이너였다. 주로 문화/예술 분야에서 예술사진집, 전시, 잡지 표지작업, 그리고 현대자동차, LG, KT 등의 기업이미지 작업을 해왔다. 일을 정말 잘해왔고 인정을 받으면서 커리어를 쌓아가고 있었는데, 지금은 핸들을 틀어서 프로그래머의 길을 가고 있다.
원래 어릴때부터 컴퓨터를 좋아헀다. 초등학교때 HTML 태그로 개인 홈페이지도 만들어보고, ‘열혈 C 프로그래밍’이라는 책도 구매해서 코딩의 맛을 살짝 봤었다. 중학교부터 고등학교까지는 로봇에 흥미를 가져 피지컬 컴퓨팅에 빠져있었다. 그럼에도 불구하고 디자이너가 되었던 이유는 컴퓨터 이외에도 미술, 디자인, 음악, 3D 아트, 영상, 사진, 사회과학, 물리 등 좋아하는 분야가 워낙 다양했고 모두 평균 이상으로 심취하고 두각을 드러냈었다. 성인이 되고 운이 좋게(운7기3) 디자인일이 많이 생겨 그대로 디자인으로 커리어를 만들어가게 됐다.
디자이너를 그만 두게된 것은 2년 전이다. 기업이미지 광고를 하는 디자인 회사를 다니고 있었고 클라이언트로 부터 백남준 NFT를 만드는 일을 요청 받았는데 요구사항이 꽤나 복잡했다. ‘이건 코딩으로 해결할 수 있겠는데?’ 싶어서 파이썬 스크립트로 블렌더에서 짧은 영상을 만들어냈고, 클라이언트가 꽤나 만족해했었다. 그 순간 코딩의 즐거움이 너무 좋았고 스스로 이것보다 더 어려운 업무도 훨씬 잘할 수 있는 인재라는 것을 느끼게 되었다. 날개를 펼치고 싶은 심정으로 프로그래머가 되어야겠다 결심하고 42서울에 지원하게 되었다. 회사에서 내가 퇴사한다는 것에 많이들 아쉬워했고 나를 계속 붙잡았었다. 스스로 만들어온 작업물에 대해서도 자부심이 있었기때문에, 상당히 아쉽긴 했지만, 지금 선택한, ‘최고의 프로그래머’가 되겠다는 선택이 결코 후회가 되진 않는다. 지금이 훨씬 나의 역량을 펼칠 수 있게 되었고 더욱 행복해졌다.
그리고 42서울을 선택한 큰 이유는 고등학교때부터 물리나 수학, 사회과학 분야로 친구들끼리 토론하는걸 좋아했다. 42서울은 동료학습에 중점을 둔 학교로서 듣기만 하는 수업이 아니라 유대인들의 ‘하브루타’ 교육처럼 서로 토론에 불을 붙이며 학습할 수 있는 곳이라는 점에 제일 기대가 컸었다.
42서울의 입과 시험, 한달간의 라피신
42서울에 입과하기 위해선, 두가지 시험이 있다. 하나는 온라인으로 논리력, 기억력 테스트를 보아야하고, 통과가 된다면 2단계 시험인 라피신에 응시할 기회가 주어진다. 라피신은 하루만에 모든 것이 결정나는 수능과 다르게, 한달동안 테스트가 이루어진다. 이는 꽤나 좋은 점이 많은 것이, 수능날 컨디션이 안좋아서 평소 역량보다 점수가 적게 나올수도 있다. 반면 한달간의 테스트라면 그 사람의 한달간의 평균 역량이 점수로 나오게 된다. 꽤나 마음에 드는 방식이다. 라피신은 주로 POSIX환경과 C언어를 중점으로 테스트가 주어진다. 한달이라는 시간이 길지만 테스트를 통과해야할 분량이 생각보다 많기 때문에 주7일 하루 10시간씩 학교에서 공부하고 동기들끼리 토론하며 테스트를 통과하기를 반복했었다. 4주의 기간 중 밤을 새기도 하고 집가는 버스(고속버스)에서 잠들어버려 야밤중에 충청도까지 가버린 적도 있다. 라피신이 끝났을 땐, 나의 역량을 충분히 발휘했다고 느껴졌고 과정으로나 결과로나 만족스러웠다. 이후 합격통지를 받고 본과정에 입과할 수 있었다.
2년간의 공통과정(이너서클)
42캠퍼스의 커리큘럼은 전문학사부터 석사레벨까지 많은 과제들이 존재한다. 처음에는 모두 공통과정(이너서클)을 통과해야 심화과정에서 분야를 선택해 공부할 수 있다. 이너서클의 과제중 일부는 다음과 같다.
-
첫과제: POSIX C99 표준라이브러리 만들기 첫 과제로는 POSIX의 C99 표준 라이브러리의 몇몇 기능들을 직접 low-level로 구현해보고 본인만의 라이브러리를 만드는 것이었다.
-
동시성, 병렬성 프로그래밍: 철학자 문제 컴퓨터 과학 분야에서 유명한 문제이다. 멀티스레드, 멀티 프로세스로부터 동기화 기법을 공부해볼 수 있다. 동시성과 병렬성에 대해서 고민해볼 수 있고, 병목이나 경쟁상태, 데드락 등으로 많인 생각을 해볼 수 있다.
-
운영체제: 쉘 만들기 유닉스의 bash, zsh을 직접 만들어보는 과제이다. 쉘이란 껍질을 의미하는데 운영체제의 핵심인 커널을 감싸고 있는 껍질을 의미한다. 커널과 맞닿아있는 만큼 저수준 환경에서의 개발을 경험해볼 수 있다. 명렁어 처리, 환경 변수 관리, 리디렉션과 파이프, 시그널 처리, 내장 명령어 등을 구현해야한다.
-
개체지향 프로그래밍: C++ 모듈 C++를 통해 개체지향이 무엇인지 배우는 과제이다. 언어의 특성과 기능, 개념을 학습하고 적을 할 수 있도록 도와준다. 총 10개의 모듈로 구성되어 있고 각 2번의 동료평가로 최소한 20번의 동료평가가 필요하다. 20명을 만나면서 개체지향 프로그래밍에 대해 설명하고 토론할 수 있는 과제로서 많은 것을 얻을 수 있다.
-
그래픽스 과제: 레이 케스팅으로 게임 만들기 레이케스팅 엔진을 구현하고, 2D 맵을 기반으로 3D 투시 효과를 생성해볼 수 있는 과제이다. MiniLibX라는 교육용 그래픽 라이브러리를 통해 X리이브러리와 OpenGL의 이미지 기능을 사용해볼 수 있다. 게임의 구현을 위해 플레이어의 이벤트 핸들링도 공부해볼 수 있다.
-
서버 어플리케이선: 인터넷 릴레이 채팅(IRC) 인터넷 릴레이 채팅(IRC) 서버를 C++98로 만들어보는 과제이다. IRC 규약대로 프로그램을 작성하면서 소켓프로그래밍, 네트워크 통신, 비동기 프로그래밍을 배울 수 있다. 나는 이 과제를 통해서 C++와 좋은 코드에 대해서 중점적으로 공부했었다.
42서울 장점: 세계 최대 권력 집단, 유대인의 학습방식
대학을 포함해 타 교육기관들은 수업이 있다. 말하는 사람은 교수나 강사로, 한 명뿐이고 학생들은 듣기만 한다. 듣기만 하는 수업은 쉽게 배운다는 느낌을 주지만 스스로 생각하는 힘을 길러주진 않는다. 학생들은 한국 초중고 12년간의 듣기형 교육으로 인해 교수가 정답을 알려주고 정답을 쉽게 가르쳐주길 바라는 경향이 있는 것 같다. 하지만 42캠퍼스는 speaker(교수, 강사)가 없기때문에 모두가 speaker가 되어서 학습내용에 대해서 토론하며 학습할 수 있다는 점이 매우 큰 차별성이자 장점이다. 학습 내용을 직접 말로 표현하며 설명하는 것은 단순히 듣기 수업보다 훨씬 많은 사고력을 요구한다. 뇌에 가장 많은 자극을 주고 한 번 설명한 내용은 그 토론의 상황, 상대방, 분위기, 개인적인 스토리로 인해 기억에 오래 남는다. 42캠퍼스의 3무 정책 중 ‘교수없음’은 얼핏 단점처럼 오해되는 것 같지만 직접 경험해보니 정말 큰 메리트이다. 세계 경제의 최대 권력 집단은 유대인들이고, 유대인들이 뛰어난 지성을 가진 이유는 유대인들의 학습방식, ‘하브루타’로부터 비롯된다. 유대인들은 어렸을 때부터 ‘탈무드’경전을 학습하는데 이때 나이, 성별, 계급의 차이를 두지 않고 짝을 지어 질문하고 대화, 토론, 논쟁한다는 것이다. 그만큼 직접 토론에 뛰어들며 스스로 뇌를 사용하고 상대방을 설득하는 과정이 지성을 기르는데 얼마나 중요한지 알 수 있다. 42캠퍼스는 이와 똑같은 원리를 기반으로 설계된 학교이다. 42캠퍼스에서 제공하는 것은 학생들이 모일 수 있는 공간, 컴퓨터, 과제PDF, 이 셋이 전부다. PDF로 주어진 과제에서 스스로 문제를 찾아내고 동료들끼리 토론하며 해결방안을 제시하는 과정을 계속 반복할 수 있다. 이로 인해 나중에 실제 세상에 나아가 직무를 얻어 일을 하게된다면 상사나 동료로부터 단순히 정답을 가르쳐주길 바라는 개발자가 아닌 스스로 문제를 인식하고 해결방안을 제시할 수 있는 능동적인 개발자가 될 수 있을 것이다.
공통된 목표를 가진 동료를 만나는 곳
42서울에는 1400 여 명의 학생들이 존재한다. 다양한 사람들이 존재하고 그 중, 공통된 목표를 가진 사람들을 만날 때도 있다. 나같은 경우는 게임개발자가 되고 싶고, 같은 꿈을 가진 동료들을 몇 명 만나게 되었다. 모두 인사이트가 다르다. 서로가 바라보는 시야의 내용을 공유하다보면 더욱 시야가 확장되어 있는 자신을 발견하게 된다. 서로가 발견한 블로그의 글, 책, 유튜브 영상, 깃허브 레포지터리, 레딧 스레드등을 공유하면서 내가 모르던 세계를 동료가 보여줄 때가 있다. 이러한 과정이 즐겁고 나의 시야를 넓혀주니 골방에서 혼자 공부하기 보단 나와서 동료를 사귀면서 공부하는 것도 좋다. 골방이더라도 온라인 친구를 만드는 것이 좋을 것 같다. 함께 2년간 즐겁게 공부할 수 있도록 도와준 TN, JL, JH, GH, HM, EO 님께 고맙다는 말을 전하고 싶다.
최고의 프로그래머가 되겠다는 꿈
나는 최고의 프로그래머가 되고싶다. 최고의 연봉을 받는 최고의 프로그래머가 되기위해선 무엇이 필요할까. 2년간의 42서울 생활을 통해 알게된 것은 프로그래밍과 컴퓨터과학을 그저 즐기면 된다는 것이다. 지금 당장 수능공부하듯이 공부하면 당장에는 성과가 나와도 3년만 지나면 삼수생인 셈이다. 정신이 많이 힘들어질 수도 있다. 은퇴할 때까지 공부해야할 직업이 프로그래머라면 수능공부처럼 임했다간 개발자가 되기도 전에 전의를 상실할 수도 있다. 동료들에게도 누누이 이야기하는 내용이다. 앞으로도 계속 공부해야할 운명이라면 공부 자체를 즐길 수 있는 사람이 되어야한다. 급하게 두마리의 토끼를 잡으려다가 번아웃오거나, 스스로 화를 입기보단 보다 조심히 내가 지금 스스로 공부를 즐기고 있는지를 확인하는 것이 중요하다. 공부가 정말 즐거운 사람이 된다면, 일과중에 공부가 끝나도 취미로 다시 새로운 언어를 공부해본다든지, 새로운 공부가 또 시작된다. 단지 노력만으로 전부 채우기보단, 노력과 즐거움으로 채운다면 더 오래갈 수 있지 않을까? 그러다보면 남들보다 더 많은 공부량과 경험으로 최고의 프로그래머가 될 수 있지 않을까? 라고 생각한다. 즐기는 사람을 이길 순 없다.
게임 개발이 재밌다고 느낀 이유
게임은 새로운 세계를 창조하는 일종의 예술이다. 예전에 과제를 하다가 콘솔창에 캐릭터가 ‘ICE BOLT’라는 스킬을 사용하는 코드를 작성했는데 실행하는 순간 전율을 느낀 적이 있다. 볼품없는 검은색 콘솔창에 단지 문자열이 출력된 것 뿐이지만, 내가 캐릭터에 생명력을 불어넣고 새로운 세계를 창조한 것 같은 느낌이었다. 그리고 역사적으로는 지금보다 개임 개발환경이 훨씬 열악했고 무언가를 새로 창조한다는 것은 늘 한계였다. 하지만 4kb의 벽에서 마리오가 탄생하고, 한계를 이겨내 엄청난 세계를 만들어냈다. 지금도 게임으로 현실을 넘어 새로운 세계를 창조하려는 전세계의 게임 제작자들이 크런치를 하며 노력하고 있다. 게임은 늘 우리에게 가능성을 보여주는 것 같다. 4kb의 벽을 넘어선다는 가능성 그리고 이제는 ‘실제’와도 같은 게임을 만들수 있을 것이라는 희망. 최근에 ‘사이버펑크 2077’을 만든 CDPR의 수장 마르친 얀코프스키는 게임 출시 전에 ‘사이버펑크 2077’이 실제 세계에서 할 수 있는 모든 것을 게임에서도 할 수 있을 것이라고 호언장담했고 많은 사람들이 기대했다. 실제 출시가 되었을 땐, 기술의 한계때문에 많은 기능들이 삭제되고 호언장담했던 것보단 기대 이하의 반응이었지만, 나에게는 충분히 ‘게임으로 이런것까지 구현했어?’라는 감동을 주었고 가능성은 얼마든지 열려있다고 느낄 수 있었다. 미래의 문을 열려고 시도한 마르친 얀코프스키의 도전을 어떻게 보면 실패로 보일 수 있겠지만 인생은 실패와 성공이 아니라 과정과 성공으로 이루어져 있다 믿는 편이다. 앞으로 조금만 더 시도하다보면, 그리고 실패처럼 보이는 과정들을 하나하나 이루어나간다면 언젠가는 게임이 현실을 넘어서는 새로운 세계를 창조할 수 있는 날이 오지 않을까 기대가 된다. 이러한 역사적인 시대에 게임을 제작하는데, 미래의 문을 두드리는데, 동참해보고 싶다.
여정은 계속 됩니다
앞으로의 계획은 42캠퍼스의 심화과정인 아우터 코스를 해볼 계획이다. 고성능 프로그래밍에 관심이 있어, C++, Rust, Zig 등을 더 공부해보고 싶다. 시스템 개발자나, C/C++ 고성능 서버 개발자, 혹은 게임 그래픽스 개발자같은 일을 해보고 싶다.
그리고 코카콜라 회장의 새천년 신년사의 내용이 생각난다. 인생은 일종의 5개의 공으로 저글링을 하는 것이라는 건데, 그 공은 각각 커리어, 건강, 가족, 친구, 사랑이다. 그 중 커리어는 고무공과 같아서 놓친다고 해도 다시 튀어오르지만 나머지 4개는 유리와 같아서 한번 놓치면 다시 돌아오지 않을 수도 있다고 했다. 커리어도 중요하지만 건강도 챙기고, 가족, 여자친구, 친구와도 즐거운 시간을 보내면서 훌륭한 나만의 저글링쇼를 만들어가야겠다고 계획해본다.
Leave a comment