본문 바로가기

개발자가 되고싶은 달걀들에게

"어떤" 개발자라니요? (Software Engineer와 Data Scientist)

반응형

안녕하세요, 연구소장입니다.

지난 시간에는 levels.fyi 사이트를 소개해드렸죠. 동기부여는 충분히 받으셨나요? 오늘은 파이썬 기초 강의를 듣고 가장 먼저 떠오르는 질문, "그래서 이걸로 뭘 하는데?"에 대해 답해보고자 합니다. 당신이 개발자가 되고싶은 달걀(? 햇병아리 이전이니까요..?)이라면 아마 어딘가에서 파이썬, 자바, C, C++ 등 프로그래밍 언어를 공부하고 왔을 수도 있고, 웹 개발 기초, SQL 기초 강의 같은걸 듣고 왔을 수도 있어요. 뭐가 됐든, 당신은 기계적인 사고방식을 경험하고 온 걸 거예요. 컴퓨터가 생각보다 멍청하다는 사실도 알아버렸죠. 그런데, 막상 커리어 전환을 하려 보니, "파이썬 개발자" 같은 건 없잖아요?! 그러니까 오늘은 개발자의 직군에 관한 이야기를 해보고자 해요.

개발자라는 직업은 꽤 오래된 직업입니다. 영화 Hidden Figures 에서도 나사의 컴퓨터 프로그램을 조작하던 여자들이 나오잖아요! 그런데 시대가 흐름에 따라 개발자들이 하는 일은 조금씩 변해왔고, 요즘에는 크게 두 가지로 나뉘는 것 같아요. 하나는 Software Engineer, 다른 하나는 Data Scientist입니다. 지난 시간에 levels.fyi를 유심히 보셨다면, 이미 두 단어를 마주하셨을 거예요. 이 두 업무의 차이를 이해하면 내가 어느 쪽으로 가고 싶은지, 그럼 어떤 스킬을 더 개발해야 할지, 그리고 가장 중요한 연봉과 직급은 어떻게 달리 나뉘는지 이해하고, 지난번에 소개드린 사이트를 더 유용하게 활용하실 수 있을 거예요.

데이터사이언스 벤다이어그램 [Copyright Steven Geringer], 출처는 여기입니다>> https://towardsdatascience.com/being-a-data-scientist-does-not-make-you-a-software-engineer-c64081526372

Software Engineer vs Data Scientist 

개발자로 취업하면 뭘 할까요? 다양한 분야가 있겠지만, 크게 두 가지로 나뉩니다. 뭔가를 뚝딱뚝딱 만들 것이냐 (웹페이지, 앱, 자체 솔루션, 기타 등등) 혹은 데이터를 뚝딱뚝딱 가공할 것이냐 (데이터에서 인사이트 뽑기)입니다. 예상하셨겠지만 전자는 software engineer, 후자는 data scientist(engineer, 차이는 나중에 설명) 쪽에 속한다고 보시면 됩니다. 그럼, 각각의 개발자는 어떤 스킬이 필요할까요? 프로그래밍에 대한 기본 지식은 두 직군 모두 고루 갖추어야 합니다. 여기에 추가적으로 software engineer의 경우엔 자신의 포지션에 따라 (뭘 만들지, 거기서 어떤 역할을 할지) 추가적으로 필요한 기술들이 있고, data scientist(engineer)의 경우에는 흔히 말하는 머신러닝, AI 관련 지식이 더 필요합니다. 요즘에는 AI 모델 자체가 프로덕트가 되는 경우도 있기에 경계가 모호한 부분도 있지만, 굳이 나누자면 이렇게 나뉩니다.

그럼, 내가 data scientist 가 되고 싶다고 무작정 지원해서 뽑힐 수 있을까요? 현실은, 대부분의 기업에서 막 졸업하고 취업하는 햇병아리 개발자들을 software engineer로 먼저 뽑습니다. 예를 들어, 제 친구가 일하던 Oracle 에는 분명 두 직군이 모두 존재하는데요, 특별한 케이스를 제외하고는 모든 학부/석사 졸업생들을 software engineer로 채용합니다. 채용 후 오리엔테이션을 돌리고, 주어진 오피스에서 일하다가 data scientist 직군으로 옮기고 싶은 사람은 그때 옮기게 됩니다. 왜 이럴까 생각해봤는데, 아마도 기본적으로 회사에서 원하는 스타일의 코드를 짜는 훈련을 원래부터 회사가 가지고 있던 software engineer 교육자료로 진행하고, 그 후에 data science 쪽에 관심 있는 직원을 옮겨주는 방법이 그들에게 더 효율적인 건 아닌가 하는 합리적 의심을 가지고 있습니다. 무튼, 이 말은 결국 data science 직군으로 취업하려 한다 해도, 기본적인 software engineer로써의 스킬은 장착해야 한다는 뜻이죠. 그러니까 수학만 좋다고 그거만 공부해서는 안 돼요 (예외는 있습니다, 박사까지 하면 돼요!)

