스타트 업 프론트엔드 - seutateu eob peulonteuendeu

| 안녕하세요 서경님! 간단한 자기소개 부탁드려요
스타트 업 프론트엔드 - seutateu eob peulonteuendeu

안녕하세요 저는 비즈니스캔버스에서 프론트엔드 개발자로 일하고 있는 정서경입니다. 반갑습니다!

| 서경님은 개발자를 꿈꾸게 된 계기가 따로 있으신가요?

사실 대학교 3,4학년때까지 다른 친구들은 취업 준비를 하는데 저는 도저히 뭘 해야 될지 모르겠는 거에요. 그래서 그 고민을 조금 더 해보고자 대학원에 진학을 했고, 대학원을 진학을 하고 나서 하는 연구 과제에서 개발을 조금씩 접하며 흥미를 느끼고 개발자가 나에게 맞는 직업이라고 생각이 들었어요. 또 저는 미디어 공학과였다보니 미디어 기술과 관련된 과제를 많이 했었어요. 예를 들어서 360도 VR같은 기술 과제 라던지 아니면 개인방송 플랫폼도 연구했었고요.

| 왜 스타트업을 선택하셨나요?

저는 대학원에서 연구실이라는 조직에 있었는데, 교수 밑에 학생들이 있는 구조였어요. 아무래도 교수와 학생은 너무 수직적인 관계다 보니까 뭐 하라고 하면 무조건 해야되는 그런 경직된 분위기가 저에게는 힘들었던 것 같아요. 내가 자유로운 분위기에서 사람들이랑 다 같이, 자주적으로 열심히 할 수 있는 곳은 어딜까?에 대해서 고민을 많이 했었고 그게 스타트업이었던 것 같아요.

| 현재 서경님이 하고 계신 일에 대해 소개해주세요!

사용자에게 보여지는 타입드 화면, UI를 직접적으로 개발하는 역할을 하고 있고, 개발자 채용 관련된 부분도 제가 직접 담당을 하고 있어요. 그 외에도 개발적인 프로세스나 문화에도 관심이 많아서 다른 회사 개발팀들에 괜찮은 프로세스나 문화가 있다면 직접 그걸 가져와서 적용해보고 팀 내 문화를 더 좋게 만드는 그런 일을 하고 있습니다.

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

| Team Typed 개발자의 하루가 궁금해요

10시까지 출근을 하구요, 보통 월요일 뺴고 나머지 요일은 프로덕트팀은 오전 리모트 근무가 가능하기 때문에 집에서 오전에 일할 때도 있고, 10시까지 회사에 출근할 때도 있습니다. 10시까지 출근하고 나면 PM팀, 디자이너팀과 함께 데일리 스크럼미팅이라는 걸 해요. 스프린트를 진행을 하면서, 자신이 맡은 task가 어떻게 진행되고 있는지 딜레이는 없는지 공유를 합니다. 그 미팅이 끝난 다음에는 코드 리뷰를 먼저 진행을 하고요, 그 이후에는 밥을 먹고 나에게 주어진 Jira 티켓들을 처리를 하는 편이에요

| Team Typed에서 성장할 수 있다면 어떤 점이 있을까요?

먼저 프론트엔드 개발자의 입장에서 생각을 해본다면, 단순한 UI를 그리는 것 뿐만이 아니라 SaaS이기 때문에 발생하는 다양한 유저 인터랙션을 처리를 하고 또 다양한 state management를 하게 돼요. 그래서 상당히 도전적인 부분이 많은데 이런 것들을 직접 처리하면서 많은 성장을 하는 것 같아요. 이 점이 타입드 개발자로서 일하는 가장 큰 장점이 아닐까 생각이 듭니다. 또 회사에서 스터디 지원금을 제공해주는데요. 개발 서적뿐만 아니라 강의 같은 것도 모두 다 지원이 되기 때문에 더 망설임 없이 개발 강의를 찾아서 듣게 되는 것 같습니다.

