brunch

You can make anything
by writing

C.S.Lewis

by 한상훈 Dec 11. 2017

[에세이] 독학으로 프로그래밍

Just write it!


저는 친구가 별로 없었습니다. 어쩌면 컴퓨터를 그렇게 좋아하게 된 계기도 혼자 있는게 편했기 때문이 아닌가 싶습니다. 처음 배우기 시작한건 부끄럽지만 친구 컴퓨터를 해킹해 장난치고 싶어 리눅스 책을 샀을 때입니다. 그땐 초등학생 때라서 인터넷에서 검색해서 들은 내용이 리눅스만 있으면 해킹을 배울 수 있다는 거였습니다. 그렇기에 리눅스 책은 해킹의 정수를 담은 바이블로 믿었습니다. 하지만 너무 컴퓨터가 안 좋았기에 책에 들어있는 리눅스 CD는 어떻게 해도 설치할 수 없었습니다. 용돈을 모아 한 권에 5만원씩 하던 레드햇과 페도라를 담은 책을 여러번 사고, 설치에는 모두 실패했지만 그래도 해킹에 대한 마음은 사라지지 않았습니다.


10년만에 들어가도 같은 모습인 해커스쿨

그러던 중 해커스쿨이라는 인터넷 사이트를 알게 되었습니다. 현재도 그렇지만 해커스쿨은 자체적인 털넷을 통해 모의 해킹을 배울 수 있었습니다. vi 에디터가 뭔지도 모르는 초등학생 때 털넷에 들어가서 남들이 알려준 코드를 복사해서 붙여넣기하며(터미널에서 붙여넣는 방법도 몰랐지만) 한 단계씩 나아갔습니다. 딱히 노트가 없어서 다 쓴 농협 달력 뒷편을 찢어다가


ls : 디렉터리 내부 보기
cd : 다른 곳으로 가기


이런식으로 적으며 공부했습니다. 하지만 안타깝게도 해커스쿨에서도 깊게 배우진 못했습니다. 답안지를 보지 않고선 뚫을 수도 없었고, 수 백 페이지의 리눅스 책은 해커스쿨의 문제를 풀기엔 너무도 방대했습니다. 그렇게 중학생이 되었고, 리눅스와 해킹을 포기한 저는 우연한 계기로 웹을 배웠습니다.




10년 넘게 한결같은 올드함이 느껴지는 피지알21

저는 10년 이상 PGR21이라는 사이트를 이용해왔습니다. 이 사이트는 굉장한 아재 사이트라 저처럼 어린 사람은 별로 없지만 중학교 2학년쯤 되었을 때 한가지 아이디어를 발견했습니다. 당시엔 스타크레프트는 점점 사람들이 떠났지만 리그 방송은 꽤나 잘 나갔습니다. 그러던 중 하마치라는 프로그램을 알게되었는데, 이 프로그램을 사용하면 로컬로 렉 없는 게임(일반적인 1:1)을 할 수 있었습니다. 당시 스타크레프트 배틀넷은 렉이 심했기에 고수들은 제대로된 경기를 즐기기 어려웠습니다. 하마치는 이걸 해결해줄 수 있었는데 한가지 단점이 있었습니다. 그건 서로 같은 채널에 들어가야 한다는 점이죠.


이 점에 착안해서 하마치로 게임도 즐기고, 채널을 서로 만들면 그 안에서 커뮤니티를 만들 수 있을 거라 생각했습니다. 그래서 이 커뮤니티를 만들기로 구상하고, 직접 방법을 검색하기 시작했습니다.


생각을 구현하기


웹을 제작하는 방법은 당시에 몇 가지 방법이 있었는데, 많은 한국의 커뮤니티들은 제로보드(현 Xpress)를 사용했습니다. 게시판과 댓글 위주의 홈페이지를 만들기에 최적화 되어있고, 무엇보다도 쉬웠습니다. 제로보드를 사용해서 웹서비스를 만드는건 예나 지금이나 어렵지 않은 일이었고, 아무것도 모르는 중학생도 할 수 있는 수준이었습니다. 그 덕분에 며칠만에 사이트를 만들었고 피지알에 홍보글도 남겼습니다.


사이트의 이름은 피마치(피지알 하마치의 줄임말)였습니다. 게임 게시판에 글을 올리니 사람들이 속속 들이 들어와서 금새 장사진을 쳤습니다. 처음 만들어진 커뮤니티라고 해서 컨텐츠를 자발적으로 올리시는 분들도 많았습니다. 저는 기세등등 해져서 피지알 운영진 분들에게 피지알 메인에 피마치 링크를 추가해달라고 건의도 보냈죠. 하지만 너무 잘됬기 때문인지, 필연인지 피마치는 망했습니다.