Data Scientist vs Data Engineer

Data Science 쪽 잡 타이틀을 보면, Data Scientist도 있는데 Data Engineer 같은 경우도 종종 보입니다. 이 차이를 이해하려면 데이터 분석이 어떻게 일어나는지 피상적으로나마 이해할 필요가 있습니다. 세상에는 엄청난 양의 데이터가 존재하지만, 회사가 분석하고 싶은 데이터는 그중에서 극히 일부입니다. 게다가 그 데이터는 인스턴트식품처럼 우리 앞에 제공되지 않죠. 예를 들어, 회사 시스템에 남아있는 사용자들의 데이터를 분석하려 하면 일단 그 데이터를 다 모아 와야 하고, 백만 줄이 넘을 수도 있는 데이터에 오류가 없나 확인하고, 쓰레기 값이 있음 좀 치우고, 어찌 저찌 잘 다듬어서, 그다음에야 비로소 수학적인 모델을 가져와 학습시켜볼 수 있는 것이죠. 데이터 분석의 꽃이라 할 수 있는 마지막 과정은 그야말로 수학에 가깝습니다. 그래서 기업에서는 Data Scientist 포지션에 대부분 컴퓨터과학/통계학/물리학/수학 박사들을 뽑습니다. 그러나 여기, 수학 꽤나 잘하고 학부 때 머신러닝 수업도 들었던 한 햇병아리 개발자가 있습니다. 기업은 어떤 모델을 학습시키고 싶은데, 통계학 박사가 데이터 전처리 잡일까지 하려니 시간도 오래 걸리고 때려 붓는 돈에 비해 프로젝트 속도가 너무 느립니다. 그러니 데이터 전처리 혹은 새로운 모델 개발이 아니라 이미 있는 모델링 패키지를 빌려다 쓰는 정도의 작업은 이 햇병아리 개발자에게 시키는 것이 효율이 좋겠죠? 그래서 Data Engineer 같은 포지션이 생긴 것 같습니다. 커리어 페어에서 둘의 차이를 물어보면 이 정도로 대답하더라고요. Data Scientist는 박사만 받는다고 못 박아둔 기업도 많습니다만, 그런 기업들도 Data Engineer 혹은 Software Engineer지만 결국 하는 일은 데이터 분석인 포지션들이 존재합니다.

Data scientist 중 석사학위 소유자가 85%라네요. 데이터 출처는 HBR, 그림 출처는 여기입니다>> https://www.upgrad.com/blog/the-anatomy-of-a-data-scientist/

잘 모르는데 지금 결정하라고요?

Software engineer 혹은 Data scientist라는 분류도 어디까지나 피상적입니다. 정확히 어떤 일을 하는지는 회사마다 다 다르겠지요. 그러니 이러한 직무 구분도 자세히 나누자면 끝도 없을 거예요. 하지만, 어디까지나 초심자를 위해 개괄적으로 나누자면 이렇게 나누는 것이 유용합니다. 왜냐하면, 당신의 성향이 어느 쪽인지, 어떤 걸 더 공부해야 하는지 대략적으로 알아낼 수 있으니까요. 이제부터 순수하게 저 혼자서 경험한 두 직무의 차이를 설명드리겠습니다. (*일반화하면 안 됨 주의!!)

Software engineering은 대부분 뭔가 만들어낸 결과물이 있습니다. 웹이든 앱이든 게임이든 뭔가 만들어 낼 수 있어요. 내가 프론트앤드(여러분이 매일 쓰는 인터넷 브라우저 인터페이스를 구현하는 것)를 하든 백앤드(그 인터넷 브라우저가 돌아가게 서버 통신을 처리하는 것)를 하든, 뭔가가 만들어지기는 해요. 아이언맨을 보면서 저런 게 내 취향인데... 하셨던 분들에게 추천합니다. 무언가 만들고 싶은 것이 있다면 수단과 방법을 가리지 않고 공부해서 해내버리는 사람들, 그런 사람들에게 어울립니다. 다른 분야도 물론 마찬가지지만, Data scientist에 비해 협업도 더 많은 것 같아요. 하지만 개발자는 컴퓨터를 다루는 사고방식에 익숙한 사람들이기 때문에 협업 또한 최소의 커뮤니케이션으로 해내버리는 사람들이긴 합니다. 그러니 사람이랑 같이 일하는 게 싫다고 꺼려할 필요는 없어요. 또, 보통 하나의 프로젝트를 완수하는 데 필요한 Software engineer의 수는 Data scientist의 수보다 많습니다. 그러니 직업 등용문이 더 넓다고 볼 수 있겠네요. (경쟁자가 더 많으려나? 모릅니다 그건 저도..!) 제가 취업을 슬쩍 알아보던 작년 기준으로 초봉도 Software engineer가 Data engineer/scientist에 비해 더 높아요.

