데이터 사이언티스트로 커리어 전환하기 (Data science)

AQuaNtum 2021.12.04 09:30:56

안녕하세요, 글을 오랜만에 쓰는 것 같습니다. 확인해보니 1년도 넘었네요 ㅎㅎ

 

여행 후기를 쓴지는 3년이 된 것 같구요... 바쁘다는 핑계로...

 

다름이 아니라 오랜만에 글을 쓰는 이유는 여러분들이 관심 없으실 그간의 근황을 전하고, 묵혀뒀던 여행 후기를 쓰려는 마음이 들어서 입니다 :)

 

이번글의 주된 내용은, 프로그래밍의 프자도 모르는 제가 데이터 사이언티스트로 커리어를 전환한 이야기입니다.

 

제 백그라운드를 간략하게 소개하자면, 저는 우선 미국으로 대학원을 와서, 박사를 마치고 SF bay area에서 하드웨어 엔지니어로 일하고 있었습니다. 올해가 4년째가 됩니다.

 

필요할때 깨작깨작 matlab 정도 만져보기는 했지만, 정말 프로그래밍과는 담을 쌓았다고 할 정도로 관심도 없었고, 진입 장벽이 높게 느껴져서 시도조차 해본적이 없었네요. (그럴 필요가 딱히 없기도 했구요.)

 

그러던 중에 학업을 마치고 첫 직장으로 들어간 곳이 생각보다 일이 너무 재미가 없었습니다. (미안 전 직장아... 하지만 넌 좋은 회사야)

그래도 박사까지 했는데 송충이가 솔잎을 먹어야 하지 않을까 하고 생각하던 중에 심심해서 들어본 coursera 파이썬 코스가 꽤 재밌더라구요.

 

어 생각보다 코딩이 재밌네? 하는 생각에 이리저리 수업을 듣다보니 데이터 사이언스 (앞으로 데싸라고 부르겠습니다) 라는 분야가 있다는 사실을 알게 됩니다.

컴싸를 해서 소프트웨어 엔지니어를 하는건 뭔가 진입 장벽도 높아보이고, 어리고 똑똑한 친구들을 당해낼 수 없을 것 같다고 생각했는데, 데싸는 다양한 분야를 알아야 하긴 하지만, 진입 장벽이 약간 낮아보였고, 제 하드웨어 백그라운드를 domain knowledge 삼아 연결해볼 수 있겠다는 생각이 들더라구요.

 

그래서 석사 프로그램을 하기로 결심합니다. 결과적으로 취직만을 위해서라면 이는 꽤나 안좋은 선택이었는데, 나중에 다시 얘기하도록 하겠습니다.

찾아보니 온라인 석사 프로그램이 몇개 있었습니다. (회사와 병행할 수 있는) 그 중에 버클리 프로그램이 제일 비싸지만 ㅠㅠ 좋아 보여서 지원하려고 알아보니 GRE를 다시 봐야 하더라구요? 하하하하하하하하 (지금은 requirement 없어졌습니다...) 심지어 바뀐 후기도 없는 new GRE...

 

회사 다니면서 단어장 파기 시작했습니다. 말 그대로 주경야독... (이 즈음 애도 태어나서 정신을 놓기 시작합니다.)

다행히 3개월 공부하고 본 시험에서 원하는 점수가 나와서 지원하고 몇 달 뒤 합격 소식을 들었을때 어찌나 기쁘던지... (일반 석사 프로그램처럼 sop, 추천서, transcript 등등 다 필요합니다... 학위도 똑같이 나옵니다.)

 

그리고 프로그램을 시작한게 약 3년 전입니다... 제가 마지막 여행 후기를 쓴 시기와 비슷하죠... ㅠㅠ

그 후로 2년 반 동안 폭풍과도 같은 삶을 살았습니다. 회사에서 일하고 퇴근해서 공부 시작... 와이프가 애를 케어해줘서 너무 감사했죠... 그러다가 2019년 여름에 와이프가 취직이 되면서 애 보는 루틴도 추가가 됩니다.

 

수업은 라이브 클래스가 PST 기준으로 4:30~6:30 정도에 시작하고, 그 외 숙제와 플젝이 있습니다. 수업은 특별한 일이 있지 않고서는 참석을 해야 하고, 수업에 들어오기 전에 async material로 예습을 하고 와야 합니다. 14주가 한 수업 기준이라 pace가 무척 빠르기 때문에 따라가려면 부지런히 공부해야 하더라구요. 숙제랑 플젝이 빡센 수업을 듣는 term에는 숙제하다가 아침 7시에 잠들고 10시에 일어나서 출근하기도 했습니다 ㅠ

 

