Skip to main content

Initial StartUp(극 초기 스타트업 경험)

· 35 min read
Alex Han
Software Engineer

데이터 분석 직무로 이직했던 극 초기 스타트업에서의 이야기입니다.

지원

IT 구인난이었는지 사람인에 이력서 업데이트만 했는데도 아주 많이 연락이 왔습니다. 얼마 되지 않는 경력인데도 실무를 해 본 신입이라는 것이 좋은 타이틀이 된 것 같습니다.

하지만 직무는 거의 프론트엔드였습니다. 이전 회사에 지원했던 것처럼 일단 회사에 들어가고 직무를 변경해 보자라는 생각은 이전 회사의 밀당 경험 덕분에 일찍이 포기했습니다. 그래서 이번에는 확실히 데이터 분석 직무에 지원했습니다.

검색하다 보니 데이터 분석 직무는 여전히 석사 이상, 캐글 대회 수상자 등 진입장벽이 높았습니다. 오랜 검색 끝에 경력이 적어도 데이터분석 직무를 시켜주는 스타트업을 찾았습니다. 워낙 희귀했기 때문에 당장 그곳에 지원했습니다.

헬스케어 분야의 빅데이터를 통해 서비스를 하고자 하는 초기 스타트업이었습니다. 휴가를 내고 면접을 보러 갔는데 대표님이 생각보다 젋어 보이시는 여자 대표님이셨습니다.

대표님은 데이터 분석 직무로 입사하지만 스타트업 특성상 다른 개발 업무들도 같이 수행할 수 있다는 이야기를 했습니다. 스타트업의 구조상 인력이 부족하면 자금이 부족할 때 인력으로 막아야 하는 것은 이전 회사에서 경험해 봤으니 그 정도는 각오가 되어 있었습니다.

그렇게 순조롭게 면접을 마무리 짓고 연락을 기다렸습니다. 며칠 뒤 입사해달라는 연락이 왔고 다니는 회사에 바로 알린 뒤 2주 간의 인수인계를 거치고 입사하게 됐습니다.

입사일

입사 당일, 동탄에서 판교 직행 버스로 출근하다가 미금으로 출근하려니 버스를 갈아타고 시간도 오래 걸려서 첫 날이기도 하고 아주 일찍 출근했습니다. 사무실에는 아무도 없었고 당연히 문도 열리지 않았습니다.

사무실 앞에서 노래 들으면서 1시간 가까이 대기했던 기억이 납니다. 대기하다 보니 9시 10분 쯤 되서 어떤 남자분이 걸어왔는데 문 앞에 서 있으시길래 물었더니 그 분도 오늘이 입사일이었습니다.(앞으로 영님이라고 합니다)

그러고 조금 시간이 더 지나 9시 30분 쯤 되자 대표님과 함께 남자 2명이 같이 나타났습니다. 남자 한 분은 나이가 좀 있어 보였고 한 분은 어려 보였는데 남자 분의 부하 직원처럼 나이 있으신 분이 지시를 했습니다.

사무실 문을 얼른 열어주더니 먼저 비밀번호를 알려줄 걸 그랬다며 미안해 하셨고 컴퓨터 부품들을 들고 와서 먼저 왔던 영님과 짐 옮기는 걸 도와 셋팅을 시작 했습니다. 알고 보니 3명 모두 3명이 팀으로 구성해서 이제 시작하는 동기들이기 때문에 입사일을 맞췄다고 합니다.

나이 있으셨던 남자 분은 대표님의 남편분(앞으로 교수님이라고 함)이셨고 그 어린 남자 분은 교수님의 제자(앞으로 석사생님이라고 함)였습니다. 영님과 석사생님과 나, 교수님, 대표님은 회의를 시작했고 회사의 연혁을 상세히 말해주셨습니다.

대표님은 원래 브랜딩 분야에서 경력이 많고 그 분야의 강의로도 꽤 높은 수입을 얻고 계시다가 교수님이 하고 싶은 사업이 있다며 대표님 이름을 빌려서 시작한 사업이 현재의 사업라는 것. 그 동안 투자 유치를 하고 인력을 뽑아 개발 중 수 차례 실패했고 이번에 다시 투자 유치에 성공해 이번엔 제대로 진행하려고 하고 기획은 거의 완성단계에 있다고 했습니다.