Data scientist의 일은 외부 사람들에게 보여줄 수 있는, 눈에 보이는 결과물이 없는 경우가 많습니다. 저는 매일 데이터 가지고 예측 모델링을 합니다. 그래서 뭘 했나 (이 분야 밖의 사람들에게) 보여줄 수 있는 것은 예측 결과를 보여주는 그래프 하나 정도예요. (물론 데이터를 시각화하는 Data Visualization 분야가 따로 있습니다. 그걸 하면 보여줄게 더 생기겠죠!) 하지만 그 간단해 보이는 예측을 위해 어떤 일을 얼마나 하는지는 (아무도 읽지 않는) 열 장 짜리 논문에 (아무도 모르는) 수식으로 나와 있죠..^^; Data scientist는 보통 어떤 가설을 검증한다든가, 예측 혹은 추천 알고리즘을 만든다든가 하는 일을 하는데, 이건 결국 어떤 의미에서 세상을 더 잘 이해하는 지식을 만들어내는 느낌이 듭니다. 나만의 돋보기를 통해 세상을 관찰하고 거기 맞는 모델을 만들거나 가설을 검증하는 것을 즐기신다면 추천해요. 저는 컴퓨터로 직접 코딩하는 일보다, 이론적으로 생각해보고 어떤 모델을 써야 할지 결정하는 데에 더 많은 시간을 씁니다. 때로는 데이터를 모으는 (Data gathering) 작업에 한 달이 꼬박 걸리는데, 그 잘 나가는 "머신러닝" 알고리즘 트레이닝은 하루면 끝나기도 하죠! 주어진 상황에서 어떤 모델을 써야 하느냐를 논의할 때 쓰는 언어가 "통계, 확률"이기 때문에 수학을 빼놓고는 논할 수 없기도 해요.

저는 후자의 성향에 더 가까운 사람이었어요. 한 번은 웹 개발을 배워봤는데 도무지 재미가 없어서 결국 개인 웹사이트도 워드프레스로 만들어버렸지 뭐예요. 그에 반해 약 7년 만에 다시 시작한 수학은 너무나도 재미있었고, 머신러닝 모델을 가져다 쓰는 것뿐만 아니라 그 모델들이 왜 돌아가는지, 수학적인 가정은 무엇이고 그게 파괴될 때에는 왜 돌아가지 않는지를 보며 희열을 느꼈어요. (네 맞아요, 저 수학 변태예요.) 혹시나 해서 말인데, 꼭 이렇게 수학을 사랑하고 엄청나게 잘해야만 한다는 뜻은 아니에요. 싫어하지 않으면 충분해요!


여러분은 어느 쪽이 더 끌리시나요? 일단은 Software engineer 가 되는 것이 기본이고, 어느 쪽으로 가든 프로그래밍 언어, 알고리즘, 간단한 수학/논리 정도는 알아야 하니까 그거 공부하면서 슬슬 마음을 정하셔도 돼요. 시장의 수요에 대한 제 개인적인 견해는 이 정도입니다:1) Software engineer는 앞으로도 계속 꾸준히 수요도 많고 연봉도 높을 것이다 2) Data scientist는 기업 측에서 박사인력을 더 원하는데, 그런 비싼 인력을 사지 못하는 중소기업이나 스타트업에서 뭐라도 할 줄 알면 데려간다 (테크 분야뿐만 아니라 제약 같은 다른 산업에서도 수요가 있음). 일단 커리어를 시작하면, 원하는 스킬을 더 배워서 Software engineer를 하다가 Data scientist가 되기도, 또 그 반대로 옮겨가기도 하니까 일단 끌리는 쪽으로 정하시는 것도 나쁘지 않겠습니다. 이제 이 글을 읽으셨으니, 다시 levels.fyi로 가서 한 번 software engineer와 data scientist의 샐러리, 학력, 경력 차이를 구경해 보세요!

 

(번역은 내가 안할거지만) 읽어보면 좋은 아티클

 

How to Become a Software Engineer in 2021 | Career

Education PathsBootcamp certificate, bachelor's degree, or self learning.Essential Technical SkillsSoftware testing and debugging, programming, object-oriented design, data structures and algorithms, web services and APIsEssential Soft SkillsTeamwork, atte

careerkarma.com

 

Data Scientist: The Sexiest Job of the 21st Century

Meet the people who can coax treasure out of messy, unstructured data.

hbr.org