내가 꿈꾸는 프로그래머로 사는 삶

내가 꿈꾸는 프로그래머로 사는 삶

프로그래머로의 삶을 선택한 계기와 현재를 바라보며

  • 해당 글은 작년 우아한테크코스 3기 교육생 활동중 작성했던 글입니다.
  • 현재 시점에서 작성한지 벌써 3개월정도가 지난 글이지만, 다시 읽어보았을때 계속 기억하고 싶은 글이라고 생각이 들어 블로그에 다시 옮겨둡니다.

내가 꿈꾸는 프로그래머로 사는 삶

단순히 내가 어떤 프로그래머로 살고 싶은지만을 적는 것이 아니라, 이번 기회에 내가 왜 프로그래머라는 직종을 선택했는지에 대한 흐름을 한번 정리해보며, 어떤 마음으로 프로그래머가 되고 싶어 했는지를 한번 되돌아보고자 한다.

컴퓨터와의 만남

중, 고등학교 때 전자기기, 그중에서도 컴퓨터를 굉장히 좋아했었다.
다른 또래들과 마찬가지로 컴퓨터 게임을 좋아했고, 단순히 컴퓨터 게임을 좋아하는 것을 넘어 컴퓨터라는 물리적인 기기를 좋아했었다.
게임에만 있던 관심이, 재미있는 게임을 구동하는 컴퓨터라는 물리적인 매체에 관한 관심으로 확장된 것으로 기억한다.
어렸을 때부터 레고, 프라모델 등등 조립하는 행위를 굉장히 좋아했었는데, 컴퓨터도 결국 여러 부품의 조립체인 것을 깨달은 뒤, 중학생 1학년 때부터 컴퓨터 부품의 성능이나 특징을 공부하고, 조립하는 행위 자체에 재미를 가지게 되었다.

컴퓨터 공학을 선택하다.

중, 고등학교를 시절을 보내고 다른 친구들과 다르게 20살 때 대학을 가지 않았다. (못했다)
집안 문제, 경제 상황도 대학교에 갈 수 있는 상황이 아니었고, 고등학교 때의 나는 밖으로 나돌았으며, 미래에 대한 진지한 고민도 해보지 않는 철부지였다.
하지만 주위 친구들의 대부분은 대학을 진학하였고, 나는 친구들이 다른 삶을 사는 것을 지켜보기만 있었다.

뒤늦게 수능 공부를 하기 시작했다.
사실 수능 공부를 할 때까지도 어떤 뜻이 있어서 어떤 과를 가야겠다라는 마음을 먹고 수능을 준비하진 않았다.
그냥 현재와 같은 삶을 살기가 싫었고, 이대로는 나의 미래가 어떻게 될지 두려워졌다.
단순히 이 상황을 타개하고 싶어서 수능 공부를 시작했다.
수능 공부를 하는 것도 순탄진 않았다. 집에서는 수능 공부를 반대했었고, 돈이 없어 인터넷 강의를 통해서 혼자 공부하였다.

수능점수를 받게 되었고, 대학교와 학과를 선택해야 할 시기가 오게 되었다.
내가 좋아하는 게 무엇인지 한번 되돌아보았고, 게임과 컴퓨터를 좋아했으므로, 큰 고민 없이 컴퓨터 관련 학과를 선택하게 되었다.


재미없는 프로그래밍

남들보다 2년이나 늦게 간 대학교에서 학교생활에 집중하지 못했다.
학비 자체는 장학금으로 충당되었으나 경제 상황은 여전히 좋지 않았으며, 생활비 때문에 다양한 아르바이트를 하느라고 학업에만 집중하기가 힘들었다.
재밌는 것은 중, 고등학교 때 현실에서 도피하기 위한 목적으로 게임을 하던 것이 대학교에 와서는 금전적으로 상당히 도움이 되었었다.
RPG 게임 위주로 많이 했었는데, 해당 게임에 대한 도메인지식이 큰돈을 쥐게 해줄 수 있었다.

하지만, 선택한 컴퓨터 전공에서 배우는 C언어, JAVA 수업은 너무나도 재미가 없었다. 유일하게 재미있어 했던 것은 게임제작 과제였던 것으로 기억한다.
프로그래밍이 아니라, 컴퓨터를 좋아했으니 전자 쪽을 전공했어야 하는 게 아니었나 하는 후회를 하며 1학년 시절을 보냈다.
그리고 이어 군대를 다녀오게 되었다.

재미있는 프로그래밍

복한한뒤 2학년~3학년부터는 운영체제, 네트워크와 같은 심화 내용을 배우기 시작했고, 많은 대학 동기가 이 시기쯤 프로그래밍에 대한 재미를 잃어가기 시작했다.
하지만 반대로 나는 이 시기부터 컴퓨터 공학, 프로그래밍이 좋아지기 시작했다.

논리적으로 문제를 풀어나가고, 수학적인 지식을 컴퓨터 공학에 접목하는 이산수학 수업을 너무나도 재미있게 들었다. 누가 시키지도 않았는데 교재의 연습문제를 다 풀었었다.
시스템 프로그래밍 수업에서는 순수 c언어만으로 해시 알고리즘을 직접 구현했어야 했는데, 1인 팀으로 전체에서 가장 버그가 적고, 가장 빠른 코드를 작성하여 상대평가에서 최고 점수를 얻어낼 수 있었다.
운영체제 수업에서도, c언어만으로 OS Belady(OPT) 알고리즘을 직접 구현했어야 했다. 이 과제를 완벽히 해낸 사람이 손으로 꼽혔는데, 만점을 받을 수 있었다.
이밖에 네트워크, 보안과 관련 수업들도 굉장히 재밌게 들었다.
하지만 상대적으로 쉬운 수업에는 흥미를 느끼지 못하는 특이한 학부생이었던 것으로 기억한다.