완성 단계에 있는데 초기 인원이 지금 입사한다는 것이 뭔가 이상했습니다. 역시나 불안한 느낌은 틀리지 않았고 실제로는 기획서, 요구사항, 그 어떤 것도 없는 그냥 대화하면서 이런 앱을 만들자 정도의 기획이 되어 있었습니다.

데이터 분석 직무를 하려고 들어왔으니 참아보자 생각했지만, 면접 당시 곧 출시할 듯한 늬앙스로 말씀하셔서 기대했는데 실망스러웠습니다. 역시 쉽게 하고 싶은 일을 할 수는 없는건가 생각하며 앱을 런칭해 데이터를 모으면 데이터를 다루는 업무를 해볼 수 있어! 라며 마음을 다 잡았습니다.

그렇게 가져온 노트북을 셋팅하며 하루가 지나갔고 첫 날이기 때문에 저녁 때 고기를 같이 먹자며 회식을 했습니다. 고기를 조금 먹고 내일부터 다 같이 열심히 해보자고 기약하며 하루가 끝났습니다.

프로토타입

다음날 아침 교수님이 또 나타났습니다. 아침 회의가 시작됐고 원하는 앱에 대해 이야기하고 얼마나 걸릴 것 같냐고 묻더니 우물쭈물 생각하던 사이 1.5주만에 프로토타입을 만들어 달라고 했습니다. 기능만 간단하게 돌아가는 UI를 고려하지 않아도 되는 앱과, 웹 페이지를 만들어 달라고 하며 상황이 밀어부쳐졌습니다.

간단하게 개발 기획을 같이 하고 영님과 석사생님, 그리고 나는 역할 분담을 해야 했습니다. 영님과 석사생님은 네이티브로 안드로이드 앱 개발을 하기로 했고 나는 백엔드, 프론트엔드로 웹 개발과 앱에서 사용할 서버도 백엔드에 같이 만들기로 했습니다.

데모앱에서 시작해 나중에 실제 서비스로 발전할 계획이어서 인력이 적은 지금 ios, aos 모두 가능한 react native로 하는 것을 제안했지만 두 분은 전혀 경험이 없다며 거절하고 안드로이드 스튜디오를 활용해 UI를 조금씩 만들어 나갔습니다.

우선적으로 앱에서 사용할 백엔드 개발 시 참고할 api 규격서를 작성해 앱 개발 시 더미데이터로 참고해 만들도록 문서를 전달했습니다. 그런 뒤 expressjs 를 활용해 api 규격서 대로 백엔드를 개발하기 시작했습니다.

프론트엔드는 UI 컴포넌트를 직접 css로 다 만들지 않고 이전에 서비스에 사용했던 mui를 활용해 개발했습니다. 개발에 속도가 붙어 갔고 개발 기한은 출근일수로 8일 안에 만들어야 했기 때문에 매일 9 to 9으로 일하며 열심히 만들었습니다.

그러다 보니 화, 수, 목, 금, 월 5일 만에 개발을 완료할 수 있었습니다. 개발이 완료되고 수요일에 있을 개발 산출물 점검 때 발표할 내용을 만들면서 외부에서 시연할 때 프론트엔드와, 백엔드, 데이터베이스 서버를 클라우드에 구성하는 방법들을 검색해 봤습니다. 어느덧 수요일이 왔고 발표의 시간이 됐습니다.

회의가 시작되고 웹 개발 산출물에 대해 먼저 발표가 진행됐습니다. 간단하게 ERD 구성을 설명했고 구축된 데이터베이스를 보여준 뒤 시연이 시작됐습니다. 회원가입, 로그인은 bycript, crpyto(AES-256-CBC), jwt를 활용해 암호화 및 토큰 관리를 구현해 웹에서 회원가입, 로그인 시의 동작을 데이터베이스 상의 변화와 함께 시연했습니다.

