실패에서 배우다: 실리콘밸리 스타트업 인턴 이야기

서론: 꿈의 땅, 실리콘밸리로

“실패는 성공의 어머니다.” - 토마스 에디슨

이번 포스트에서는 작년 이맘때쯤 진행한 인턴십에 대한 회고록을 작성할 예정이다.

1년이나 지난 일을 지금 와서 작성하는 이유는 실패한 경험이라 생각해서 기록하지 않으려다가 오히려 실패했던 경험을 기록하고 이 경험을 통해 성장하는 것이 중요하다고 생각해서 작성하게 되었다.

인턴십을 선택한 이유

소프트웨어 마이스터고의 선택

나는 소프트웨어 마이스터고등학교를 졸업했다. 마이스터고는 특성화고로 일반 고등학교와 달리 IT 기술에 대해 집중적으로 공부하는 학교이고, 내가 중학교 때 이 학교를 선택한 이유는 학교 소개 책자에 미국 인턴십 프로그램이 있다는 점이었다.

그때 당시 나는 개발이 뭔지도 코딩이 뭔지도 몰랐지만, 미국에 갈 수 있다는 점에 혹해서 마이스터고를 선택했다.

개발자로서의 꿈

첫 마음은 미국에 가고 싶다는 단순한 이유였지만, 고등학교 생활을 하면서 개발의 매력을 느끼게 되었고, 개발자로서 꿈의 땅이라고 생각되는 실리콘밸리에서 일하는 것이 나의 궁극적인 목표가 되었다.

글로벌 경험의 갈망

물론 한국에서 일하는 것도 좋지만, 나는 외국에서 일하는 것에 대해 더 흥미가 있었다.

왜냐하면 외국에서 일하는 것은 내가 살아온 모든 경험을 뛰어넘는 새로운 경험을 제공해줄 것이라고 생각했기 때문이다. 또한 다양한 인종이 있는 미국에서 일하는 것은 다양한 문화와 생각을 배울 수 있을 거라고 생각했고, 한글이 아닌 영어로 소통하면서 일을 하게 된다면 영어 실력도 늘 수 있을 거라고 생각했다. 그리고 듣기만 해왔던 미국 개발자들의 자유로운 문화에 대해 장단점이 궁금했고 직접 경험해 보고 싶었다.

이러한 이유들로 미국 인턴십에 참가하는 것을 더욱 갈망하게 되었고, 다양한 과정을 거쳐 미국 인턴십 프로그램에 참가하게 되었다.

인턴십 경험

A&K Systems 소개

내가 붙은 기업은 A&K Systems라는 스타트업이다. A&K Systems는 Pest-Control(해충 방제) 기업들을 위한 CRM(고객 관리) 솔루션 개발을 하는 회사이며 Sunnyvale의 Plug&Play tech center에 위치하고 있다. 나는 이 회사에서 주요 사업 분야에서 벗어난 신사업을 진행하게 되었다.

첫 출근과 기대감

인턴십 첫날, 아침 일찍 일어나 긴장된 마음으로 A&K Systems의 사무실로 향했다. 실리콘밸리의 활기찬 분위기 속에서 첫 출근을 맞이하게 되어 기대와 설렘이 가득했다.

도착하자마자 팀장님과 첫 인사를 나누었고, 내가 맡게 될 역할에 대해 상세히 설명해 주었다. 새로운 환경에서의 도전과 학습 기회에 대한 기대감이 커졌고, 팀과 함께 성장하며 의미 있는 결과를 만들어가길 바라는 마음으로 첫 출근을 시작했다.

맡은 프로젝트와 도전

내가 맡게 된 프로젝트는 앞서 말했듯이 주요 사업에서 벗어난 신사업이다.

이 프로젝트는 팀원 구성부터 진행 방식이 새로웠다. 우선 팀원 구성부터 말하자면 A&K Systems에서 이 프로젝트를 이끌 팀장(Jack)이 있었고 그 외의 팀원분들은 다른 회사를 다니시는 분이었다.
한마디로 A&K Systems에 속한 사람들이 아닌 다른 회사에 다니고 있는 분들로 이루어져 있었고 사이드 프로젝트 형식과 비슷하였다. 회사에서 이런 식으로 진행한다는 점이 신기했다.