문제를 해결하는 것에 재미를 느끼기 시작했고, 이때부터 프로그래밍이 재밌어졌다.
프로그래밍이 싫어, 한국사와 같은 자격증을 취득하며 공기업이나 가서 안정적인 삶이나 살아야지 했던 생각을 접었다.
개발자로 살아가고 싶어졌다.


취업준비, 취업, 그리고 퇴사

시간이 흘러 20년 2월 군 휴학을 제외하면 한 번의 휴학 없이 대학교를 졸업하게 되었다.
대학원 쪽도 잠깐 생각했지만, 금전적인 문제로 빠르게 생각을 접고 취업준비를 시작했다.
신기하게도 취업 준비 기간은 생각보다 그렇게 힘들지 않았다.
매일 알고리즘 문제를 푸는 것은 오히려 취미 행위와 같은 느낌이었고, 전산학 공부도 크게 부담으로 다가오진 않았다.
취업을 위한 공부만을 했던 나는, 정말 이렇다 할 프로젝트가 하나 없었지만 정말 감사하게도 나를 받아주는 곳들이 있었다.
당시 웹 프로그래밍, 게임 프로그래밍 둘 중의 하나를 선택할 수 있는 갈림길에 섰었는데, 힘든 시기의 나를 위로해줬고, 프로그래밍 쪽 길을 걷게 해준 게임 프로그래밍을 선택했다.

하지만 게임을 좋아하는 것과 게임을 개발하는 것은 달랐다.
게임을 개발하는 것과 회사에서 게임을 개발하는 것도 달랐다.

프로그래밍이 다시 재미없어지기 시작했다. 재미가 없어지는 것을 넘어 싫어지기 시작했다.
이대로는 프로그래밍을 더는 할 수 없을 것 같았다.
잘 모르는 남들은 이 힘든 시기에 그 좋은 회사를 그만두느냐고 질책했지만, 나는 행복하게 내가 원하는 개발을 하고 싶었다.
3개월간의 추억을 묻어두고, 회사를 그만두었다.


우아한테크코스에서의 새 시작

회사를 그만둔 뒤, 어떤 개발을 하는 개발자가 되고 싶은지를 계속해서 고민해보았다.
지금까지 무슨 개발을 했을 때 가장 즐거웠는지를 떠올려 보았다.

  • 지금 생각하면 허점이 엄청나지만, 나만의 암호화 알고리즘을 만들고 친구와 비밀대화를 하던 때
  • 온갖 방어를 다 뚫고, 의도한 대로 작동하는 학교 수강신청 매크로를 만들어냈을 때

공통점은 사용자에게 직접적인 영향을 주는 서비스였다.
사람들이 “접근하기 쉽고”, “이용하기 쉬운” 서비스를 만들고 싶어졌다.
사람들에게 “편리함”을 제공하고, “삶의 질을 향상”시켜주는 개발을 하고 싶어졌다.

웹 개발에 관심이 생겼고, 바로 다시 취업준비를 하기보다는 우아한테크코스에서 앞으로 어떤 개발자가 될지 고민하는 시간을 가지기로 했다.



꿈꾸는 프로그래머의 삶

중, 고등학교 시절 때부터, 대학생활, 그리고 지금까지의 삶을 글을 쓰며 되돌아봤다.
많은 굴곡이 있었지만, 결론은 내가 원하는 개발을 하는 프로그래머가 되는 게 나의 꿈이다.

내가 원하는 개발이 무엇일까

이전 회사를 그만둘 때 “내가 원하는 개발을 하고 싶었다.” 라고 말했다.
지금 시점에서 내가 원하는 개발이 무엇인지를 구체화해보았다.

  1. 사용자들이 접근하기 쉽고 이용하기 쉬운 서비스 개발
  2. 단순히 프로덕트 코드를 많이, 다양히 생산하는 것이 아닌 설계가 뛰어나고 안정성이 있는 프로덕트 개발
  3. 기존에는 해결하지 못하던 문제를 해결해주는 개발
  4. 폐쇄적이지 않고 내가 사용하는 기술에 대해 남들과 소통할 수 있는 개발

과거 제이슨이 면담에서 아래와 같이 질문한 적이 있었다.

포츈은 어떤 무에서 유를 만들어내는 과정이 더 즐겁나요, 어떤 성능개선이나 문제를 개선하는 과정이 재밌나요?

당시에는 전자로 대답했다. 하지만 지금 와서 생각해보면 너무 성급하게 대답하지 않았나 싶다.
결국 개발이란 행위 자체는 무에서 유를 만드는 것은 같다.
하지만 객관적으로 보았을때 나는 빠르게 새로운 feature를 계속 만들어 내는 것보다는,
완성도 있는 feature를 만들거나 기존의 것을 개선하는데 재미를 더 느끼는 성향에 더 가깝다고 생각이 든다.

종합적으로 내가 원하는 개발을 길게 한 줄로 나열하자면 아래와 같다.

기존에 해결하지 못하던 문제를 해결해주며, 사용자들이 많이 사용하고, 설계가 뛰어나고,
안정성이 있을 뿐만 아니라 기술에 관한 내용을 많은 사람과 공유할 수 있으며,
끊임없이 개선해 나가는 개발을 하는 프로그래머가 되고 싶다.

정말 이상적이기만 한 목표이다.
하지만 꿈은 꼭 현실적일 필요가 없다고 생각한다. 그게 꿈이니까.