건강검진 pdf 파일을 웹에서 업로드하면 자동으로 데이터파싱한다는 모델이었는데 파싱 모델은 아직 개발되지 않았기 때문에 예시로 만들어 놓은 더미 데이터를 데이터베이스에 넣어 두었습니다. 더미데이터와 교수님이 가져온 10만명의 건강검진 데이터를 결합해 통계 시각화를 만들었고 이를 대시보드 형태로 보여주고, 업로드한 pdf파일 내용을 웹상에서 볼 수 있도록 했습니다.

이제 앱을 시연할 차례였습니다. 앱에서는 시연 시 잘 보이지 않으니 건강검진 사진을 찍어 업로드하는 부분이 구현되어 있으면 됐습니다.

하지만 버튼들이 한 줄로 나열되어 있는데 버튼 글자도 아직 test1, test2, test3, ... 식으로 되어 있었는데 test1을 눌러도 다른 버튼을 눌러도 화면 전환만 되고 기대하는 동작이 일어나지 않았습니다. 회의실의 분위기는 급격히 얼어붙었고 교수님과 대표님은 그 동안 뭘 한 거냐며 급 화를 냈고 실제 투자 시연일은 다음주라며 이번주 안에 어떻게든 마무리 지으라고 했습니다.

그렇게 회의가 끝나고 영님과 석사생님은 멍한 상태가 되었고 이미 웹 개발과 데이터베이스 서버를 클라우드에 구성했기 때문에 앱 개발에도 참여하게 됐습니다. 사실 우리 셋 중 누구도 앱을 개발해 본 사람은 없었고 그나마 react랑 비슷하다는 react native로 개발해 보자는 의견이 잘 먹혀서 금요일까지 혼자 앱 개발을 한 뒤 개발한 내용에 대해 두 분에게 설명했습니다.

react native로 갤러리 사진이나 카메라 사진을 업로드하는 예제를 인터넷에서 찾아 ui를 간단히 구성한 뒤 api를 통해 건강검진 데이터를 데이터베이스화 했다는 요청을 만들어 적당히 완성할 수 있었습니다.

그렇게 투자 유치를 위해 사용할 프로토타입 앱을 완성했고 대표님이 스피치를 잘 하셨는지 투자를 받으셨고 디자이너, 카피라이터, 의료데이터 전문가 등 많은 분들이 채용되기 시작했습니다.

퇴사 레이스

석사생

프로토타입을 완성하고 시연이 끝난 후 대표님은 앱 개발했던 두 분에게 탐탁치 않았는지 강한 어조로 변하셨습니다. 그 중에서도 석사생님에게 그 압박이 좀 더 강했는데 야근하지 않고 집에 가려 하면 30분 정도 일 제대로 했는지 체크하기도 하고, 일에 대한 컨펌을 할 때는 할 줄 아는 것이 없다며 월급을 줘야 하는지 고민이라는 말도 해가며 폭언을 이어갔습니다.

내가 들리던 몇몇 말들 외에도 점심 식사 때 석사생님에게 들은 많은 폭언들은 심각했고, 석사생이면서 알바로 업무를 하던 중이었는데, 결국 석사생님은 얼마 지나지 않아 다시 대학원으로 돌아갔습니다.

디자이너

대표님이 가르치던 브랜딩/디자인 강의의 수강생 중 현재 부산에서 디자이너로 일하고 있던 분을 스카웃하셨습니다. 디자이너는 대표님 강의를 들을 때 감명 깊었는지 대표님을 존경하고 있었습니다. 그래서 부산에서 분당으로 자취방까지 얻어 다니던 직장도 퇴사하며 이직을 한 것입니다.

하지만 기획자가 없이 디자이너만 있다 보니 기획, 디자인을 모두 담당해야 했는데 교수님, 대표님을 직접적으로 컨택하며 일을 해야 했습니다. 문제는 교수님이나 대표님 모두 개발에 필요한 기획에 대해 무지한데 대표님이 디자인에 감각이 있다 보니 꼼꼼히 디자인에 대해 지적들을 하다가 결국 화를 내기 시작했습니다.

얼마 지나지 않아 대표님은 다시 월급 루팡이라는 식의 발언을 조금씩 하며 디자이너에게 연봉을 낮춰 계약하려 했고 결국 디자이너는 자취방 계약 기간을 체우지 못하고 1달 만에 다시 부산으로 내려갔습니다.