| Typed 개발팀만의 문화가 있다면 알려주세요

중요하다고 생각했던 부분을 팀원들에게 자주 얘기하는 것 같아요. 그 중에 하나가 가장 기본적인 코드리뷰였어요. ‘우리 코드리뷰 정말 열심히 해야 된다’, ‘잘 해야 한다’ 이런 말을 자주 합니다. 코드를 작성할 때 어쨌든 코드가 완료되고 나면 다른 사람들의 리뷰를 받는 일이 필수적이에요. 다른 사람들이 코드를 리뷰할 때 좀 더 그 코드를 쉽게 이해하기 위해 ‘테크 스펙’이라는 걸 작성해보자 제안해서 실제로 도입하기도 했습니다. 또 요즘에는 ‘이런 새로운 기술들이 있는데 한 번 다같이 공부해보는 건 어떻겠냐’고 얘기해서 기술 스터디도 해보자고 적극적으로 장려하고 있습니다.  

| 앞으로 만들어가고 싶은 개발팀의 문화가 있으신가요?

사실 지금 저희 개발팀 분위기는 ‘이보다 더 좋을 수 있나?’ 생각이 들 정도로 분위기가 정말 좋아요.  한 가지 바라는 게 있다면 앞으로 저희 개발팀에 스터디 문화가 자리 잡혔으면 좋겠습니다. 지금은 몇몇분들만이 스터디에 참여하고 있긴 하지만, 나중에는 일을 하면서 같이 스터디도 하며 성장하는 문화가 자리잡히면 너무 좋을 것 같아요.

스타트 업 프론트엔드 - seutateu eob peulonteuendeu
전체 회사 슬랙 채널 중 개발팀 채널은 최근 한 달동안 주고 받은 메시지양 1등을 할 정도로 소통이 잦은 편이다. 그만큼 팀분위기가 화목하다.

| Typed 개발자로서 뿌듯하게 일했던 순간이 있었다면 언제였나요?

저희가 사실 얼마 전에 큰 앱홈 리뉴얼을 했어요. 그걸 만들면서 개발자들에게 우여곡절이 많았고 잡히지 않는 버그들도 있어서 힘들게 개발을 했는데, 배포를 하고 사용자들에게 업데이트 소식을 전달하는 순간 생각보다 긍정적인 피드백을 많이 받았어요.  ‘앱홈 리뉴얼 덕분에 문서를 저장하기 편해졌다’, ‘문서를 정리하기 편해졌다.’, ’이건 혁신적인 서비스다’ 라는 피드백을 들을 때마다 개발자로서 뿌듯함을 얻는 것 같아요.

| 서경님에게 개발자란?

저는 사실 예전에 ‘개발자는 코드만 잘 짜면 되는 거 아닌가?’ 이렇게 생각했어요. 그런데 개발을 진행을 하면서, 또 팀에 속해 있으면서 개발 뿐만이 아니라 그 문제를 해결하기 위해서 정말 많은 커뮤니케이션이 이루어진다는 걸 깨달았습니다. 개발자는 시간 안에 그걸 코드로, 제품으로 만들어내는 사람이라 생각합니다.

| 그렇다면 서경님은 어떤 개발자가  되고 싶은가요?

1차적인 목표로는 기능을 거침없이 만들어나가는 사람이고 싶고, 다른 팀원들에게 ‘저 사람의 코드는 정말 믿을만하다’ , ‘저 사람에게 배울 것이 많다’고 생각되는 개발자가 되는 것이 제 목표고요.  그런 능력을 바탕으로 타입드를 잘 만들어보고 싶다는 생각이 있습니다.

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

오늘은 오랜만에 내 이야기를 좀 해보려 한다. 

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

