본문 바로가기
  • 책과 글
Essay/IT

개발자는 무엇을 개발하나요?

by twfnm67 2022. 1. 29.

2016년(대학교 2학년)에 나는 '개발자'라는 꿈을 가지게 되었다. 그리고 친구들에게 말했다.
"나는 개발자가 될거야."
그 때 한 친구가 물었다.

"개발자는 뭘 개발하는데?"


지금이야 개발자 구인난 시대라고 할 만큼 '개발자'라는 직업이 워낙 수요도 인기도 많아져서, 어렴풋이라도 개발자가 뭔지 대부분 알고 있을 것이다. 아마 IT를 전공하지 않은 학생이나 일반 사람들도 '개발자'는 소프트웨어를 개발하거나, 혹은 우리가 사용하는 웹사이트 및 모바일 어플리케이션을 개발하는 사람이라는 정도는 짐작할 것이다. 하지만 당시에 친구가 물었을 때, 나는 개발자가 대체 뭘 '개발'하는 사람인지 몰랐다.
그런데 어떻게 꿈이 개발자일 수가 있느냐 묻는다면, 나는 애초에 개발이 하고 싶어서 개발자를 꿈꾼 게 아니다. 학교에서 우연히 들은 파이썬과 자바(프로그래밍 언어) 강의가 잘 맞았고 재미있었다. 마침 진로를 고민하던 시점이었는데, 교수님께서 코딩 열심히 하면(정확히는, 알고리즘 공부 열심히 하면) 개발자로 취업할 수 있다고 하셨다. 나는 코딩도 좋아하고 알고리즘 문제 푸는 것도 좋아했기에, '개발자로 취직하면 되겠다'고 생각했던 것이다.
그러면서도 내내 풀리지 않는 의문이 있었다. '주어진 문자열을 거꾸로 뒤집어 출력하시오', '주어진 상황에서 아기 상어가 몇 마리의 물고기를 잡아먹을 수 있는지 출력하시오', '주어진 상황에서 나타나는 숫자들의 합의 최대값을 구하시오' 등의 문제를 풀면서 생긴 의문이다. 대체 이렇게 수학 문제 풀듯 코딩 문제를 하나하나 풀어가면서 내가 뭘 준비하고 있는 거지? 이런 문제를 잘 풀어야 개발자가 된다는데, 대체 뭘 개발하는거지?
하루는 개발자가 뭔지 인터넷에 검색을 해본 적도 있다. 하지만 웹 개발자, 앱 개발자, 프론트엔드 개발자, 백엔드 개발자, 풀스택 개발자, 자바 개발자, 파이썬 개발자 등 개발자의 종류가 너무 많은 것이다! 심지어 나는 웹과 앱, 프론트엔드와 백엔드가 뭔지도 몰랐다. 나는 그냥 알고리즘 문제만 성실히 풀던-지금 생각해 보면 그닥 성실히 풀진 않았던 것 같다- 학생이었다.
그러던 중 내 인생에 작은 변화가 일어났다. 한 대기업에 'SW 개발자'라는 직군으로 인턴을 하게 된 것이다. 2개월 간의 짧은 인턴을 하면서, 나는 개발자라는 직업에 대해 감을 잡을 수 있었지만 한편으로 내 꿈에 대해서는 회의감을 가지게 되었다. 내가 인턴을 하는 동안에는 그동안 풀었던 코딩 문제들을 써먹을 기회가 도무지 없었다. 다만 내가 처음 써보는 온갖 프레임워크-가령 스프링, 안드로이드스튜디오, Appium 등-에 익숙해지는 데에 많은 시간과 정신적 에너지를 소모해야 했다(힘들었다는 뜻).
물론, 이런 툴들을 이미 알고 있거나 써본 경험이 있는 동기들은 좀 더 수월한 인턴 생활을 했었는지 모르겠지만, 나에게는 너무나도 힘든 시간이었고 그에 비해 큰 보람을 느끼지 못했던 시간이었다. 왜냐하면 나에게는 그 일이 그동안 내가 꿈꿔왔던, 어떤 거창한 수학 문제를 풀어나가거나 혹은 문제 해결을 위한 위대한 발명을 해내는 일처럼 느껴지지 않았기 때문이다. 단순히 프레임워크에 익숙해지고 이미 존재하는 모듈을 가져다가 최대한 내 것처럼 잘 써먹는 일로 느껴졌다.
결론적으로, 나는 개발자로 가는 길을 택하지 않았다. 내가 실제로 취업을 할 당시에 나는 총 세 곳의 기업에 합격을 했고 그 중 두 곳에는 개발자로, 한 곳에는 아키텍트로 채용이 되었다. 지금은 3년차에 접어든 클라우드 아키텍트이다.
물론 2개월 간의 짧은 인턴 경험으로 개발자라는 직군을 판단할 수는 없다. 그래서 현직 또래 개발자 중 내가 아는 한 가장 스마트하고 개발을 '사랑'하는, 한 개발자를 인터뷰하였다.