카피라이터, 의료데이터 전문가

디자이너가 나갈 때 쯤 의료데이터 전문가와 카피라이터가 들어왔는데, 의료데이터 전문가는 간호사 출신으로 의료 코드를 넣는 등의 행정일을 도맡아 오다가 의료데이터를 다루는데 익숙하고 현재는 사업을 하나 런칭 준비중인 어리고 열정 넘치는 분이었습니다.

카피라이터는 다른 직종에 있다가 블로그를 쓰면서 카피라이터를 하게 됐는데, 신입이어서 이 회사에서 많은 일을 하고 싶어했습니다.

의료데이터 전문가는 의료코드 정리 업무부터 맡았고 그 코드들에 대한 소비자를 위한 설명을 달아주는 일을 했는데 생각한 것보다 빠르게 적응하며 일을 잘 해 나갔습니다. 하지만 카피라이터는 정량적인 일이 아닌 느낌있는 글을 써야 했기에 대표와 큰 마찰을 빚었습니다.

대표와 본인의 스타일이 전혀 안 맞는다며 입사 후 1주일도 되지 않아 퇴사를 결정했고 퇴사 이유를 대표한테 분명히 말하고 퇴사했습니다. 의료데이터 전문가도 대표의 업무 중 눈치주는 것과 디자이너, 카피라이터 등 여러 사람들이 퇴사하는 것을 지켜보더니 사업에 전념하고 싶다며 퇴사했습니다.

나도 언제까지나 무리한 일정과 주변에서 듣는 폭언을 듣고 보다 보니 나에게도 일어날 수 있다는 불안감이 들기 시작했고 마음 속으로 퇴사에 대한 생각이 들기 시작했습니다.

건강검진 데이터 구축 서비스

입사했다가 금방 사람들이 나가는 뒤숭숭한 분위기 속에서 남아 있는 영님과 나는 회의실에서 교수님과 진지하게 회의를 했습니다.

건강검진을 하면 병원에서 공단으로 결과를 전달하는데 그 때 만들어지는 공단 전송 파일을 pdf로 프린트 할 수 있고 병원과 제휴해 pdf 파일을 제공받으면 이 데이터를 토대로 건강검진 데이터를 얻고 그 데이터로 여러 서비스를 할 수 있으니 일단 병원 별로 다른 pdf 데이터를 자동으로 추출하는 모듈을 만들어 보자고 했습니다.

이미 교수님이 100만 개의 건강검진 pdf 파일을 가지고 있었고 이것을 통해 작업을 시작할 수 있었습니다. pdf 파일에서 text를 추출하는 작업은 처음하는 일이었는데 pdfminer, tesseract, pypdf 등 사용할 수 있는 것이 많았지만, 정확도가 떨어졌습니다. 그래서 결국 다른 빠르고 정확한 방법을 찾아내 대부분의 pdf 파일을 만족하며 txt를 정상적인 순서로 불러오는 것에 성공했습니다.

그 후에는 여러 순서로 되어 있는 txt에서 원하는 txt를 불러오기 위한 수작업들이 오래 지속됐지만 결국은 100만 개 중 80%를 만족시키는 자동화 모듈이 완성했습니다. 나머지 20%도 완전히 정확히 가져오는 것이 아닐 뿐 대부분의 필요한 txt를 추출했습니다.

하지만 다음 pdf 파일에서 어떤 형식이 올 지는 모르는 상황이기 때문에 자동화로 가져오는 txt에 대해 가져올 가능성이 없거나 있는 txt들을 모아 Validation 모듈을 만들었습니다.
이 후에는 자동 추출 후 Validation 에서 실패한 케이스를 모아 웹에서 쉽게 이미지를 조정하며 확인해 수동으로 수정할 수 있는 관리자 싸이트도 만들었습니다.

그렇게 빠르게 2주가 지나갔습니다.

아래는 자세한 과정입니다.

텍스트 추출

우선 100명 분의 건강검진 데이터를 대상으로 pdf 파일에서 텍스트를 추출해 보고 여러가지 라이브러리, 심지어 유료 라이브러리의 체험판도 이용해 보며 추출을 시도해 봤지만 모두 추출된 텍스트를 사용하기에 적절하지 않아 보였습니다.