나는 올 한 해동안 두 군데의 스타트업(상반기에 한 번, 하반기에 한 번)에서 각각 두 세달 정도씩 인턴을 했었다. 분야는 웹 프론트엔드 였으며 둘 다 지인을 통해 알게 되었고 들어가서 일을 하게 되었다. 참고로 스타트업에서 개발자 인턴을 하는 건 생각보다 그렇게 어렵지 않을 수 있다. 왜냐하면 99%의 스타트업은 개발자가 항상 부족한 상황이기 때문이다. ㅎㅎ 

작년 여름 영국에서 돌아와서 국비 지원 과정을 시작하면서 코딩을 배우기 시작했다. 2018년 말, 나의 실력은 딱 국비 지원 3~4개월 받은 사람의 수준 그 이상도 그 이하도 아니었다. 관련 글에도 자세하게 적었지만 나는 국비 지원 과정에 불만이 많았고 회의감도 느꼈다. 그래서 언제 나올 수 있을지 계속 고민하던 도중 아는 스타트업 대표 형으로부터 연락을 받았고, 몇 번의 연락 후에 나는 그 회사에 웹 프론트엔드 개발 인턴으로 들어가게 되었다.


첫 번째 회사 : T사, 옷 사이즈 추천 서비스 스타트업, 당시 직원 수 5명

나는 회사에서 인턴이지만 유일한 웹 프론트엔드 개발자였기에, 모든 웹 프론트엔드 개발에 관련된 일을 혼자 해야 했었다. 당시 회사 직원 수는 나 포함 다섯 명이었다. 안드로이드 개발을 하는 대표, 서버 개발을 하는 공동창업자, iOS 개발자, UI/UX 디자이너, 그리고 나. 회사는 당시 설립된지 1~2년 정도 되었고 직원들은 모두 20대 중후반이었다. 나는 인턴 경험을 돈 보다는 실력을 키우는 데에 목표를 두고 있었고, 또 당시에 졸업하려면 '현장실습'이라는 과목을 필수로 수강해야 했는데 이 현장실습 6학점을 인턴쉽을 통해 할 수 있어서 겸사겸사 일을 시작하게 되었다. 월급은 그냥 최저시급보다 살짝 높은 정도 수준으로 받았던 것으로 기억한다. 

나는 인턴이었지만 그냥 팀원으로서 똑같이 프로젝트의 일부분을 개발했다. 회사에서 필요한 웹 어플리케이션을 개발하는 일을 했었고, 이를 위해서 외부 API를 사용하면서 OAuth2.0 방식의 인증 절차를 거쳐야 했었다. 그냥 혼자서 프로젝트를 할 때랑은 많이 달랐고, 주변에 직접 물어볼 수 있는 사람이 없어서 굉장히 힘들었다. 다행히도 해당 API를 제공하는 개발사 팀장님 연락처를 받아, 카톡으로 정말 많이 물어봤었다. 그리고 기본적인 코딩에 관한 질문은 대부분 생활코딩이나 OKKY에 글을 올려서 해결했고 StackOverFlow의 도움도 많이 받았었다.

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

이 당시 나는 프론트엔드 프레임워크를 쓸 수 있는 수준이 아니었다. 그냥 HTML, CSS, JS(ES5)의 기초적인 개념들만 가지고 만들었다. 그리고 jQuery를 배워서 쓰기 시작했다. 그 당시에는 뭐가 좋고 뭐가 Outdated 되었고 이런 것들에 대한 개념이 거의 없었던 것 같다. 제이쿼리는 빠르게 배우기 쉬웠고 정말 편했다. 그리고 내가 사용하던 API 회사에서도 jQuery를 권장하기도 했었다. 당시에는 자바스크립트의 중요한 특징들을 알고 쓰는 수준까지 가지 못했고, 그냥 기능 구현을 하는 것만 해도 정말 벅찼던 것 같다. 어떤 기능을 구현하는데 대표는 며칠 정도가 걸릴 것 같은지 나에게 물어봤었고, 나는 그런 질문을 받아본 적이 없었어서 되게 난감했었다. 그냥 혼자서 열심히 프로젝트를 하던 것과는 다른 점이 너무나도 많았다.