Q : 자기소개를 해주세요.
A : 토스페이먼츠에서 코어플랫폼 개발을 맡고 있는 주니어 개발자로, 백엔드 서버 개발을 하고 있는 3년차 개발자입니다.

Q : 왜 개발자라는 꿈을 꾸기 시작했나요?
A : 우연이었죠. 평범하게 전공 공부를 하던 문과 출신 대학생이었는데, 어느 날 어떤 IT 동아리에 들어가서 개발에 눈을 떴습니다. 그러다보니 어느 날 개발자를 좋아하는 세상이 오게 됐고, 그건 우연이었죠. 그래서 개발자를 하게 됐어요.

Q : 개발자라는 것이 무엇인지 정확하 알고, 개발자를 준비하신 건가요?
A : 아니요. 그것은 지금도 고민하고 있는 주제입니다. 대학생 때는 이런 개발을 할 줄 몰랐거든요. 제가 생각하는 개발자의 모양과 실제는 달랐죠. 하지만 아직까지는 괜찮은 수준이다, 라고 말할 수 있을 것 같아요. 예상치 못한 현실에 당황하긴 했지만.

Q : 대학생 때 꿈꿨던 개발자는 무엇이었나요?
A : 밑바닥부터 코드를 짜고 프로덕트를 만들어내서 시장에 내놓는, 풀스택 개발자 혹은 올라운드 개발자(?)를 꿈꾸었고, 더 어려운 종류의 코딩도 해보고 싶었습니다. 이 두 가지 모두 다 현재 회사에서 하는 것과는 거리가 멀죠. 예전에는 필요한 게 있으면 자기가 만드는 게 당연한 일이었다면, 해외에서는 일단 프로덕트에 집중하고 필요한 것을 제공하는 각종 서드파티 사스(3rd party SaaS)를 사용해서 무언가를 만드는 것이 어느 시점부터 디폴트가 되었습니다. 우리나라도 어느 시점부터 그렇게 되었죠. 돈을 내고 API를 사게 되는.. 작은 프로젝트도 십 수개의 작은 프로덕트를 덕지덕지 바르는 상황입니다. 저는 이런 비즈니스 지향적인 마인드보다는 기술 지향적인 것 같아요. 많은 개발자들이 실제로 이 사이(비즈니스와 기술 사이)의 어느 회색지대에 서 있는 것 같습니다. 개발자라는 것은 코드를 보는 사람들이라고 생각하는데, 사람마다 생각하는 그 코드의 범위가 좀 다양한 것 같습니다.

Q : 코딩이랑 개발자는 일치하는 영역인가요?
A : 꽤 일치한다고 생각합니다.

Q : 코딩이 좋으면 개발자를 할만 하다고 생각하나요?
A : 네. 그런데 코드의 종류가 굉장히 넓습니다. 저에게 있어서 개발은 곧 코딩인데, 단지 그렇게 보이진 않는 것 같습니다. 코딩이 아니라 단지 애플리케이션을 만드는 사람들처럼 보여지는 것 같습니다. 하지만 저는 더 넓은 세계가 있다고 생각해요.

Q : 그럼 개발자는 뭘 개발하죠?
A : 코드로 할 수 있는 것은 뭐든이죠. 웹 페이지, 앱, 모바일 페이지, 프로그램, 프레임워크, 라이브러리, 운영체제 등이 있겠죠. 그것 외에도 지금 이 카페에 나오는 노래 조차도 누군가는 그 안에 들어가는 임베디드 소프트웨어를 만들었겠고, 이 노래가 와이파이를 통해 나온다면 그 안에 들어가는 모듈을 프로그래밍 하는 사람도 있겠죠.

Q : 그렇다면 개발자를 꿈꾸는 사람들은 이 많은 개발의 영역 중 자신이 무엇을 하고 싶은지에 대해 언제, 어떻게 결정할 수 있을까요?
A : 그게 정말 힘든 영역이죠. 왜냐하면 저는 그나마 이런 종류에 관심을 가지는 사람들이 주변에 있었습니다(컴퓨터 동아리). 그러나 일반적으로 정보가 부족한 사람들은 개발을 하고 싶어하는 첫 번째 이유가 일종의 ‘네카라쿠배’ 기업들이 만드는 서비스 혹은 어플리케이션을 보고 그런 생각을 할 것이라고 생각합니다. 따라서 그걸 정하는 것은 정말 어려운 지점이라고 생각합니다. 올림픽 종목을 예로 들자면 펜싱, 육상 등에서도 여러 분야가 세부 종목으로 나누어져 있지만 선수들은 처음 자신이 운동을 시작할 때 과연 처음에 그저 펜싱 혹은 육상이 하고 싶었을지, 아니면 그 중 특정 세부 종목이 하고 싶었을지 생각해보는 것과 비슷한 것 같아요. 저는 똑같다고 생각합니다. 코딩을 하다 보면 알 수 있다고 생각합니다. 물론 모든 분야를 알기는 어렵지만, 계속 하다보면 본인이 알 수 있다고 생각합니다. 그래서 출발 지점에서는 뭐든 해봐야 한다고 생각합니다.

