Software Engineering + Data

hismayfly·2021년 1월 15일
2

오랜만에 돌아왔다 -

다시 또 2주가 지난 시점에 회고록을 쓰려고 velog를 열었다.
한번 더 느끼지만, 끝나고 바로 쓰면 그 경험이 생생해서 좋고, 시간이 지나고 쓰면
좀 더 완전한 '경험'으로 돌아볼 수 있는거 같다.

이번 포스팅은 위코드에서 백엔드 과정을 수료하고 나서,
어쩌다 데이터 엔지니어링에 대해서 관심을 갖게 됐는지,
Udacity에는 왜 등록하게 됐고 과정이 어땠는지에 대한 설명(보다는 이야기)이다 :)

데이터 엔지니어링?

10월말에 위코드 부트캠프를 끝내고, 다른 사람들의 충고와는 달리 나는 정말 가고 싶은 곳들만 골라서 지원했다.
보통은 여기저기 많이 지원하고 - 사전 과제, 코테, 면접 등 다양한 취업관련 경험을 쌓고나서
정말 가고 싶은 곳에 지원하는게 좋다고 말한다.
사실 이 말에 나는 동의한다. 정말 가고 싶었던 첫 스타트업 마지막 면접에서 코테 2개와 인성 면접을 봤는데,
코테 하나를 한시간 동안 아무것도 하지 못해서 결국 떨어졌다. 물론 그 전에 많이 봤다고 해서 갔을거라는 확신은 없겠지만, 좀 더 경험이 많았으면 좋았을 것 같다는 생각은 했다.

그렇게 대략 10+ 곳을 지원을 했다. 이 중에는 신입을 안 뽑는 곳들도 있었는데 어차피 지원하는데 비용이 드는 것도 아니라서 일단 지원했다. 이 중에서 서류가 되서 코테를 본 곳도 있고, 면접을 본 곳도 있지만 결국 합격한 곳은 없었다.

이런 뉴스를 전할 때마다 주위에 있는 사람들이 위로를 해주려고 했는데, 사실 그렇게 큰 타격을 받지는 않았던거 같다. 나름 객관적인 면이 있어서, 객관적으로 현재 내 수준 이상을 원하는 회사들에 지원을 했고, 탈락하는 것도 어느정도 예상했기 때문에 아쉬움은 있었지만 좌절할건 전혀 아니었다.

우연이란

그러다가 괜히 예전에는 따로 클릭을 안했었는데, 11월 어느 한 토요일에 축구를 하러 가기 위해 자전거를 타고 축구장을 가는데, 그냥 가면 심심하니까 좀 유익한 영상 같은거 들으면서 가자는 마음에 대충 괜찮아 보이는거 찾아서 틀고 따릉이에 올라탔다.