ajax를 통해서 서버에 요청을 보내고, 응답을 받고 그렇게 받은 데이터를 가지고 어플리케이션을 만들고 그러다가 CORS 에러나면 한 번씩 나면 오랫동안 삽질하고 ㅠㅠㅠ 이 당시에는 어떠한 알고리즘의 시간복잡도가 얼마나 되고, 공간복잡도가 얼마나 되고 이런 고민도 안하고 그냥 '코딩'만 했었다. ㅋㅋㅋㅋ 컴퓨터 사이언스에 대한 지식이 전무하던 시기였다고나 할까. 그게 중요한지도 잘 몰랐었고, 몰라도 크게 문제가 안 되는 수준의 어플리케이션을 만들었다. 특정 정보를 가져오기 위해 토큰을 통해 인증을 받는 절차도 처음 다뤄보았는데 ㅋㅋㅋㅋ 진짜 삽질 많이 했었다. ㅠㅠ

첫 번째 스타트업에서 3달 정도 일을 하면서 느낀 점이 있다면, 기회가 주어진다면 가능한 빨리 일을 해 보면 좋다는 점이다. 이게 쉽다는 의미는 결코 아니다. 개인적으로 프로젝트 할 때와 비교해 보면 신경써야 할 것들이 더 많고 난이도도 더 높다. 아마 처음 일을 하다 보면 스트레스도 많이 받고 자존감도 많이 떨어질 수 있다. 하지만 분명하게 말 할 수 있는 건, 나는 이 시기가 지나고 나서 정말 눈에 띌 만큼 성장을 했던 것으로 기억한다. 엄청나게 불편했던 HTML, CSS, JS가 이 시기를 거치고 나니까 편-안 하게 느껴지기 시작했다 ㅋㅋ

이 당시에는 질문하는 연습도 정말 많이 했었다. '그냥 잘 안 되니까 해결해줘' 라는 식으로 질문을 하면 안 된다는 걸 몇 번의 시행착오를 통해서 깨달았다. 내 수준에서 충분히 고민을 하고, 관련해서 자료도 찾아보고, 그래도 안 되면 최대한 구체적으로 질문을 하려고 노력했다. 물론 이게 개발이 잘 안되면 쉽지는 않다. 나는 이 당시에 나의 엄청 귀찮을 수도 있는 질문들을 열심히 받아준 주변 개발자 친구들, API 개발사 팀장님, 그리고 생활코딩 멤버들에게 정말정말 감사하다 ㅠㅠ 세 달 동안 일을 하면서 나는 돈은 많이 받지는 못 했지만 '개발 실력'이 늘었고, '질문하는 법'을 터득했다. 지금 돌이켜 보면 돈보다 훨씬 값진 것들이 아닐 수 없다.

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

두 번째 회사 : A사, 형광펜 하이라이트 서비스 스타트업, 당시 직원 수 7명

첫 번째 스타트업에서 나와서 나는 복학을 했고, 프로그래밍 동아리도 하고, 대외활동도 하고, 해커톤도 두 번 나갔다. 그러는 과정에서 실력을 많이 쌓았다. 쓸 수 있는 기술들도 많아졌고 도메인 지식의 영역도 넓어진 느낌을 받았다. 그렇게 몇 달이 지나고 나서 두 번째 스타트업에서 인턴을 하게 될 기회를 얻었다. 여기서는 오래 있지는 못했고 두 달 정도 짧게 파트타임으로 일을 했었다. 내가 알게 된지는 3년 정도 된 곳이고 내가 개인적으로 대표님과 회사가 멋있다고 생각한 곳이어서, 당시 내 상황이 사실 좀 빡빡했음에도 불구하고 좋은 기회인 것 같아 일을 시작하게 되었다. 이 회사 역시 웹 프론트엔드 개발자는 나 혼자였고 대신 자바스크립트를 잘 아는 사람이 회사에 두 명 정도 있어서 질문을 자유롭게 할 수 있었던 점이 정말 좋았다. 여기서 급여는 그래도 지난 인턴에 비해 1.5배 정도 받았던 것 같다 ㅎㅎ

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