이후 팀원분들과 만나고 나서는 차근차근 진행할 프로젝트를 논의하였다. 우선 큰 틀은 AI를 이용하여 챗봇과 같은 LLM 서비스를 만드는 것이었다. 시장 조사도 하고 경쟁사 분석도 해보면서 개발자로서 경험해보지 못한 부분들도 경험할 수 있었다. 회의 방식은 온오프라인으로 진행하면서 애자일 방식을 응용하여 Daily 스크럼을 통해 매일 회의를 진행하면서 일정을 공유했다.

기획이 어느 정도 진행된 후 개발에 들어가게 되었다. 우선 Technology skills을 결정하는 회의를 가졌다. 이 당시 프론트 멘토?팀원?분이 한 분 계셨지만 팀원분께서 팀장을 하면서 주도적으로 기술을 선택하고 개발해 나갔으면 좋겠고 리더십을 키웠으면 좋겠다는 생각으로 나에게 팀장을 맡아서 해보기를 권하셨고 나는 좋은 경험이 될 것이라고 생각해서 팀장이 되기로 하였다. 그래서 이때 정한 기술은 크게 React-Native, Context API, TypeScript 정도인데 React-Native는 우리가 계획한 프로그램이 Native로 이루어져 있었고 당시 iOS, Android 개발은 해보지도 못했던 나에게는 빠른 개발과 익숙한 환경에서 개발할 수 있을 거라고 생각했던 React-Native를 이용하여 개발을 하기로 했고, 상태 관리로 Context API를 선택했는데 이 또한 새로운 기술을 익히는 것보다 기존에 아는 기술을 통해 빠른 개발을 하기 위해 정하게 되었다.

예상치 못한 어려움들

프로젝트가 순조롭게 진행되는 줄 알았지만 문제가 발생하였다. React-Native는 내 생각과 다르게 React와는 다른 부분들이 있었고, Native적인 요소를 작업할 때는 Objective-C 또는 Kotlin을 수정해야 했다. 또한 라이브러리를 사용하려고 해도 제대로 작성되지 않은 docs와 오랫동안 업데이트되지 않은 라이브러리들로 인해 버전 문제가 많이 발생했고 환경 세팅하는 데만 엄청난 공수를 들이는 문제가 생겼다. 그렇다고 직접 만들기에는 아까 말했듯이 나는 Native에는 무지했기 때문에 라이브러리를 사용할 수밖에 없는 상황이었다. 초반 라이브러리 설정은 광기의 순간이었고 집에 가서도 노트북을 놓치지 못할 만큼 오랜 시간이 걸렸었다.

첫 실패의 순간

“실패는 끝이 아니라 새로운 시작이다.”

라이브러리 호환이나 다른 기술적인 문제는 팀원 분들의 도움을 받으면서 해결을 하였다.

그렇게 디자인 작업도 하고, 서버와 연결도 하고 AI 연동 작업도 하면서 배포를 준비하고 있었다. 우리는 처음에 프로젝트를 어떻게 배포할지 논의를 했었는데 이때 빠르게 개발해서 베타 배포를 한 후 사용자의 피드백을 계속 받는 방식 말고 투자가 들어온 후 배포를 하는 쪽으로 진행하게 되었다. 이는 회사의 리스크 때문에 그런 식으로 결정하였다. 하지만 시간이 지나도 투자자는 나타나지 않았고 결국 6개월 동안 개발해왔던 나의 첫 프로젝트, 프로그램이 배포도 하지 못하고 중단되게 되었다.

실패의 원인 분석

왜 실패했을까?

  1. 프로그램의 완성도
  2. 수익 모델
  3. 실패에 대한 두려움
  4. 자유로운 환경 속에 지켜지지 못했던 데드라인

실패의 원인으로는 이 4가지가 있는 것 같다.

처음으로는 프로그램의 완성도인데 내가 생각한 것보다 더 많은 기능을 구현해야 했고 이 때문에 시간이 더 걸렸던 것 같다. 또한 첫 3개월 동안 디자이너가 없어서 내가 임의로 디자인을 해서 개발을 했었다.