꽤나 거리가 있어서 대략 20분 정도를 타고 갔는데, 나는 아직도 그 영상(컨퍼런스 콜이어서 비디오대신 오디오만 있는)이 잊혀지지 않는다. 해외 유명 컨설턴트 회사인 McKinsey & Company의 데이터 부서(?)인 Quantumblack 직원들 간의 컨퍼런스 콜이고, 퀀텀블랙에서 일하는 4명의 데이터 엔지니어들이 자신들이 하는 일에 대해서 말하는 내용이었다.
(해당 영상 : https://www.youtube.com/watch?v=fVc0599bkZs&t=1486s)

영상 내용을 정리하자면, Quantumblack은 데이터 컨설팅 회사이고, 클라이언트 회사에 가서
어떻게 하면 데이터로 가치를 창출할 수 있는지에 대해서 컨설팅을 해준다.
물론 그냥 말만 해주는건 아니고, 직접 그 회사의 인프라를 보고 어디서 어떤 데이터를 추출할 수 있고, 이걸 어떻게 정제를 해서 어디에 저장을 하고 분석을 어떻게 하는지... 등 기술적인 부분들도 도와준다.

들으면서 여러가지 생각이 들었지만, 가장 많이 들었던 생각은 "와 이런 일을 하는 개발자들이 있었어?"였다.
지금까지 사용자들 요청 처리하는 것에만 집중했는데, 쌓여있는 사용자들의 요청을 어떻게 활용할 것인지에 대해서는 한번도 생각해 본 적이 없기 때문이다.

그러고 나서 데이터 엔지니어링에 대한 리서치 & 공부가 시작됐다. 서류를 합격하고 사전과제를 보내주신 분께 이런 상황을 설명드리고 사전과제를 못할 거 같다는 말씀을 드렸고, 어떻게 하면 데이터 엔지니어링 공부를 효율적으로 할 수 있을지 온라인에 있는 모든 코스들을 다 찾아봤다. 그리고 Udemy, Coursera, edx 등 전부 알아봤는데, 그나마 마음에 들었던 코스는 Udacity의 Data Engineering Nanodegree였다. 평도 나름 좋았고, 어느정도 파이썬과 데이터베이스에 대해 알지만 데이터 엔지니어링에 대해서는 잘 모르는 나한테 딱 맞는 코스처럼 보였다.

짧은 부트캠프? Udacity

그렇게 10월말-11월을 백엔드로 구직을 하다가, 갑자기 11월말에 구직을 멈추고 12월초부터 Udacity의 Data Engineering Nanodegree를 시작했다. PostgreSQL과 Cassandra로 OLAP용 모델링을 해보고, Columnar 데이터베이스인 AWS Redshift를 왜 & 어떻게 쓰는지 배우고, 현재 DE에서 가장 핫한 Spark와 현역에서 많이 쓰이는 Airflow도 사용했다.

그리고 수료를 하기 위해서는 캡스톤 프로젝트를 제출해야 하는데, 이런저런 데이터를 찾아보다가 고민 끝에 캐글에 올라와있는 PUBG 데이터셋을 사용했다. 총 200만개가 넘는 레코드를 정제하고 저장해서, 사용하기 좋게 star-schema 형태로 Redshift에 넣고, Airflow로 전체적인 관리를 했다. 아래는 단계들을 도형화한 그림이다(내가 이런걸 만들다니!)

프로젝트에 대한 설명은 https://github.com/danielgyu/Pubg-ETL-Pipeline 여기에 전부 쓰여있어서 따로 쓰지는 않겠지만, 이 코스를 하면서 느낀건, 내가 이런말을 해도 되는지 모르겠지만, 해외(이라 봤자 미국이지만)의 발전 속도이다. 프로젝트 막바지에 슬슬 DE 관련 포지션들을 찾아봤는데, 한국에는 DE 타이틀이지만 Hadoop이나 Spark를 사용하지 않고 일반 파이썬과 SQL로만 하는 곳들이 있기도 하다. 물론 이게 잘못되거나 뒤떨어진건 절대 아니겠지만, 해외에는 이미 빅데이터를 활용하는 회사들이 많이 있다는 점에서 확실히 갭차이가 크긴 크다는 생각을 많이 했다.

아무튼 나름 Spark를 경험했다는 점에서 꽤나 만족스러웠는데, Spark라는 기술을 사용해서 그렇기 보다는 Distributed Computing을 좀 더 알게 되서 좋았다. 결국 Hadoop의 강점도 distribution에 있고, 개발자로서 성장하기 위해서는 서로 다른 컴퓨터&네트워크를 어떻게 연결할 수 있는지가 굉장히 중요하기 때문이다(Kubernetes도 그렇고). 물론 DE의 가장 기본적인 업무중 하나인 ETL을 혼자서 처음부터 끝까지 했다는 것도 뿌듯했다.

이제 다음은..

'집중공부' 시기를 마치고 다시 '집중구직'시기로 돌아왔다. 나름 취업을 미루고 공부했으면 무조건 DE로만 가고 싶을 줄 알았는데, 또 그런것도 아니긴 하다. 지금 생각해 보면, DE가 무조건 하고 싶었다기 보다 DE라는 것도 안 상태에서 취업을 하고 싶었던거 같다.

그러고 이번에도 나는 똑같이, 가고 싶은 기업들만 먼저 지원을 하고 있다. 그러면서 계속 생각하게 되는건, "어디서 일해야 할까?"이다. 처음부터 '돈 많이 주는 곳'에 가고 싶지는 않았다. 물론 A보다 B가 조금 더 좋은데, B가 훨씬 많이 준다고 그러면 B로 가지 않을까 싶기는 하다. 하지만 '돈'이 결정적이지는 않다.

나름 여러날 동안 생각을 하고, 지금 내린 결론은 이렇다. 일단 무엇이든 '잘'하고 싶다. 나는 사실 이커머스 분야는 도통 관심이 없는데, 만약 가장 좋은 이커머스 회사에서 일할 수 있는 기회가 주어진다면 가고 싶다. 돈을 가장 많이 주지는 않는다 하더라도, 가장 빠르게 많이 성장할 수 있는 기회는 나에게 큰 매력이다. 그래서 개인적인 '실력' 향상에 대한 갈망이 있다. 성격이 새로운걸 배우고 도전하는걸 좋아하고, 일단 이해할 때까지 다른게 집중 잘 안되는 스타일이라 몸이 피곤해 지더라도 최대한 집중해서 빠르게 끝내려고 한다.

'잘'하는 것 이외에 '의미'도 큰 요소인거 같다. 한 쪽이 돈을 더 많이 준다 하더라도 다른 한쪽이 나에게 더 큰 의미가 있는 일을 한다면, 의미있는 회사로 갈거 같다. 실제로 공부하는 도중에 빠르게 성장하고 있는 한 물류회사에서 꽤나 큰 금액으로 제안이 왔었다. (물론 지원한다고 무조건 됐으리란 보장은 없지만) 사실 개발 커리어로 봤을 때 그 회사를 갔으면 굉장히 좋았을 조건들이었다. 하지만 개인적으로 물류 시스템에 대해 고민하고 개발하는게 개인적으로 큰 의미가 없어서 별 생각 없이 지나쳤다.

그렇다면 어떤게 의미있을까? 이건 아직 확실한 대답을 내리긴 힘들다. 예를 들어 나는 최전방에 병사들이 직접 지뢰 검사를 하지도 않아도 되도록 대신해 주는 드론&로봇을 만들고 싶다. 사건사고를 예방할 수 있는 기술도 만들고 싶고, 사람들이 소비를 더 현명하게 할 수 있는 서비스에 참여해 보고 싶고, 자산관리를 안전적으로 해주는 서비스도 해보고 싶다.

근데 이제 문제는 그러면 의미는 확실히 있는데 실력이 별로 못 늘거 같은 기업은? 반대로 실력도 늘고 뛰어난 개발자들 옆에서 최신 기술들을 익힐 수 있지만 크게 의미 없는 경우는? 둘 다 만족시키는 회사는 사실 많지 않다. 따라서 이 문제는 아직도 고민하고 있는 부분이고, 사실 확실한 결정을 내릴 수도 없을거 같다.

어쩌다 보니 마지막이 제일 길어졌는데, DE를 공부하면서 '개발'에 대한 전반적인 지식을 늘릴 수도 있었고, 이런 직업적인 생각들도 더 많이 하게 된거 같다. 결국 내가 할 수 있는건 어떤 회사이든 그 순간에 내가 내릴 수 있는 최선의 선택을 하고, 나에게 주어진 기회와 시간에 최선을 다하는 것 밖에는 없다. 좋아하는 것도 중요하지만 책임감은 더 중요하고, 내가 할 수 이쓴 최선을 가장 선한 길로 인도하실 것을 믿기 때문이다.

profile
#software engineer #backend developer

관심 있을 만한 포스트

1개의 댓글

comment-user-thumbnail
2021년 1월 17일

Psalms 37:31👊

답글 달기