여러 시도를 하던 중 크롬에서 pdf 를 열어 전체 선택 후 복사해 txt 파일로 저장해 봤는데 각 필드 결합을 하기에 그나마 가장 적합하게 텍스트가 추출됐습니다. 하지만 방대한 pdf 파일을 모두 열어 수동으로 텍스트를 복사해 파일로 저장하는 것은 불가능하니 이를 자동화 할 방법을 찾았고 pyautogui 를 활용해 자동화하여 텍스트를 추출할 수 있었습니다.

텍스트 분류

초기 100명 분의 텍스트 추출과 필드 추출을 위한 규칙들은 1000개의 작업부터는 다시 예외들로 가득 찼습니다. 예외들에 대한 대응 코드들과 케이스들을 포괄하기 위한 포괄 코드들을 잘 조합해 가며 개수를 점점 늘려가며 테스트했습니다.

1000개에서 2000개로 2000개에서 3000개로 조금씩 늘려갈수록 점점 예외 케이스가 보이지 않았고 7000개에서 10000개 사이에는 예외가 없어졌습니다. 모든 케이스를 검증해보면 좋겠지만 그렇다면 이 자동화 모델을 만들 이유가 없기에 만 개 까지만 고려해 만들어 보고 가지고 있던 나머지를 함께 테스트 해봤습니다.

10만개 데이터에서 예외없이 정상 동작해 분류됐고 이제 활용할 수준이 됐다는 생각이 들었습니다. 그렇게 100만 개 데이터까지 테스트를 완료할 수 있었습니다.

하지만 역시 pdf 텍스트 추출과 분류 과정은 덕지덕지 붙여서 겨우 완성시킨 모델에 불과했기 때문에 분류 실패 케이스를 확실히 인지하고 이를 수동 수정하여 삽입할 수 있게 하는 것이 더 중요하다 생각했습니다. 그래서 각 필드 값들에 대한 범위를 구해내고 그 범위와 다른 잘못된 값들이 있을 시 인지해 수동 수정할 수 있도록 하는 체계를 만들었습니다.

어드민

텍스트 분류 모델이 완성 됐으니 이를 활용할 수 있도록 어드민 페이지가 필요했습니다. 로그인, 회원가입 기본 구성에 모델에서 실패 케이스를 pdf 를 보며 수동 분류하는 페이지, 나중에 앱에서 사진 파일 업로드한 걸 보며 수동 입력해 분류하는 페이지를 만들고 자동으로 분류된 데이터를 고객 또는 필드들에 따라 검색하는 페이지 등 많은 기능을 구현했습니다.

병원용 웹

교수님과 많은 병원들에 제휴하기 위해 병원들의 상황을 확인해 본 적이 있는데 작은 병원들의 대부분은 종이로 환자들의 검진 데이터를 쌓아두고 있었습니다. 환자 관리 또한 서류로 이뤄지고 있었습니다.

큰 병원들은 자체적으로 앱도 만들고 많은 부분이 디지털화 되어 있지만 제휴를 맺기는 힘들고 중소 병원들을 최대한 많이 제휴해 데이터를 모야야 했습니다. 병원 측에 지도 정보, 환자 정보를 디지털화 해서 환자 관리 및 분류 시스템을 만들어 주고 대시보드도 구성해 주는 것을 건강검진 데이터를 정보 제공 동의한 환자에 한 해서 구축해 주는 것을 제안했습니다.

하지만 병원에서는 실질적으로 사용해 보지 않은 서비스에 관심이 없어서 그 의미에 대해 별 생각이 없었습니다. 그것보다 건강검진 결과를 병원에서 제공해 주면 그 결과를 우편으로 발송해 주는 업무를 대행해 줬으면 했습니다.

이건 속도전이라며 교수님은 빠른 개발을 계속 요구했고 영님과 나는 병원용 웹 + 발송 대행 업무를 할 수 있도록 협약을 하나 둘 맺어 가며 개발 기획에 맞춰 더미데이터를 만들고 환자 관리 시스템을 구축하고 있었습니다. 구축하던 중 추가적으로 의사분들이 원하는 다른 요구사항들이 생겨나면서 프로젝트는 점점 방대해져 갔습니다.

