5개월간 스타트업에서 굴렀다. 그리고 얻었다.

bepyan·2021년 12월 14일
164

돌아보면서

목록 보기
1/2
post-thumbnail

2021.07.05 ~ 2021.11.26


바야흐로 올해 여름,
지원한 인턴 모두 떨어지고 앞 길의 갈피를 잡지 못하고 있는 상황,
인스타그램 광고로 스타트업의 Recruit을 접하게 되었다.

탄소 배출을 줄이고자하는, 샐러드 구독 플랫폼을 운영하는 스타트업이다.
React, React-Native 개발자를 모집하고 있었고 나의 기술스택과 딱 맞아 들었다.
서류 - 1차 면접 - 2차 면접, 입사 프로세스가 1주일안에 마무리 되었던 엄청난(?) 속도를 보여줬다. 1차는 기술면접으로 비대면, 2차는 인성면접으로 대면으로 진행했다. 서비스를 어디까지 구축할 수 있는지, 현 팀원들과 원활한 협업 가능할지가 중요 포인트였던 것 같다.

직원이 6명이고 법인이 창립된지 얼마 안된 초창기 스타트업이였기에 이런 사수가 없는 환경에서 내가 잘 성장할 수 있을까 고민이 되었다. 하지만 이런 초창기 스타트업은 지금 아니면 절대로 경험할 수 없을 것 같았다. 좋은 가치를 추구하는 서비스라고 생각했고 회사의 성장지표도 괜찮아 보여서 도전을 이어나가기로 했다. 다시 학교 들어가 의미없는(?) 이론 수업 보다는 현업에서 부딪치고 싶었고 돈을 벌고 싶었다.

돈 받고 코딩이라니... ( 감격 )

입사후,
사실 충격의 연속이었다. 제대로 개발되어 있는 것이 하나도 없었다. 나름 괜찮아 보였던 기존 사이트가 WIX라는 쇼핑몰 사이트 솔루션을 통해 만들어 졌고 사장님용 안드로이드 앱도 학부생 수준 미만의 퀄리티로 사용되고 있었다. 듣기로는 이전에 비전공자 팀원이 만든 것들이라 했다. 열악한 환경속에서도 서비스를 잘 운영해낸 팀원분들이 진심 대단했다..

백엔드가 없다..? WIX에서 제공해주는 DB를 사용하고 있었고 이를 Firebase에 주마다 동기화하여 앱에서 사용하고 있었다. 그래서 한동안(1달) 개발자가 맞나 싶을 정도로 데이터 동기화하는 단순 CS업무도 병행을 했었다. 빨리 이 시스템을 바꿔야지 이 악물며 했던 것 같다.

내가 들어간 시점에서 새로운 통합 시스템을 만들고 있었다. 개발자는 웹 1명, 백엔드 1명이 있었고 나는 React Native으로 사장님앱을 만들게 되었고 사내 관리자페이지까지 구축하게 되었다. 실무 경험이 없던 내가 들어오자마자 시스템 전체를 구축해야 했던 것이다. 시행착오가 있었지만 덕분에 내가 크게 성장할 수 있었던 것 같다.

그렇게 정신없이 5달을 달려왔고 그만두고서야 제대로 회고를 하게 되었다.



💪🏻 내가 얻어 간 것

기획, 설계, 배포 모든 단계에 직접적으로 참여한 경험.
이슈, 업무 프로세스를 관리하는 방법.
기술력, 검색능력, 그리고 재력.

Notion & Slack

  • 공유 사무실, 재택, 코로나 환경으로 인해 Slack을 활용해서 많이 커뮤니케이션을 해야했다. Notion의 데이터베이스, 템플릿, Slack의 리마인드, 채널 등을 제대로 활용하게 되면서 업무 메신저 툴의 대한 이해도가 높아졌다.

  • 입사한지 1달 반만에 앱 기획부터 배포까지 강행군하며 스스로 작업 프로세스 관리하는 법을 알게 되었다. 노션의 칸반보드을 활용하여 내가 무엇을 우선적으로 작업 해야하는지 리스트업했고 어떤 작업이 남아 있는지 쉽게 파악할 수 있었다. 이번주 내가 작업할 수 있는 범위를 더 구체적으로 예측을 할 수도 있었다.


