며칠 전 클라우드 커뮤니티에서 활동도 열심히 하는 2-3년차 주니어 개발자들과 만났습니다. 그 중 한 명이 진로에 대한 고민을 털어 놓았습니다. 최근에 회사에서 기계 학습(ML) 및 딥러닝에 대한 다양한 직무가 생겨나다 보니, 새로운 분야에 호기심을 가지고 공부해서 직종을 전환하고 싶어했습니다. 그러기 위해서는 배워야 할 것도 많고, 현업을 하는 중에 어떻게 시간을 써야 할지 고민을 하더라구요.
조금 주제넘지만 “우선 좋은 SW 개발 경험을 좀 더 쌓는데 집중하라”고 조언을 해주었습니다. SW 개발 경험을 잘 쌓아 두면, 언제든지 새로운 기술이 출현할 때 역할을 수행할 수 있기 때문입니다. 제가 왜 이렇게 이야기했는지 개인적인 경험을 토대로 이야기해 볼까 합니다.
사실 주니어 시절의 개발 경험은 정말 중요합니다. 어린 아이도 걸음마를 해야 나중에 마라톤도 하고 수영도 잘 하듯이 좋은 시니어 개발자와 코드 개발, 리뷰 및 배포 프로세스를 갖춘 회사에서 우선 성장해야 합니다. 이러한 기본기가 충실해야만 IT 분야의 신기술이 출현할 때, 그 기술을 판단하고 소화하는 능력이 생깁니다. (연차를 특정하기는 곤란하지만, 개인적으로는 5년차 정도의 경험은 있어야 한다고 생각합니다. 저도 현업 개발을 8년 정도한 후에야 새로운 직무를 맡았습니다.)
최근에 딥러닝/기계 학습 분야가 각광을 받으면서 고등학생도 딥러닝 모델을 다루고, AI 대학원도 생기고, 인공 지능 분야 진입 장벽이 낮아진 것은 사실입니다. 개발자들도 데이터 사이언티스티나 ML 엔지니어 등으로 전향하는 경우도 많아졌습니다. 학생들이 IT 분야에 호기심을 가지게 되는 계기가 되거나, 시니어 이상의 엔지니어가 새로운 기회를 얻는 측면에서는 추천할 수 있습니다. 하지만, 이 또한 SW 개발 경험이 어느 정도 뒷받침 되어 있음을 전제로 합니다.
왜냐하면, 대부분 IT 분야 신기술은 전형적인 SW 개발 방식과 유사하게 진화해 왔기 때문입니다. 당장 기계학습 분야만 하더라도 초창기에는 인공 지능 분야 박사급 연구 인력이 필요하다는 인식이 팽배했으나, 지금은 현업에 활용을 시작하기 위해서는 SW 개발과 유사한 도구와 프로세스가 필요하고 이러한 도구와 인력이 필요해지고 있습니다.

ML 서비스는 기존의 SW 개발 프로세스와 유사하며, 통합 개발환경, 컴파일, 디버깅, 코드 통합 및 배포 등 모든 과정에서 개발 경험과 노하우가 접목되어야 합니다. 덕분에 많은 SW 개발자들이 ML 엔지니어, ML Ops 엔지니어 등의 직무로 쉽게 전향하고 있습니다.
클라우드 컴퓨팅 기반 기술 변화도 소프트웨어 개발자의 영역을 확대했습니다. 기존에 데이터 센터에서 물리적 장비로 취급하던 것들을(서버, 스토리지, 라우터 등) 프로그래밍으로 구현하고 배포할 수 있는 환경이 되면서, 시스템 엔지니어들이 하던 일을 SW 개발자들이 직접 할 수 있게 되었습니다. 소위 데브옵스(DevOps)로 불리는 클라우드 시대 주역은 기존에 데이터센터에서 일하던 SE가 아니라 사실 SW 개발자들이었습니다. (물론 많은 SE 분들도 데브옵스 역량을 키워서 중요한 역할을 하고 있습니다.)
조금 더 앞으로 가면, 빅데이터 분야도 마찬가지입니다. SAS나 오라클 같은 상용 데이터웨어 하우스를 기반으로 하던 값비싸고 느린 데이터 분석 플랫폼이 하둡(Hadoop) 기반 오픈 소스 생태계로 넘어오면서 많은 개발자들이 빅데이터 분석 분야로 뛰어들었죠. 기존 상용 엔진을 만지던 DW 분석가와 DB 관리자(DBA)가 아니라, SW 개발자들이 오픈 소스 도구를 가지고 데이터를 직접 다루고 이를 현업에 구현하면서 새로운 영역을 개척하기도 했습니다.
제가 Daum에 있는 동안 내부 빅데이터 사례들은 주로 엔지니어에 의해 구현되었습니다. 당시에도 개발자들이 직접 Hadoop을 활용할 수 있는 기술 내재화와 데이터 분석에 대한 역할 파괴, 데이터 분석을 현업 의사 결정에 사용할 수 있는 민첩성을 강조하기도 했습니다.
조금만 더 앞으로 가볼까요? 지금은 프론트엔드 기술이 고도로 발전되어 있고 당당히 엔지니어링의 한 분야입니다만. 웹 초창기만 해도 HTML과 CSS 그리고 웹문서 구성을 돕는 JavaScript 활용 정도에 그치고 있었습니다. 당시 HTML코더 혹은 UI 개발자라는 직종이 있었습니다. (지금은 웹퍼블리셔라고 불리고 있죠.)
2000년대 중반 웹 브라우저 내 기술이 비약적인 발전을 하면서, Ajax를 기반으로 웹 애플리케이션으로 넘어가던 시절이 있었습니다. 자바스크립트 프레임워크가 발전하고 고도화 되는 시기에 많은 백엔드 엔지니어들이 프론트엔드 웹 개발자로 전향하였습니다. 기존 직무를 하던 UI 개발자들도 새로운 변화를 받아들였지만, 더 많은 SW 개발자들이 프론트엔드 개발 영역을 개척했죠. 지금은 프론트엔드 분야에서도 MVC (Model, View, Controller)/MVVM 모델의 개발 방식이 흔하고 사용되고 있습니다.
20년이 넘는 시간동안 웹 프론트-엔드, 모바일, 빅데이터 분석, 클라우드 컴퓨팅, 그리고 기계 학습 분야까지 다양한 신기술이 출현했습니다. 이들 기술은 오늘날 현대적 애플리케이션 개발에서 모두 중요한 역할을 차지하고 있으며, 소프트웨어 개발자들이 주로 활동하고 있는 영역입니다.
앞으로도 우리가 알지 못하는 미지의 신기술이 출현할 것이지만, 그 토대는 결국 소프트웨어 개발이 될 것입니다. 주니어 분들… 기본기만 잘 가지고 있다면, 새로운 기술 변화를 즐기게 될 것입니다. 너무 조급해 하지 마시고, 긴 호흡으로 멀리 보시기 바랍니다.
※ Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources.)
여러분의 생각 (2개)
* 이 글의 댓글 일부는 Webmention 도구를 이용하여, 소셜 미디어 공유 반응(Comments, Like, Tweet)을 수집한 것입니다.
좋은 말씀 감사합니다. 긴 호흡, 쉽지 않지만 노력해봐야겠죠 역시.
첨부해 주신 장표를 보니까 Tenth 생각이 납니다.