눈에 띈 인턴 채용공고 하나
한 스타트업에서 개발자 인턴을 찾고 있습니다. 자격 요건의 일부를 그대로 옮겨 봅니다.
- 어떤 영역에서든 상위 1%의 역량을 증명해보신 분
- Researcher mindset을 가지신 분
- AI 기술에 대한 이해도가 높으신 분
- 높은 업무 강도에 대한 회복 탄력성을 가지신 분
- 기술을 통한 비즈니스 임팩트를 만들어 보신 분
- Python에 능숙하신 분
- OpenAI SDK, Vercel AI SDK 등 LLM 관련 라이브러리를 활용한 어플리케이션 구현 경험이 있으신 분
우대사항에는 Kubernetes, AWS, Kafka, Airflow, BigQuery, Elasticsearch, 메시지큐 경험, 그리고 수학/물리/정보 올림피아드 수상 실적이 적혀 있습니다.
이 채용공고가 적절한지, 현실적인지를 따지려는 게 아닙니다. 회사마다 찾는 사람이 다르고, 그 기준에는 각자의 이유가 있을 겁니다.
다만 순수하게 궁금해졌습니다. 이 모든 조건을 갖춘 사람은 어떤 사람일까? 어떤 길을 걸어왔고, 어떤 생각을 하고 있을까?
저뿐만 아니라 많은 분들이 궁금해하셔서 이번 호를 쓰게 되었습니다.
그런 사람, 있습니다.
마침 제 지인이 해당 채용공고에 적합한 사람이라 생각이 들어 바로 인터뷰를 진행해보았습니다. 이 글에서는 '그' 혹은 '개발자 K'라고 부르겠습니다.
학창 시절에 1,000만 다운로드 앱을 만들었고, 창업을 했고, 이제 곧 대학 졸업을 앞두고 있습니다. 이미 고등학생 때부터 많은 기업들의 러브콜을 받아왔었습니다. 지금은 Candid에서 학업과 업무를 병행하고 있습니다.
채용공고의 항목을 하나씩 짚어봤습니다.
| 항목 | 설명 |
| 상위 1% 역량 증명 | 구글 플레이 스토어 음악게임 카테고리 1위, 정보 올림피아드 금상 외 IT 대회 20회 이상 수상 |
| AI 기술에 대한 이해도 | 비정형 데이터를 바탕으로 AI 검색·추천 시스템 개발 중 |
| 클라우드, 대규모 데이터 등 엔지니어링 기술에 대한 이해도 | 월 3,000만원 수준의 AWS 운용 경험, IDC 클라우드 사업 중 |
| 비즈니스 임팩트 | 창업 경험, 1,000만 다운로드 앱 1인 개발 경험 |
| Researcher, 허슬 등 마인드셋 | IEEE AIoT 논문 출간, 특별한 일이 없다면 하루 대부분을 일에 투자 |
놀랍게도 정말 모두 해당됐습니다. 그렇다면 개발자 K 님은 어떻게 이런 사람이 되었을까요?
개발자 K 님의 삶
초등학생 때부터 컴퓨터를 다르게 봤던 사람
개발자 K 님은 초등학교 때 교실에 컴퓨터가 들어오는 모습을 보고 신기해했다고 합니다. 아버지가 PC방을 운영하셔서 집에는 늘 컴퓨터 부품이 널려 있어 자연스레 케이스를 열어보고, 부품을 바꾸고, 운영체제를 설치하며 놀았습니다.
그러다 이런 생각을 하게 되었다고 합니다.
"수학 공식을 텍스트로 저장해도 그건 죽어있는 정보잖아. 중요한 것은 그 공식과 논리 자체 아닐까?"
초등학교 6학년 때부터 그는 컴퓨터를 '정보 저장 장치'가 아니라 논리를 실제로 움직여 볼 수 있는 도구로 보기 시작했습니다. 수학 문제를 손으로 풀기보다 코드로 먼저 풀어보기도 했습니다.
이 시기부터 시작된 습관이 하나 있었습니다. 무엇이든 분류하고 구조화하는 것입니다. 숫자나 지명을 외우는 건 못 하지만, 추상적인 개념을 체계적으로 정리하는 건 자연스러웠다고 합니다.
쉽게 말하면 결과보다 구조를 먼저 보는 사람이었습니다. 이 특징은 이후 커리어 전체에 계속 반복됩니다.
중학생의 카톡 분석이 1,000만 다운로드가 되기까지
중학생이 된 그는 수백 명이 모인 카카오톡 오픈채팅방을 운영하고 있었습니다. 그러다 문득 대화 내용을 텍스트로 내려받아 직접 분석하고 싶어졌다고 합니다. 국어 시간에 배운 형태소 개념을 코드로 구현해 채팅 데이터에 적용했습니다. 시기에 따라 어떤 키워드가 많이 언급되는지, 채팅방의 분위기가 어떻게 변하는지를 시간 흐름에 따라 살펴보았습니다.
그때 '런치패드'라는 단어가 눈에 띄었습니다. 그 단어 옆에는 항상 '비싸다', '어렵다'라는 표현이 따라다녔습니다.
그는 이렇게 말했습니다.
"키워드를 분석해 보니까 런치패드가 계속 나왔고, 같이 나오는 단어들이 '비싸다', '어렵다'였어요. 그걸 보면서 '이게 사람들이 겪는 문제일 수 있겠구나'라는 생각을 했어요."
당시 런치패드는 실제로 약 20만 원짜리 고가의 음악 장비였습니다. 학생들이 사기에는 부담스럽고, 사용법도 복잡했습니다.
그는 생각했습니다. 모바일 앱으로 만들면 훨씬 더 많은 사람이 쉽게 쓸 수 있지 않을까?
여기서 첫 번째 중요한 선택이 있었습니다. 한 번도 해보지 않았던 안드로이드 앱 개발로 뛰어든 겁니다.
"앱 개발하는 법 자체를 몰랐어요. '나 이 기술 배울 거야'가 아니라 '나 이거 만들 거야'에서 시작했고, 거기서부터 뭐가 필요한지를 역으로 내려갔어요. 핸드폰 앱을 만들어야겠네? 내가 가지고 있는 안드로이드 앱을 개발하려면 자바로 해야겠네? 이런 식으로 내려간 거죠. 기술 결정 자체가 비즈니스 맥락에서부터 시작해서 내려간 거예요."
그런데 앱을 만들자마자 벽에 부딪혔습니다. 버튼을 누르는 순간 소리가 나야 하는데, 모바일 환경에서 딜레이를 줄이는 것 자체가 큰 문제였습니다. 여기서 그의 사고방식이 드러납니다.
"버튼을 누르면 이 정보가 어딘가에 저장이 되고, LED가 얼마나 켜졌는지를 저장할 공간도 필요하겠네? ON/OFF, 딜레이 등을 코드로 정리하면 내가 만든 노래 밖에 못 쓰니까 파일로 정의해야 많은 노래들을 담을 수 있겠다. 그럼 그 파일을 읽는 단계가 있고, 메모리에 올리는 단계가 있고, 시간 흐름에 따라 어떤 동작을 해야 하는지 정의해야겠구나."
당시 스마트폰이 60프레임이라는 건 알고 있었습니다. 그러면 대충 16ms마다 명령을 모아서 한 번에 처리하면 되고, 이걸 비동기적으로 처리할 루프가 필요할 것 같다. 이런 식으로 생각을 확장해 나갔습니다.
"그때 '비동기'라는 단어를 몰랐어요. 그냥 상시로 명령을 모았다가 처리해주는 다른 시스템이 필요할 것 같다'는 생각을 하고 있었고, 그게 '비동기' 방식이라는 것을 알게 됐어요."
이 내용들은 사실 두꺼운 안드로이드 책을 사면 중간쯤에 나오는 내용입니다. 하지만 그는 책을 차례로 넘기며 배우지 않았습니다. 만들어야 하는 것에서 출발해 본인에게 필요한 정보만 빠르게 학습한 겁니다.
중학교 3학년, 한 달 만에 MVP를 만들어 친구에게 공유했습니다. 여기서 두 번째 선택을 합니다 '내가 만든 음악만 들을 수 있는 앱'이 아니라, '누구나 음악을 만들 수 있는 플랫폼'으로 방향을 틀었습니다.
"다른 사람도 만들면 좋지 않을까? 해서 구조를 다시 잡았어요. 그냥 사고방식을 타고 타고 가다 보니까 플랫폼 성격의 프로덕트가 나와버린 거죠."
그렇게 탄생한 UniPad는 해외 유튜버, 커뮤니티를 통해 퍼지기 시작했고, 글로벌 누적 1,000만 다운로드를 돌파했습니다. 콘텐츠를 만드는 사람, 음악 팩을 만드는 사람, 음악 팩 제작 프로그램을 만드는 사람까지 다양한 구조의 고객이 생겨났습니다. 학생이던 그는 광고 수익으로 대기업 초봉에 가까운 수준의 돈을 올렸습니다.
그런데 그는 이 성공을 크게 자랑하지 않았습니다. 오히려 이렇게 말했습니다.
"분명 성과를 낸 건 맞지만, 운도 많이 따라줬다고 생각해요. 처음부터 제가 철저한 전략을 바탕으로 고도화된 사고로 설계한 건 아니었거든요. 내 능력이었으면 재현이 가능해야 하는데, 아직 그 정도는 아닌 것 같아요."
1,000만 다운로드를 혼자서 만든 사람의 입에서 나온 말치고는 꽤 담담하다고 생각했습니다.
그리고 동시에, 왜 더 성장할 수 있는 사람인지 보여주는 말이기도 했습니다.
기술 부채라는 벽을 몸으로 배운 시간
UniPad 이후 그는 점점 더 복잡한 현실 문제를 다루게 됩니다.
독학으로 개발을 해오다 보니, 어느 순간 한계를 느꼈다고 합니다.
"눈앞의 문제를 해결하려면 더 깊이 파고들어야 하는 순간이 올텐데, 그럼 학문적 시야를 갖추는 것이 도움 되겠다는 생각이 들었어요."
그런데 대학교 1학년이 되던 2020년, 코로나 사태가 터졌습니다. 그는 시간을 그냥 보내기보다, 그간 쌓아왔던 개발 실력을 바탕으로 의미 있는 일을 해보기로 했습니다. 그렇게 고등학교 동기들과 모여 주차관제 솔루션을 만들어 실제 대기업에 납품했습니다. 직접 0에서 1을 만들어가는 과정과 비즈니스가 커가는 과정을 직접 경험했습니다.
그런데 군 복무를 마치고 복귀했을 때 문제가 생겼습니다. 빠르게 만들었던 코드들이 점점 발목을 잡기 시작한 겁니다.
"기술 부채가 뭔지 그때 처음 몸으로 느꼈어요. 망가져가는 아키텍처 속에서 어떻게든 비즈니스 임팩트를 내려고 발악하는 과정이 가장 고통스러웠어요."
"당장 매출을 위해 나중에 고쳐야 할 걸 알면서도 그냥 밀어붙여야 할 때가 있어요. 언젠간 다시 뜯어 고쳐야 되는데, 뜯어 고치려면 데이터를 다시 쪼개고, 서비스를 중단해야 되고, 공지를 날려야 되고... 생각할게 너무 많아요. 그런데도 어쩔 수 없이 매출을 선택한단 말이죠. 그때가 너무 고통스러웠어요."
이 경험 이후 그는 '처음부터 구조를 잘 잡는 게 중요하다.'라는 것을 깨달았습니다.
그래서 이후 새로운 창업을 할 때는 처음부터 더 제대로 설계하려고 했습니다.
산업용 IoT 플랫폼을 만들어가는 과정 속에서 하드웨어 보드 설계부터 클라우드 아키텍처, 모바일 앱, 대시보드까지 전부 직접 만들었습니다. 클라우드 호스팅 서비스를 만들어가는 과정에서는 직접 서버실을 운영하며 대규모 트래픽 처리의 A부터 Z를 구성했습니다. 그리고 기술적인 이해와 마케팅, 영업까지, 기술이 실제 매출과 운영으로 이어지는 전 과정을 경험했습니다.
채용공고에 적힌 기술 스택들인 Kubernetes, Kafka, Elasticsearch, 메시지큐는 이 과정에서 쌓인 것들입니다. 그런데 여기서 중요한 것은 그가 기술 이름부터 외운 게 아니라는 점입니다.
"대규모 트래픽을 실제로 겪다 보니 어떤 구조에서는 뭐가 무너지고, 어떤 방식에서는 어떤 문제가 생기는지를 먼저 알게 됐어요. 기술은 그걸 해결하려다 보니 알게 된 거예요."
더 흥미로운 건 어떤 개념은 이미 비슷하게 직접 만들어본 뒤에야 '아, 이걸 이미 제품으로 만들어놓은 게 있었구나'하며 알게 되었다는 점입니다.
문제를 먼저 만나고, 나름의 방식으로 풀고, 나중에 그게 이미 존재하는 기술이었다는 걸 알게 된 겁니다.
세상을 이해해야 코드를 잘 짤 수 있다
그의 사고방식을 이해하려면, '모델링'이라는 말을 쉽게 풀어볼 필요가 있습니다. 어려운 말처럼 들리지만, 쉽게 말하면 '현실의 복잡한 문제를 컴퓨터가 이해할 수 있는 구조로 바꾸는 능력'입니다.
"결국 개발은 세상에 있는 문제를 컴퓨터로 푸는 거잖아요. 그렇다 보니까 현실이 어떤지에 대한 이해가 너무 중요해요. 현실의 문제를 디지털 세상으로 끌고 와서, 이걸 어떻게 보여주고 뭘 하고... 이 의사결정이 다 모델링 관점에서 일어나거든요. 세상과 데이터 사이의 연결 다리인 거죠."
그래서 그는 머릿속에 논리의 퍼즐들을 만들어 놨습니다.
- 이건 1:1 관계인지, 1:N 관계인지
- 그럼 화면은 어떻게 보여야 하는지
- 데이터는 어떤 구조가 되어야 하는지
- 비즈니스 요구사항 때문에 어디까지 단순화해야 하는지
이런 것들을 먼저 정리합니다.
그래서 그에게는 '코드 -> 기능 -> 화면'의 순서가 아니라 '문제 이해 -> 구조 정리 -> 화면과 기능' 순서가 더욱 자연스럽습니다.
그는 이렇게 말합니다.
"논리에서 구조가 나오고, 구조에서 화면이 나와요."
최근에는 여기서 한 단계 더 나아갔다고 합니다.
예전에는 구조적으로 완벽한 걸 더 중시했다면, 지금은 비즈니스 우선순위를 해치지 않으면서도 구조를 무너지지 않게 만드는 방법을 더 고민하고 있다고 합니다.
"이런 게 필요해" - 그의 학습은 항상 역순이다
요즘 새로운 기술을 배우는 방식도 비슷합니다.
Candid에서 채용 추천 시스템을 만들면서 벡터 임베딩이라는 개념을 다루게 됐을 때도, "벡터 임베딩을 배워야지"로 시작하지 않았습니다.
먼저 이런 고민을 했다고 합니다.
- 수많은 데이터 중에서 어떻게 후보군을 빠르게 좁힐 수 있을까?
- 기존 필터링 방식, LLM 자동화, 벡터 검색을 어떻게 섞어야 가장 성능이 좋을까?
즉, 필요한 문제 설정이 먼저였습니다.
"원하는 방식이 있는데, 이걸 연구 쪽에서는 뭐라고 부르는지 AI에게 물어봐요. 그러면 이미 개념이 있는 경우가 많고, 그럼 그 방법을 가져다 쓰는거죠."
그는 먼저 자신이 무엇을 만들고 있는지, 무엇이 비어 있는지 정의한 다음, 그 빈칸을 채우는 식으로 공부합니다.
자신을 상태가 아니라 방향으로 자신을 정의하는 사람
그에게 어려웠던 건 기술적 문제만은 아니었습니다.
"기술적인 어려움보다 방향성, 인생의 방향성, 그런 철학적인 부분에서 힘들어지는 것 같아요. 나는 너무 여러 가지를 하고 있으니까, 나는 어떤 걸 우선시하는 사람인가? 그 정의가 제일 어려웠어요."
탑티어 대학원과 Candid 사이에서 고민했을 때도 같은 질문이었습니다. 단순히 "어디가 더 좋은가"의 문제가 아니었습니다. '세상이냐, 기술이냐'를 두고 고민했습니다.
"AI가 부상하던 시기였고, 스페셜리스트도 중요하지만 제너럴리스트에 대한 수요가 더 커질 거라고 느꼈어요. 먼저 시장과 사람, 회사에 대한 공부를 해야 한다고 생각했죠. 기술만 잘해서는 안 되겠구나, 비즈니스가 어떻게 움직이고 사람이 어떤 문제를 풀고 있는지를 같이 이해해야 진짜 의미 있는 제품을 만들 수 있겠다는 생각을 많이 했어요."
5년 뒤의 모습을 물었을 때, 그는 이렇게 답했습니다.
"저는 상태로 정의되고 싶지 않아요. 기울기로 정의되고 싶어요. 내가 지금 어디에 있느냐보다, 어디를 향해 얼마나 잘 가고 있느냐가 더 중요하다고 생각해요."
일 잘하는 사람에 대한 정의도 명확했습니다.
"문제를 빠르게 파악하고 정의할 수 있는 사람, 여러 해결책 중에서 이상과 현실 사이 최선의 판단을 할 수 있는 사람, 그리고 그 이유를 설명할 수 있는 사람이 일 잘하는 사람인 것 같아요. 그리고 그 반복의 방향이 본질에 가까워지도록 비전을 설계하는 사람이 일 잘하는 사람이라 생각해요."
성장에 대해서는 이렇게 말했습니다.
"저에게 성장은 '한 단계 높은 차원에서 바라볼 수 있는 시야가 생기는 것'이에요. 예전에는 문제를 하나하나 개별적으로 대응했다면, 지금은 저만의 사고 구조가 생겼어요. 이 구조를 다른 사람과 나누고, 다른 사람이 더 빨리 성장하도록 도울 수 있을 때, 진짜 성장을 했다고 느껴요."
그리고 최근에 새로운 고민이 시작됐다고 합니다.
"그동안 모든 현상을 추상화해서 분류하고, '이런 경우는 이렇게 해야 한다'는 나만의 철학을 하나씩 정해왔어요. 근데 어느 순간부터 '아, 이게 절대적이지 않구나'를 많이 느꼈어요. 모듈식으로 딱 정의하기보다 유연성을 기르는 게 인간으로서의 가치이지 않을까 싶어요. 경험이 많을수록 유연성이 넓어지는 것 같고, 생각을 많이 하고 생각할 시간을 확보해야 한다. 뭐 이런 느낌인 거죠."
잠깐 멈추더니 덧붙였습니다.
"바라는 모습이에요. 저는 아직 못 하고 있는거 같아요."
기술을 먼저 배웠는가, 문제를 먼저 만났는가
개발자 K 님의 커리어를 CMF 3축으로 읽어보면, 하나의 패턴이 보입니다.
Problem — 시장의 문제를 먼저 만났다.
그는 기술을 배우고 나서 문제를 찾은 게 아닙니다. 런치패드가 비싸고 어렵다는 문제를 먼저 발견했고, 대규모 트래픽에 아키텍처가 무너지는 문제를 먼저 맞았고, 조직의 데이터가 흩어져 있는 문제를 먼저 봤습니다. 문제가 먼저 있었고, 기술은 그걸 풀기 위해 따라왔습니다.
"나 이 기술 배울 거야"라고 시작한 적이 한 번도 없다고 합니다. 항상 "나 이거 만들 거야"에서 출발해서, 거기서부터 뭐가 필요한지를 역으로 내려갔습니다. 이 방식이 그의 학습법이자 커리어 설계법이자 문제 해결 방식입니다. 전부 같은 구조입니다.
Capability — 문제를 따라가다 보니 역량이 쌓였다.
Kafka를 배우겠다고 해서 배운 게 아니라, 비동기 처리가 필요해서 직접 구현했더니 그게 Kafka의 개념이었습니다. 벡터 검색을 공부하겠다고 해서 한 게 아니라, 추천 시스템의 성능을 높여야 해서 파고들었더니 그게 임베딩이었습니다.
채용공고에 나열된 기술 스택 하나하나가 이런 식으로 쌓였습니다. "Elasticsearch를 쓸 줄 안다"가 아니라 "이런 문제 상황에서 이렇게 풀어봤다"가 됩니다. 그리고 그 위에 "모델링"이라는 사고 체계가 있어서, 새로운 문제를 만나도 같은 구조로 접근할 수 있습니다.
Value — 문제와 역량이 만나는 지점에서 시장이 가치를 인정한다.
중학생 때 1,000만 다운로드, 대학생 때 LG 납품, 창업 후 SaaS와 클라우드 사업. 매번 다른 도메인이었지만 '현실의 문제를 기술로 구조화해서 푸는 사람'이라는 가치는 일관됩니다.
마지막으로 남는 질문
여기서 하나의 기준을 가져갈 수 있습니다.
나는 기술(하드 스킬)을 먼저 배우고 문제를 찾고 있는가? 아니면 문제를 먼저 만나고, 그 문제를 풀기 위해 기술(하드 스킬)이 따라오고 있는가?
어느 쪽이 무조건 맞다는 이야기는 아닙니다. 하지만 결과가 비슷해 보여도 과정은 다릅니다. 그리고 면접이나 업무를 하며 확연히 드러납니다.
내가 지금 따라가고 있는 문제는 무엇인가요
유니콘 같은 사람은 하루아침에 생기지 않습니다.
초등학생 때 논리에 끌렸던 한 아이가, 문제를 따라가며 하나씩 선택을 쌓아온 결과가 지금의 모습이 되었습니다. 정답을 먼저 외운 사람이 아니라, 문제를 직접 정의하고, 필요한 것을 스스로 찾아가며 성장한 사람입니다. 그리고 아직 끝나지 않았다고 말합니다.
그래서 이 글의 마지막에 남는 질문은 이거입니다.
내가 지금 따라가고 있는 문제는 무엇인가요? 그리고 그 문제 위에서 어떤 선택들을 쌓아가고 있나요?
의견을 남겨주세요