개발 협약

병원용 웹을 개발하면서 의사분들의 요구사항은 점점 더 커져갔고 병원마다 환자들이 정보 제공 동의받는 것부터 데이터를 입력받는 태블릿 앱까지 만들어 납품해 달라는 요구가 있어 이 또한 만들어야 했습니다.

그 와중에 대표님이 런칭하고 싶어서 카피라이터까지 구해서 진행하던 헬스케어 앱 개발을 빨리 진행했으면 좋겠다며 압박이 들어오기 시작했습니다. 영님은 웹, 앱 구성에 대한 경험이 없는 상태로 옆에서 도움이 되지 못했고 더 이상 혼자서 많은 플랫폼을 만드는데는 한계가 있었습니다.

교수님과 대표님의 상상력눈덩이처럼 계속 불어났고 이에 대해 계속 호소하는 영님과 나에게 문제를 인식했는지 개발 인원이 부족한 것을 안다며 대표님이 아는 멘토님의 회사에서 개발자, 디자이너, 기획자, PM 등을 지원받는 협약을 하겠다고 했습니다.

멘토 분은 대표님이 투자받기 위해 다니다가 투자 관련 검토를 해주던 분 중 하나인데, 우리와 개발 협약을 하기로 한 회사의 이사였습니다. 그래서 그 회사 근처에서 미팅을 했습니다.

미팅 자리에서 이사분은 협약을 한다면 개발 주도권을 완전히 그쪽에서 가져가고 기존 개발진들도 우리가 시키는 바를 했으면 한다고 말했습니다.

나로서는 이미 친해졌던 분들이 퇴사 압박을 받다가 퇴사하게 되고 업무는 개발에 대한 고려없이 밀려오는 상황에서 이미 퇴사할 마음을 가지고 있었지만 개발 가능 인원이 없는 체로 발 동동거리는 대표님과 교수님을 두고 퇴사하기가 인간적으로 힘들어 버티고 있었던 터였기 때문에 희소식이었습니다. 이 타이밍이 기회라는 생각이 들었습니다.

이직

퇴사 생각이 있었기 때문에 미리 이력서를 업데이트 했었습니다. 그래서 헤드헌터들로부터 제안을 받는대로 최소 10인은 되는 회사들을 찾으며 좋은 연봉 조건인 회사들로 면접을 다니기 시작했습니다.

그러던 어느 날 의료 빅데이터 포럼을 모두 같이 참관하러 간 날, 적당히 포럼을 듣고 중간에 나와 면접을 보러 갔습니다. 면접을 보러 간 회사에 도착했고 환경이 좋아 보이는 사무실에 들어섰고 회의실로 안내받아 면접이 시작됐습니다.

CTO님과 부대표님이 면접을 봤는데 부대표님이 동년배 같아 보여 말이 잘 통할 것 같았고 CTO님도 굉장히 호의적인 자세로 질문을 하셔서 이야기도 술술 풀렸습니다. 면접은 잘 마무리 된 느낌으로 채용을 진행할 듯 보였는데 전체 경영진과 함께 2차 면접이 있다고 하여 결과를 기다려야 했습니다.

얼마 지나지 않아 면접 일정이 잡혔고 회사에 도착하니 같은 회의장으로 안내 받았습니다. 면접을 보는 경영진분들은 5명 정도 있었고 그 중에 대표님 찰스도 있었습니다.

실무적으로 뭘 해봤는지에 대해 간략히 설명했고 이후로는 일을 진행하는 방식, 문제를 숨기지 않는 성격인지 등의 인성적인 질문들이었는데 나름대로 잘 대답한 듯 했습니다.

좋은 분위기 속에서 찰스가 그래도 경력이 너무 적어 신임하기 힘들다며 갑자기 경력을 이용해 연봉을 낮추려 하셨고 모두가 있는 자리에서 연봉 협상을 시작하셨습니다. 이미 헤드헌터와 이야기한 연봉보다 500만원이나 낮춘 금액으로 협상이 됐고 그렇게 하루 이틀 뒤 전화로 입사일 조정을 하며 입사가 결정됐습니다.