사장님 앱

  • play store와 app store에 직접 앱을 배포했다. 앱 특성상 앱 스토어를 통해서 앱을 전달하고 업데이트를 해야한다. 따라서 play store와 app store + xcode 에 대한 진입장벽이 꽤나 부담스럽다. 특히 지옥의 apple 심사.. (4번 reject을 당했다.. 3번의 권한 사용 요청 문구 수정, 1번은 해외에서 테스트할 수 있는 핸드폰 인증로직 관련) 그 모든 절차를 경험한 것은 정말 값진 것 같다.
    m1으로 XCode 앱 빌드하는데 계속 에러가 발생하여 고생했던 것이 기억에 남는다.
    play console의 에러 모니터링 기능을 통해서 배포한 앱에서 비정상 종료 이슈에 관해서 추적할 수 있었다. 덕분에 카메라 모듈을 교체하여 카메라 동작 이슈를 해결하기도 했다.
  • 학교 프로젝트하면서 아쉬웠던 부분을 풀어 낼 수 있었는데 그 중 하나가 Atomic Degisn System이다. 초기부터 아토믹한 컴포넌트를 추구했다. emotion을 활용해서 다른 UI 라이브러리 도움 없이 앱에 맞는 체계적인 UI Kit을 구축할 수 있었다.
  • 추가적으로 React Navigation을 활용한 Custom Modal 구현, Channel.IO 연동, 푸시알림 환경 구축, QR 코드 스캔, 앱 자동업데이트, Typescript Generic 등을 많은 경험할 수 있었다.

관리자 페이지

  • 어떤 UI Kit을 사용할지 고민하다가 IBM의 Carborn Desgin System을 선택했다. 날카롭고 세련된 UI가 관리자와 잘 맞을 것 같았다.
  • Storybook를 보면서 개발을 진행했는데 생각보다 레퍼런스가 부족하고 공식문서는 영문으로 되어 있어 학습에 끙끙댔다. 나중에 GuidelinePattern에 대해서 알게 되어 참고하다 보니 UI Layout에 대한 통찰력이 조금은 생긴 것 같다. 처음에는 무지성으로 그냥 최대한 테이블내에서, 어떻게든 row를 expanded해서 동작을 수행하려 했다. 하지만 Dashboard 기반의 UI 가이드라인과 예시를 보고 내가 잘못하고 있음을 크게 깨닫고 객체 기반으로 대시보드 UI로 리팩토링하게 되었다.
    Data Table에 대한 레퍼런스가 너무 부족하여 해당 컴포넌트를 활용하는데 꽤나 오랜 시간이 소요되었다. props로 넘겨준 데이터가 컴포넌트 내부적으로 memorized되고 변형된 형태로 사용되었다. 이것을 이해하고 나서야 제대로 테이블 컴포넌트를 활용할 수 있게 되었다. 나중에 react-table 라이브러리를 접하는데 큰 도움이 되었다.
  • 추가적으로 Github Action를 통한 AWS S3 CI/CD 자동화, jwt를 이용한 인증 구현, xlsx를 통한 데이터 엑셀 변환, html-to-image를 통해 html 이미지 변환, Custom Hook 제작(axios, debounce, 필터링, 테이블 관리 ...), recoil을 통한 전역 상태관리 등을 경험할 수 있었다.

이젠 나도 어엿한 현업 개발자..? 라는 근자감이 생기게 되었다.



🍒 좋았던 점

목걸이?!
출입증을 목에 걸고 밥먹으로 갈 때 너무나 뿌듯했다. 나도 직장인..? ㅎ헿

수평적이고 자유롭게 소통하는 팀문화.

  • 서로 닉네임을 불렀고 정말 자유롭게 의견을 주고 받았다.
  • 애자일하게 업무 프로세스를 개선할 수 있었다.
    ex. 개발팀에서 매일 스크럼, 주1회 스프린트를 진행했는데 매번 미팅마다 각자 이슈를 정리해야했다. 개선할 수 없을까하는 피드백이 나왔고 우리의 업무를 하나의 노션 데이터베이스로 합치기로 했다. 이후 따로 자료를 정리할 필요없이 노션의 필터링만 걸면 회의를 진행할 수 있었다. 추가적으로 템플릿을 활용하여 스프린트 회의록도 작성하기 굉장히 간편해졌다!

열정적인 팀원들. 더 나은 사회를 위한 따뜻한 마음을 가진 팀원들. 서로를 신뢰할 수 있었다.

자유로운 출퇴근.

  • 코어 근무제 (11:00 ~ 16:00는 일하고 자율적으로 근무시간표를 조정) 였기 때문에 출근에 대한 압박이 없었다.
  • 월화수는 오피스 출근하고 나머지는 선택적 재택할 수 있었다.

팀 전체가 개발자의 목소리를 정말 경청해주었다. 그럼에도 살인적인 배포일정이...



🥥 아쉬웠던 점

열악한 개발환경인 만큼 아쉽고 부족했던 점이 많을 수 밖에 없었던 것 같다.