큰 이유가 있었습니다. 바로 돈입니다. 사람들이 들어오고, 컨텐츠를 볼 때마다 트레픽이 발생하는데 제가 쓰는 트레픽은 한 달에 2만원이었습니다. 이 정도면 몇 백명이 왔다갔다만 해도 사라지기 때문에 하루 천 명 이상이 들어오는 사이트로는 부적합했습니다. 사이트가 매일 차단되니 사람들은 너무 트레픽이 적다고 쪽지를 보내기 시작했습니다. 그렇다고 중학생으로 돈도 없던 저는 부모님께 돈을 더 받을 수도 없었습니다. 이로써 수익모델이 없는 비즈니스의 아픔을 느끼며 피지알에서도 닉변하고, 사이트도 폐쇄할 수 밖에 없었습니다.


현실을 직시하기


이후의 삶은 열심히 공부하는 고등학생과 진로를 고민하는 대학생의 삶을 살았습니다. 그러나 짧지만 피마치를 운영하며 많은 사람들이 해준 응원을 기억하고 있었습니다. 또한 잠도 안자며 홈페이지를 만들던 기억이 살아있었습니다. 그래선지 저는 시간이 생길 때마다 이런저런 프로젝트를 시작했습니다.


워드프레스를 이용해서 유튜브를 만드려고 했고, 과학 기술을 다루는 포럼을 제작했습니다. 물론 한 달간 36번 정도의 조회수만 있었을 뿐이지만 말이죠. 그러면서도 삶에선 진짜 바라는걸 전력으로 하진 못했습니다. 대학원에 가야한다는 고민도 있었고, 풀리지 않던 군대도 있었죠. 동아리에서 답을 찾아보려고도 했고, 교회에서 삶의 대부분을 보내기도 했습니다. 이런 방황을 하면서 살다보니 내가 어떤 사람이고 무엇을 바라는지 알겠더군요. 그래서 어플리케이션을 만들게 되었습니다.


대학원이 해결해 줄 수 있던 여러 삶의 이유들을 덮어버리고 하고 싶은걸 하기로 결정했습니다.

어플리케이션을 만들자. 2달 안에 만들자.


열심히 배웠습니다. 이제는 달력종이가 아니라 쓰던 노트에 필기했고, 얼마 안되는 용돈을 모아 안드로이드 책을 샀습니다. 컴퓨터는 느려서 안드로이드 스튜디오를 돌리면 버벅대며 괴로워했습니만 멈출 순 없었습니다. 대학원도 때려치고 백수에 군대도 안간 아들을 바라보는 부모님께 죄송해서 매일 매시간 성장하지 않으면 안됬습니다. 적게 하면 8시간, 보통 12시간씩 공부하고 프로그래밍을 반복하면서 자바(안드로이드 앱을 만들때 쓰는 컴퓨터 언어)의 1도 몰랐으나 결국 어플리케이션을 만들게 되었습니다.


한 30%쯤 완성되었을 때, 부모님의 주시는 용돈을 받아 사는게 불편해 아르바이트를 시작했습니다. 낮에는 피씨방에서 일하면서 코드를 쓰고, 밤에는 써둔 코드를 프로그램에 돌려보며 하루를 보냈습니다.(그 당시 글) 그리고 6개월쯤 지나고 저는 '월스트리트:블락 딜' 이라는 게임을 거의 완성하게 됩니다.


게임을 거의 완성했을 무렵 저는 프로그래밍을 근본부터 배우지 않았음을 후회했습니다. 이유는 제가 만든 이 게임은 굉장히 유동적인데, 아주 정적인 방식으로 제작되었기 때문입니다. 이름에서 알 수 있듯 제가 만든 게임은 주식 시장으로 수많은 거래가 발생하는 동적인 구조입니다. 주가 처럼 가격이 지속적으로 변동한다면 이를 감당하는 서버도 매우 유동적이어야 됬습니다. 그러나 제가 사용한 기술들은 매우 정적인 서비스에 적합하게 구조화 되어있었습니다. 즉 사용자가 한 명 한 명 늘어나게 되면 서버는 엄청난 연산에 느려지는 구조였습니다.


저는 크게 좌절했습니다. 몇 달간 고생하면서 만든 서비스를 제대로 출시하지도 못했습니다. 마지막 튜토리얼과 이펙트 정도를 수정하면 되는 단계였지만 정신적으로 완전히 탈진했기 때문입니다. 그렇게 보름쯤 지나면서 잘 될지 안될지, 그리고 온갖 문제가 산적해 있는 게임이 아니라 정말 쓸모 있는 일을 해보자고 마음을 먹었습니다. 하지만 제게 남은 시간이라곤 입대까지 4개월 남짓이었습니다.



쉬우면서 또 어려운 일