하지만 생각보다 나의 미적 감각은 똥이었고 이로 인해 UI/UX가 너무 떨어져서 프로그램의 완성도가 좋지 못했다고 생각한다. 이런 프로그램으로 투자자를 찾을 수 있었을까? 라고 생각하면 만약 내가 투자자라면 투자하지 않았을 것이라고 생각했다.

또한 수익 모델에서도 문제가 있었던 것 같다. 이는 팀장님과 팀원분들과 이야기했던 부분인데 우리 프로젝트는 채팅 프로그램 속에 AI를 도입해서 채팅 내용에 대한 요약 또는 AI와 대화를 하는 프로그램을 만들었으나 이 프로그램에 정확한 수익 모델을 창출하지 못했던 것 같다.

그리고 가장 큰 점은 실패에 대한 두려움이었던 것 같다. 투자를 받지 않은 상태에서 배포를 하게 되면 실패했을 때 회사에 가는 리스크가 클까 봐 배포를 하지 못했던 점과 이미 팀장님은 여러 번 투자를 받기 전에 진행했던 프로젝트들이 실패로 끝이 나서 더욱 두려움이 컸던 것 같고, 그 당시 상황이 많은 AI 기업들이 망해가는 상황이라 더욱 두려움이 컸던 것 같다. 때로는 죽이 되든 밥이 되든 도전하는 자세가 필요하지 않았을까? 사용자의 피드백을 주기적으로 받으면서 작업을 했다면 더욱 책임감을 가지고 프로젝트를 진행해서 더욱 완성도가 높았지 않았을까? 라는 생각을 하게 된다.

그리고 마지막으로 자유로운 환경 속에서 데드라인이 지켜지지 못했던 점이 아쉽다. 우리는 회사에 따로 출근을 하지 않아도 되었다. 카페를 가서 하든 놀러를 가든 일정에 맞출 수만 있다면 어디서 개발해도 상관을 쓰지 않았다. 이 방식에도 자유로운 환경 속에서 편하게 작업할 수 있다는 장점이 있지만 서버와 소통이 빠르게 되지 않는다는 단점이 있었던 것 같다. 어떤 API를 연결할 때 누락된 내용이나 궁금한 점을 바로바로 물어볼 수 없어 내 생각보다 일정이 늦어지는 부분들이 있었고 아무래도 소통이 가장 힘들었던 점인 것 같다.

실패에서 배운 교훈

“경험은 최고의 스승이다.”

처음에 나는 이 경험을 실패했다고 생각했다. 하지만 지금은 실패했다고 생각하지는 않는다. 실패한 경험이란 무엇인가? 경험 속에 아무런 배움이 없다면 실패했다고 생각한다. 하지만 나는 비즈니스적으로는 실패했을지 몰라도 개인적인 경험과 성장에서는 실패했다고 생각하지 않는다. 새로운 경험을 했고 그 경험 속에서 각 상황에 맞는 선택을 할 수 있는 능력을 얻을 수 있었고, 또한 나에게 맞는 일하는 방식을 알게 되었고 이 능력이 현재 나에게 많은 도움이 되고 있기 때문이다.

마무리: 새로운 시작을 위한 발판

미래의 개발자로서의 다짐

나의 첫 도전이자 실패였던 인턴십이 나에게 많은 것을 준 것 같다. 비즈니스적으로는 실패였지만 개인적인 경험과 성장에서는 많은 성장을 이루어낸 것 같다. 이제 나는 개발자로서 더욱 성장하고 있고 미국에서 일하는 것에 대해 더욱 흥미를 가지고 있고 미국에서 일하는 것에 대한 목표를 가지고 있기 때문이다.

이 경험을 통해 나는 개인의 성장만 이루었지만 앞으로는 비즈니스 즉 회사의 성장과 함께 성장할 수 있는 개발자가 되고 싶다. 어떤 문제가 생겼을 때 그 문제의 본질을 파악하고 해결할 수 있으며, 내 프로그램에 애정과 책임감을 가지는 그런 개발자가 되고 싶다.


추가 자료: 인턴십 관련 방송 영상