기획의 부실

  • 기획자가 대표 1명이었다. 물론 서비스 요구사항에 대해 가장 잘 알지만 바빠서 기획에 전념을 할 수 없었다. 게다가 앱과 웹 둘다 기획을 해야하고 디자이너도 따로 없었다. 디테일한 기능요구사항, UI 마크업이 부실할 수밖에 없었다. 사장님들이 샐픽커 검색, 지난 픽업에 대한 처리 등 불편함을 호소하여 UI와 기능을 갈아 엎기도 했다.

백엔드의 부실공사

  • 지나치게 빡센 배포일정이 예정 되었다(투자를 받기 위해서). 1달 반안에 기획부터 배포까지 해야하는데 시간이 절대적으로 부족했고 다들 경험도 부족했다.
  • 백엔드 API가 RESTful하지 못하게 되었다. 리소스 중심으로 route가 구성되지 못했고 네이밍 컨벤션도 잘 지켜지지 않았다. 잘못된 문서 명세로 인해 불필요한 커뮤니케이션도 발생했다. 나만 Typescript를 썼기에 응답 컨벤션에 고통을 받았다. 같은 모델이지만 2-4개의 타입을 응답에 맞춰 작성을 해야했다.
  • 관리자 페이지가 없는 상태에서 서비스를 운영해야하다 보니 DB를 직접 접근을 해야하는 경우가 비일비재했다. 관리자페이지를 고려하여 API 설계가 되지 않아서 admin용 route가 부실했고 알림톡, 인프라 등 많은 일을 감당해야하는 백엔드이기에 앱, 웹 기능 구현이 계속 지연되었다.
  • 설상가상 ❄️ 중간에 백엔드분이 예정대로 그만두시고 새로운 백엔드 개발자가 오시면서 개발일정을 전면 개편하게 되었다. 기존 서버를 리팩토링하게 되었는데 부실했던 API를 RESTful하게, JWT를 제대로 활용하고, HTTPS도 적용한... 1달의 대공사를 치르게 되었다.

나홀로 생존기

  • 좀 멀리보지 못 했다. 개발방향을 가이드해주는 경험이 많은 개발자가 주위에 없어서 구글 검색에 절대적으로 의존했다. 문제가 발생하고나서야 잘못을 깨닫고 리팩토링을 하게 된 경우가 많았다. 그만두는 순간까지도 내가 잘못 설계한 코드가 많이 보였다.

iOS 앱이 너무 늦게 배포되었다.

  • iOS 개발자 계정이 있어야 제대로 빌드 테스트해서 실제 배포를 할 수 있다. 하지만 기업용 계발자 계정이 지나치게 늦게 나오는 바람에 앱 출시 일정이 거의 1.5 달 늦춰지게 되었다. andriod는 8월달에 배포 된거 보면 사실 3개월이나 늦춰진 것이다...
  • iOS가 늦게 나오는 바람에 iPhone을 쓰시는 사장님들이 android를 구비해야해서 불편하실 수 밖에 없고 회사측에서는 이를 케어하기 위해 픽업 명단 캡처 등 수고스러움을 감수해야 했다.


💉 백신

백신을 맞으면 이 열악한 정글에서 더 강하게(?) 성장해 갈 수 있지 않을까하는 포인트를 정리해보았다.
넌 강해졌다 돌격해!

실제 needs가 무엇인지를 집중하자.

  • 결국 개발의 핵심은 서비스 기능을 제공해 주는 것이다.
  • 시/공간복잡도, 깨끗함, 수준 높은 코드를 사람들이 많이 알아 주진 않는다. 사람들이 알아주는건 기능이 잘 동작하고 편리한 것이고 직관적인 것이다.
  • 시스템을 설계 할 때도 데이터가 중점이 아닌 기능을 중점으로 진행해야 한다. 어떤 변수를 사용할지가 아닌 메시지(메소드)를 어떻게 주고받으면서 기능을 구현할지를 고민하자. 이것이 객체지향이라고 하더라

완벽함을 좀 내려놓아도 괜찮다.

  • 처음부터 완벽한 코드를 작성할 수 없다. 일단 기능을 구현하고 리팩토링하자!
  • 코드는 작성한 순간 레거시가 된다.
  • 완벽함을 위해 머릿속으로 많이 고민할 수 있는데 글로 이슈를 트래킹을 하자. 점심시간 활용해서 동료들과 이에 대해 잡담해보는 것도 좋다. 나중에 면접에서 큰 도움이 될 것이다.
  • 좀 번외긴 하기만,, 출퇴근간 클린코드 핸드북을 보면서 내 코드의 청결상태를 점검해보자. 은근히 더럽더라..