수업은 정말 다양한 사람들이 듣는데, 열정이 존경스러웠습니다. 이미 교수인 사람, 로펌 다니는 변호사, 군인, 빅테크 60대 chief of staff 등등... 이 공부 왜 할까 궁금한 사람들도 많더라구요. 자극이 많이 되었습니다.

 

아무튼 저는 회사랑 병행을 하고 있는 상황이었기 때문에, 한 term에 한과목만 들으면서 천천히 진행을 하고 있었고, 총 2년반이 걸릴 예정이었습니다. 그러던 와중에 코비드가 터지고, 아이가 데이케어에 갈 수 없는 상황이 되니 맞벌이 + 애보기 + 수업이 상당히 버거웠습니다. 꾸역꾸역 1년 가까이 더 했는데, 잡 지원을 하려고 알아보다 보니, 새로운 사실을 발견합니다.

 

저는 이 프로그램을 할때는, 면접 준비는 프로그램이 끝날때쯤 자연스럽게 될거라고 생각했습니다. 그런데 찾아보니 공부와 면접 준비는 전혀 다른 차원이더라구요. 마치 평소 학교에서 수업 듣는 것과 시험을 보기위해 하는 공부가 약간 느낌이 다른것 처럼요.

 

데싸 잡 인터뷰를 준비하려면 크게 이런것들이 필요합니다.

 

1. SQL

Structured Query Language 의 준말이라고 합니다. (여기 쓰려고 찾아봤어요.) 

아시는 분은 다 아시겠지만, 데이터베이스를 사용할때 쓰는 언어입니다. python 같은 object oriented language 보다는 훨씬 제한적이고 간단한 편이구요.

이건 문제은행 같은 것들이 인터넷에 나와 있어서 easy medium hard 로 나뉜 문제를 100~200문제 정도 풀어보면 감이 옵니다. 요구하는 회사도 있고, 안보는 회사도 있습니다. 간단한 data analysis 위주로 하는 회사에서는 보는 것 같고, ML/DL 쪽 많이 하는 포지션에서는 물어보지 않았습니다.

 

2. Product Sense

제가 제일 어려워했던 부분이었는데, case study를 주고, 어떤 상황 안에서 data scientist 관점으로 어떻게 문제를 풀어나갈지 물어보는 방식입니다. 저도 아직 제대로 된 대답이 뭔지 어렵고, 워낙 방대해서 준비가 어려운 부분이었는데, 저 같이 new college graduate 보다는 그 분야 경력직인 분들은 쉽게 답할 수 있는 부분일 것 같습니다. 준비는 product management interview 로 유튭에서 찾아보시면 대략 비슷한 부분을 커버한다고 합니다. (보긴 했는데 여전히 감 잡기는 어려움 ㅠㅠ)

 

3. ML

이 부분은 job description을 보면 대충 알 수 있는데, ML을 요구하는 회사에서는 ML 위주로 제법 물어봅니다. 저는 유튭 비디오부터 medium이나 tds article들을 닥치는 대로 읽어서 정리했는데 많은 도움이 된 것 같습니다. ML 기본 컨셉부터 시작해서 다양한 후속 질문들이 나옵니다. (case study랑 연결되기도 합니다.)

 

4. Statistics
이 부분을 중점적으로 보는 회사들도 있습니다. 엄청나게 어려운 수준을 요구하지는 않지만, probability, random variables 부터 distribution에 나오는 간단한 수식까지 물어보기도 합니다. 결국은 hypothesis testing 관련 내용들로 넘어가기도 하는 것 같더라구요.

 

5. AB testing

이 내용또한 회사마다 물어보기도 하고 물어보지 않기도 합니다. ㅎㅎ udacity에 AB testing course가 있어서 들었는데, 이쪽으로 질문을 안 받아서 도움이 되었는지 확인할 길이 없네요 ;;

 

주변에서는 이런 질문을 받아봤다고 합니다. "새로운 ML 알고리즘으로 친구추천을 기능을 improve 하려고한다. 기존 ML 모델과 새 모델을 A/B testing 해서 데이터를 모았다. 그런데 모든 Key Product Indicator 또는 metric 이 똑같았다. 이럴때 데이터 사이언티스트로서 가장 첫번째로 무엇을 체크하겠느냐"

 

6. ETC questions

구글에 data science interview questions 라고 검색하면 나오는 수많은 general question 들이 있는데, 한번쯤 읽어보면 감이 대충 잡힙니다. (e.g. What are the differences between supervised and unsupervised learning?)

 