Q : 어디서부터 어디까지가 개발이며, 어떤 분야로 들어가야 하는지 어떻게 결정을 할 수 있을지 모르겠습니다.
A : 그건 정말 어렵습니다. 사실 그런 지점에서는 이 분야가 매우 불친절한 분야이죠. 한가지 다른 이야기로 넘어가자면 출발지에 대한 저의 생각은, 좋은 사람을 좋은 때에 만나는 것만큼 중요한 것도 없다고 생각합니다. 이 분야는 도제식 교육이 기가 막히게 잘 들어맞는 영역이라고 생각합니다. 네이버, 카카오 등에는 입사할 때부터 부서를 정할 수는 없습니다. 따라서 아무 데나 들어가게 되는데 그 팀에 나의 평생 은인이라고 할 수 있는 사람이 앉아있을 수도 있고, 아닐 수도 있죠. 그 한 순간에 우연히 갈라지는 부서 선택으로 인해서 능력이 달라지게 되는 경우가 더러 있습니다. 이는 본인이 컨트롤할 수 있는 영역은 아니죠. 따라서 자신이 개발자가 되고 싶다는 생각을 했을 때 운이 좋게도 주변에 관련 업계의 선배나 인맥이 있다면 훨씬 수월해질 수 있습니다. 하지만 그렇다고 해서 그렇지 못한 사람이 훨씬 뒤처지게 되는 것은 아닙니다. 결국 능력과 운의 조합이 매우 강력하다고 생각합니다. 하지만, 결과적으로는 모든 사람들이 다 비슷한 시기가 있었고, 그렇기 때문에 첫 출발에서는 뭐든 해보는 것이 가장 중요하다고 생각합니다.

Q : 그러면 우리 또래의 현직자 입장에서, 이 정도의 경험치를 가진 개발자로서 지금의 고민은 무엇인가요?
A : 이 분야가 저에게 맞는지에 대한 고민이 있어요. 이 도메인, 개발 분야(서버 개발), 하루하루의 개발 고민, 혹은 개발이 내 업이 맞는지에 대한 고민입니다. 코딩을 하는 것은 좋은데 제가 기대한 것과는 조금 다르기 때문이죠. 물론 지금도 싫은 것은 아닌데, 저는 제가 코딩을 하면서 가장 행복한 선택지를 고르고 싶을 뿐입니다.

Q : 개발자로서의 next step이나 최종 목표는 무엇인가요?
A : 저는 개인적으로 비즈니스 지향적인 개발자는 아닙니다. 이 프로덕트의 성공보다는 제 코드가 아름답게 짜여지는 것이 더 중요합니다. 코드를 잘 짠다는 말은 결국 나중에 어떤 새로운 기능이 들어왔을 때 더 붙이기 쉬운 코드라는 뜻입니다. 101번째 기능이 추가될 때 나머지 100개의 코드를 고치지 않는 거죠. 저로서의 목표는 유명한 개발자가 되어 제가 짠 코드를 전 세계 사람들이 썼으면 좋겠습니다. 그것이 프로덕트, 라이브러리 등 여러 형태가 될 수도 있겠죠.


내가 개발자를 꿈꾸던 대학생 시절일 때 알았으면 좋았을 것들, 그 당시의 내가 궁금했던 것들을 위주로 인터뷰를 진행했다. 결국 개발자를 꿈꾸는 사람도, 현직 개발자도, 개발자로서 성공한 사람도 모두 자신의 ‘next step’에 대한 고민은 하고 있을 것이다. 그리고 자신이 꿈꾸는 그 ‘next step’의 세계에는 무엇이 있을지 확실하게 알 수 있는 사람은 없다. 그럼으로 내가 인터뷰를 진행하며 가장 인상 깊었던, 그리고 공감 되었던 부분은, ‘무엇이든 일단 해보는 것이 가장 중요하다’는 점이다.

그리고 개인적인 경험을 통해 전달하고자 하는 추가적인 메세지가 있다면 다음과 같은데, ‘IT 직군에 꼭 개발자만 있는 것은 아니다’라는 점이다. 나는 커리어가 어쩌다가 참 특이하게도 여기까지 왔는데, 개발이 뭔지는 커녕 컴퓨터가 어떻게 돌아가는 지도 모르고 심지어 관심도 없었던, 그런 내가 인프라로 경력을 시작했다. 당시에는 인프라 아키텍트라는 직군이 있는지 상상도 못했다. 그러니, 너무 좁게만 생각하지 말고, 자신이 관심있는 분야에 대해 깊이 파고들고 또 무엇이든 접해보고, 본인이 흥미를 가지는 ‘지점’에 가장 가까운 일을 할 수 있어야 한다. 설령 시작이 그러지 못할지라도, 계속해서 자신이 원하는 것을 찾아나가야 한다.

그리고 그 과정에서 최대한 다양한 사람들로부터 다양한 정보를 접할 수 있다면 그것은 금상첨화!

댓글