지난 회사보다는 좀 더 도전적인 일을 여기에서 진행했었다. 기존에 짜여져 있는 코드가 있었고, 자체 라이브러리도 있는 회사였다. 이러한 코드를 먼저 익히고 이를 바탕으로 새로운 기능을 추가하는 업무를 맡아서 진행을 했었다. 남들이 짜 놓은 코드를 읽는 일은 생각보다 어려웠다. 주석도 친절하지 않았고 함수명이나 변수명도 이해하기 어려운 적이 너무 많았다. 또한 자체 라이브러리도 구체적인 문서로 설명해 놓은 자료가 없어서 과거 코드를 보면서 유추할 수 밖에 없는 점이 조금 힘들었다. 하지만 뒤집어 생각해 보면 미래에 내 코드를 보는 누군가도 아마 비슷한 생각을 하지 않을까 싶다. ㅋㅋㅋ

나는 Vue.js라는 프레임워크를 올해 초에 배웠고 여러 번 프로젝트를 통해 경험을 했었다. 그래서 이 스타트업에서 개발을 할 때도 적용을 해 보고 싶었다. 하지만 기존에 짜여져 있는 코드를 Vue로 바꾸는 작업은 생각보다 "정말" 고려해야 할 부분이 많았고 어려웠다. 환경설정부터 시작해서 vue-cli로 자동으로 완성시켜 주는 라이브러리를 쓰지 않고 한땀 한땀 직접 다 구현해야 했기 때문에 내 역량으로는 무리였고 결국에는 하지 못했다. 그냥 단순하게 Vue 환경에서 개발만 해 봤었지, 왜 Vue를 써야 하고 어떻게 Vue를 기존 프로젝트에 적용할 수 있는지에 대해서 고민해 본 적은 없었던 것 같다. 새로운 경험이었다.

A사에서는 자체적으로 만든 테스트 서버와 여러개의 DB들 그리고 이러한 파이프라인을 연결해 주는 소프트웨어까지.. 내가 처음 보는 툴이 정말 많았다. 물론 이를 한 번에 다 알 수는 없지만, 그동안 내가 알고 있었던 분야가 정말 얕았고 한정적이었다는 걸 깨닫기에는 충분했다. 단순하게 코드만 잘 짜면 되는 줄 알았는데, 여기서는 코드를 짜는게 개발의 전부가 아님을 몸으로 배웠던 것 같다. 네트워크와 운영체제, 그리고 아키텍처에 대한 이해까지.. 더 뛰어난 개발자가 되기 위해서 알아야 하는 것들이 너무 많았다. 어떠한 기술을 쓰기 위해서는 그 기술의 장점을 가지고 팀원들을 설득해야 하는데 이를 위해서도 여러가지 기술을 골고루 넓게 알아야 할 필요성을 절실하게 느꼈던 것 같다.

자바스크립트도 더 깊게 사용하기 시작했다. 어떻게 하면 이벤트를 더 효율적으로 부여할 수 있는지를 고민하면서 코드를 짰고, ES6의 특성들을 활용해 보려고 노력했다. Event Bubbling, Hoisting, Closure, Prototype 등 자바스크립트 책에서 배웠던 개념들이 좋은 코드를 짜기 위해서 필요한 개념이라는 것을 일을 하면서 느끼게 되었다. 개발자로 일을 하면서 공부를 소홀히 할 수 없는 이유가 여기에 있는 것 같다. 연관해서 알아야 할 개념이 정말정말 많고... 문제는 계속해서 새로 또 나온다는 점이다. ㅋㅋㅋㅠㅠ Callback과 Promise, async/await 에 대해서도 여기서 일을 하면서 처음으로 제대로 사용해 볼 수 있었다.