7. Python

마지막으로 코딩... 데싸는 소프트웨어 엔지니어와는 다르게 알고리즘을 물어보지 않습니다. 그냥 어떤 상황을 주고 이것을 구현할 수 있는 function을 만들어보라고 하는 정도인데, time complexity 상관없고 그냥 logical 하게 접근하는 모습만 보여주면 됩니다.

 

보통 준비는 python 기준으로 (요새 거의다 python으로 하더라구요, 저도 이거밖에 할 줄 모릅니다.) pandas/dictionary/string/numpy 관련된 내용만 집중적으로 연습하시면 됩니다. 이런 문제들이 나온다고 하더라구요.

 

Summarize string:

Input: ‘aaaabbcdd’

Output: ‘4a2b1c2d’

 

Flatten dictionary:

Input: { ‘person1’ : {‘school1’ : { ‘grade1’}, {’sports’: ‘soccer’}

Output: [‘person1_school1_grade1’, ‘person1_school1_sports_soccer’]

 

-----------------------------------------------------------------

 

대충 준비해야 할 파트들 나눠서 정리해봤습니다. 제가 아까 석사 프로그램을 한게 취직만을 위해서라면 나쁜 선택일수도 있다고 한 말 기억하시나요.

사실 석사, boot camp 이런거 하나도 없이 구글에서 열심히 위의 내용들을 찾아서 독학하신 후에, 면접을 많이 보시면서 깨지다 보면, 취직이 될 수 있다는 생각이 들더라구요. (실제로 그렇게 한 사람 가끔 봄) 시간/돈 관점에서 보면 가장 효율적인 방법이죠.

 

저는 그래도 석사 프로그램을 한 것이, alumni support, 인맥 형성, 수업 들으면서 얻은 현업에 필요한 지식들을 고려했을때 나쁘지 않은 선택이었다고 생각되긴 하지만, 이 부분은 개인의 판단에 맡기겠습니다. (boot camp 3개월 하고 취직하는 분들도 많긴 합니다.)

 

아무튼 저는 멘붕에 빠졌습니다. 맞벌이 + 애보기 + 수업 <-- 여기에 면접 준비까지 어떻게 하지...?

고민 끝에 저는 회사를 그만두기로 결정합니다...

 

정말 쉽지 않은 결정이었어요. 전혀 다른 분야로의 도전이라 얼마가 걸릴지 불확실했고, 그 동안 가계는 와이프가 책임져야 하고, 통장 잔고는 점점 줄어갈거고...

그런데 방법이 없더라구요. 과감하게 퇴사하고, 면접 준비를 시작했습니다. 그 후로 남들이 보기엔 와이프를 등처먹는 한량 여유로워 보이지만 속이 타들어가는 시간이 시작됩니다.

 

그러다가 드디어 프로그램이 끝나서 학위를 받았고, 비슷한 시기에 면접 준비가 만족할 정도로 정리가 되었습니다. 동시에 와이프가 번아웃이 와서... (미안 ㅠㅠ) 한달간 한국에 가서 리프레시를 하고 온 뒤, 본격적으로 잡 지원을 시작했습니다.

 

총 100군데 넘게 지원한 것 같아요. 면접은 6군데 정도에서 봤는데, 내용이 천차만별입니다. 회사마다 데싸를 define 하는 방식이 전부 다르다고 느꼈습니다.

SQL 문제 주고 계속 파던 회사도 있었고, 딥러닝 문제 주로 물어보던 회사, brain teasing 으로 수학 문제 물어본 곳도 있었네요 ㅎㅎ

 

어떻게 됐냐구요...?

......최종적으로 한군데에서 오퍼, 한군데는 결과 기다리고 있습니다. 근데 오퍼 받은 곳이 마음에 들어서 (하는 일, TC 전부다) 안 기다리고 네고 조금 하고 오퍼 억셉했어요.

 

4년전에 첫 직장 잡아서 여기 올때보다 (물가도 오르고 경력도 쌓였지만) 70% 가까이 TC가 오른 오퍼레터를 받고 보니, 만감이 교차하더라구요... 정말 힘들고 험난한 여정이었지만, 끝까지 응원해주고 붙잡아준 와이프에게 가장 고맙다는 말을 하고 싶습니다.

 

여러분, 진부하지만 늦었다고 생각할 때가 가장 빠른 때입니다. 마모분들의 모든 도전을 응원합니다!

 

저는 이제 출근하기 전까지 밀린 여행 후기 쓰려구요. 앞으로 게시판에 신세 좀 지겠습니다. 꾸벅 (__)