코드에 감정이입하지 말자.

  • 우린 이제 현업이고 프로이다. 적어도 10년은 코딩으로 밥먹고 살아야한다.
  • 비즈니스 요구사항에 따라 기존 코드를 갈아 엎을 수 있다. 당연한 거다 ㅎㅎ
  • 버그가 발생하는 것은 내가 못나서 그런게 아니다. 불가항력이다. 버그를 수습하는게 개발자의 일이다.

‘나중에 제대로 정리해야지’ 미루지 말자.

  • 되도록 지금 깔끔히 마무리 하자. 나중에 다시 집중해서 리팩토링하기 힘들다. 아니, 할 시간이 없다.
  • 미루는 것은 새로운 일을 만들어 낼 뿐이다.

취뽀는 목적지가 아니다.

  • '난 뭘 하고 싶지?' 계속 스스로 물어봐야 한다.
  • 직장인의 시계는 5배로 빨리 간다. 주 5일을 일하기 때문..
  • 한 번뿐인 청춘, 하고 싶은 것을 이루기 위해 불태우자. 직장은 그저 수단일 뿐이다.

맺으면서

내가 한 일을 타임라인으로 다시 정리해본다면

시간내용
7-8월사장님 앱 기획, 설계, 배포
9월관리자 페이지 기획, 설계, 배포
10월사장님 앱, 관리자 페이지 유지보수
11월사장님 앱, 관리자페이지 API V1 업그레이드

입사전, 내가 생각했던 것보다 스타트업을 통해서 정말 많이 성장할 수 있었다.
좋은 팀원들을 만날 수 있었고, 회사와 팀원들이 모두 계속 성장해갔으면 좋겠다.
이젠 팀원에서 소비자로.

바빴지만 즐거웠고 힘들었지만 재밌었다.
도전을 계속 이어가자 😘

profile
쿠키 나누는 것을 좋아해요

29개의 댓글

comment-user-thumbnail
2021년 12월 15일

저도 스타트업에서 앱개발중인데 반갑네요~ 뭔가 같은면도 많은것같고요

1개의 답글
comment-user-thumbnail
2021년 12월 16일

좋은 글 잘 읽고 갑니다

1개의 답글
comment-user-thumbnail
2021년 12월 16일

와... 첫 직장에서 정말 대단하시네요.... 감탄하고 갑니다.

1개의 답글
comment-user-thumbnail
2021년 12월 17일

아토믹디자인... 판도라의 상자를 여셨군요..!

1개의 답글
comment-user-thumbnail
2021년 12월 18일

퇴사를 결정하게 된 결정적인 이유도 궁금하네요.

1개의 답글
comment-user-thumbnail
2021년 12월 18일

아주 좋은 경험 하셨네요!
좋은 글 잘 읽었습니다 :)

1개의 답글
comment-user-thumbnail
2021년 12월 19일

멋있어요

1개의 답글
comment-user-thumbnail
2021년 12월 19일

우아!!진짜 멋지세요ㅠㅠㅠ혹시 1차 기술면접 많이 어려우셨나요??

2개의 답글
comment-user-thumbnail
2021년 12월 19일

글을 정말 재밌게 잘쓰시네요!ㅎ 저도 스타트업 들어가고싶은 마음이 컸는데 이글을 읽고 마음을 잡은것 같습니다!

1개의 답글
comment-user-thumbnail
2021년 12월 21일

정말 훌륭한 경험을 하셨군요!

짧은 식견이지만
훌륭한 글이 조금 더 완벽해졌으면 하는 바람에서 오타에 대해 코멘트 남기고 가겠습니다.

1) 부딛치고 => 부딪치고
주체가 능동적으로 부딪거나 서로 부딪는 상황이면 '부딪치다'
다른 대상이 다가와 주체에게 부딪는 상황이면 '부딪히다'를 쓰시면 됩니다.

2) 깨닳고 => 깨닫고

pippi님은 정말 멋진 개발자가 되실 것 같습니다.
앞으로의 여정도 응원합니다!

1개의 답글
comment-user-thumbnail
2021년 12월 22일

저도 올 여름 스타트업에 취직해서 일하는 동지로서 공감가는 부분이 정말 많네요.. 멋진 글 잘 읽었습니다! 앞으로 우리들의 창창한 모험을 향하여..!

1개의 답글
comment-user-thumbnail
2021년 12월 23일

너무 멋있는것 같습니다!!

1개의 답글
comment-user-thumbnail
2021년 12월 26일

재밌게 읽었습니다 대단하세요..! 스타트업에 잠시 있어본 경험이 있는데, 이 글을 읽으니까 새록새록하면서 공감되는 부분도 많네요 ㅎㅎㅎ

좋은 글 감사드려요!

1개의 답글
comment-user-thumbnail
2022년 9월 30일

굿

답글 달기