스택오버플로우나 생활코딩에 질문해서 해결할 수 없는 문제들도 하나 둘 마주하기 시작했다. 단순하게 구글링을 해 보아도 답이 나오지 않고 주변에 물어보는 것에도 한계를 느끼는 순간들이 왔으며, 이럴 때는 내가 그 문제를 뚫고 나아가야 했다. 더 깊이있게 개념을 파고들고, 제대로 이해하려고 노력했다. 그러다 보면 해결이 되는 문제들도 있고, 내 역량이 부족해서 해결이 안 되는 문제들도 있지만... 이렇게 고민했던 순간들이 쌓이고 쌓여서 실력이 늘게 되는 것 같다. ㅋㅋ

스타트 업 프론트엔드 - seutateu eob peulonteuendeu

두 번째 회사에서는 짧은 시간이었지만 있으면서 배운 점은 컴퓨터 사이언스 지식이 일정 수준 이상의 프로그래머가 되기 위해서는 필수적이라는 점이었다. 그냥 프로그래밍 언어나 프레임워크만 보면 몇 달 학원에서 빡세게 해서 배울 수 있고 그렇게 개발자가 될 수도 있다. 하지만, 여기서 더 높은 수준의 개발자가 되기 위해서는 단순한 프로그래밍 언어나 특정 프레임워크에 익숙한 것 뿐만 아니라 전체적인 아키텍처를 보고 성능적인 면에서도 고민을 할 수 있는 지식이 필요하다는 걸 이 회사에서 일하면서 느꼈다. 자료구조, 알고리즘, 운영체제, 네트워크, 데이터베이스 이 다섯 가지는 최소한 어떤 분야의 소프트웨어 엔지니어가 되더라도 기본적으로 알아야 하는 개념이라고 생각한다.

또 배운 점이 있다면 깊이 있게 고민을 할 수 있는 체력과 실력을 키워야 한다는 점이었다. 앞서 말한 것처럼 이제는 현업에서 구글링으로 해결하지 못하는 문제들을 점점 더 마주하게 될 것이다. 결국은 그러면 그 문제는 본인이 스스로 해결해야 하고 그 능력이 곧 높은 연봉을 의미한다고 생각을 한다. 그만큼 어렵기 때문이다. 이렇게 문제를 해결할 수 있는 충분한 체력과 넓은 지식의 영역이 훌륭한 소프트웨어 엔지니어가 되기 위해서 정말 필요한 조건이라는 생각이 강하게 들었다.


전반적으로 스타트업에 대해 느낀 점

개발자가 성장하기에는 정말 좋은 환경이다. 빨리 서비스를 만들어서 출시해야 하기 때문이다. 이는 곧 스타트업에 장점이자 단점이 되는데 빨리 만들다 보니 실력은 빨리 늘 수 있지만, 개발물의 퀄리티까지 높은 수준을 맞추는 건 현실적으로 어렵고 깊이 있는 고민 보다는 빠른 해결책을 찾아야 하는 경우가 많다. 그러다 보니 기술적 부채(Technical Debt)가 쌓이고 이는 사실 대부분의 스타트업이 가지고 있는 고민이다. 코드를 리팩토링 하거나 체계적인 규칙을 가지고 짜기에는 여건이 충분하지 않은 경우가 많다.

새로운 기술을 도입하기에 좋은 환경이다. 사람도 소수이고 연령대도 어린 경우가 많아서 새로운 기술에 열려있는 회사가 많다. 물론 새로운 기술을 쓰고 싶다면 왜 그 기술을 써야 하는지 충분하게 설득을 시킬 수 있어야 한다. 이러한 점에서 스타트업은 두루두루 다양하게 넓은 지식을 가진 사람이 유리할 수도 있는 환경이다. 반면에 이렇게 빠르게 바뀔 수 있는 문화를 가졌기 때문에 체계적이기는 어려운 경우가 많다. 새로운 시도를 하기를 좋아하고 변화에 거부감이 없다면 스타트업에 합류하는 것도 충분히 매력적인 선택지가 될 수 있다고 생각한다.