저는 컴퓨터를 배우는게 무엇보다 쉬우면서 어렵다고 생각합니다. 어플리케이션을 몇 달간 독파하면서 게임을 개발했지만, 근본적으로 잘못 만들었다는걸 몰랐습니다. 만약 제가 그걸 알았다면 데이터베이스를 짤 때 NoSQL을 활용해서 더 느슨하게 만들었을 것입니다. 서버도 비동기식으로 가볍게 제작했을겁니다. 하지만 바로 앞에 있는 걸 보기에도 버겁다보니 많은 노력이 결과를 맺진 못했습니다.


그러나 분명 할 수 있는 일입니다. 제가 여유가 있었다면 기존의 코드를 갈아엎고, 만들었던 데이터베이스를 다시 설계해서 시작할 수 있었을 것입니다. 기본이 탄탄하지 않았기에 발생한 필연적인 일일 뿐입니다. 그러나 어떤 프로젝트를 끝까지 이끌어 갈 수 있었던 것은 제 안에 세 가지 이유가 있었기 때문이라 생각합니다.

현재 에어데스크(크롬 확장 프로그램)

첫째는 두려워하지 않습니다. 저는 새로운 기술에 두려움이 없습니다. 프로그래밍을 10년했던 사람이라도 새로운 언어와 새로운 프레임워크는 계속 나타납니다. 프로그래밍의 세계는 기본적으로 진화하지 못하면 도태되는 정글과 같습니다. 자신이 모른다고 겁먹을 필요도 없고, 안다고 해서 자만할 수 없습니다.



첫번째 프로그램(오로라 플래너)의 아이디어 스케치

두번째는 생각을 실현합니다. 많은 프로그래머 학부생들이 있지만 저는 적극적으로 오픈소스와 여러 프로젝트에 참여하는 개발자를 보지 못했습니다. 해커톤에 참가하고, 오픈소스에 기여하면서 자신의 역량을 늘리는 개발자는 소수입니다. 즉 대부분은 자신의 스킬을 발전시키기보단 회사에서 필요로 하는 정도에 맞추거나, 그 이상으로는 발전하지 못하는 모습입니다. 제 친구가 일하는 곳에선 10년은 된 프로그램을 수정해서 쓰느라 이제는 쓰지 않는 프레임워크를 계속 쓰고 있다고 합니다. 생각을 구현하고, 자주 실패한다면 무엇이 가능하고 무엇이 하기 어려운지 빠르게 학습할 수 있습니다.


세번째는 해커적 마인드입니다. 해커는 들어가지 못하는 곳을 침투합니다. 남들이 안된다고 하는 걸 합니다. 현재 조건으로는 막막해보입니다. 군대 사지방에는 깔 수 있는 프로그램도 얼마 되지 않습니다. 컴퓨터 사양은 거의 최저 수준입니다. 사용할 수 있는 시간도 제한적입니다. 그럼에도 답을 찾아낼 수 있습니다. 마찬가지로 서버를 운영할 돈이 없다면, 서비스를 무료로 하기 어렵다면, 답을 찾아내서 만들면 됩니다. 이런 공격적이고 해커적인 마인드로 자신을 성장시키는게 무엇보다 중요하다 생각합니다.


저는 생각을 실제적이고 공격적으로 합니다. 아이디어가 생긴다면 노트에 그립니다. 또한 스스로에게 스토리텔링을 하고, 그것이 세상에 미치는 영향을 생각해봅니다. 비록 현재 그걸 이룰 수 있는 실력이 없다고 해도 말입니다. 그리곤 백그라운드가 되는 기술을 조사합니다. 제가 굳이 개발하지 않아도 되는 요소가 있는지 오픈소스와 무료API들을 찾습니다. 실현하는 방법을 조사합니다. 웹서버가 필요한지, 혹은 프로그램을 짜서 만들지, 혹은 모바일 디바이스에 적합할지. 제가 제작하고 있는 에어데스크는 사실 확장 프로그램으로 만들기보다 어플리케이션으로 구현하기 더 쉬운 부분이 많습니다. 그러나 군대라는 특수한 환경이 어플이 아닌 확장 프로그램을 만든 이유입니다.


그러나 저는 아직 최고의 자리에 못올라갔기에 그 이상의 이야기는 할 수 없습니다. 그렇기에 저보다 뛰어난 프로그래머들의 글을 참고하는데, 그 중에서 큰 도움이 된 링크를 남기고 글을 마치겠습니다.




이 글을 그만 읽고 아무거나 배우세요. 


어려운 것을 쉽게 배우는 방법 : 슈퍼 파워를 장착하기 위한 3단계 학습법


훌륭한 자바스크립트 개발자가 되는법


파이썬을 배우는 최고의 방법


[번역] 더 나은 개발자가 되는 8 가지 방법


[번역] 탁월한 프론트엔드 엔지니어가 되는 법




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari