전희원 SK텔레콤 매니저(데이터 사이언티스트)

[컴퓨터월드] 이 글은 전희원 SKT 매니저가 블로그에 올린 글을 필자의 동의 아래 게재합니다. 편집자 주

▲ 전희원 SKT 매니저

필자는 약 9년의 소프트웨어(SW) 엔지니어 경력을 쌓았다가 데이터 분석 분야로 업무분야를 바꾼 뒤 약 3년 정도의 시행착오 끝에 현재 데이터 분석가로 탈바꿈했다. 필자의 경험에 기초해 데이터 분석가의 KPI, 그리고 SW 개발자의 KPI와 관련된 내용을 정리해보고자 한다.

‘데이터를 분석한다’, 많은 사람들이 이 문장을 사용하고 인식하는데 매우 큰 차이를 보이고 있다. 단순히 데이터 전처리 및 단어 카운팅을 하는 것을 분석행위라고 하는 것부터, 시각화, 고급 모델링 및 통계분석 추론 행위까지 포함하고 있기 때문이다.

이 때문에 데이터 분석가라는 직업 자체가 매우 폄하되거나 과대 포장되는 경우가 상당히 많을 것으로 생각된다. 하지만 이 글에서는 ‘분석한다’라는 의미를 ‘의사결정에 도움이 되거나 자동화를 위해 데이터에서 통계적으로 유의미한 정보를 추출하는 행위’로 정의하도록 하겠다.

이런 이유 때문에 다수의 SW 개발자들이 데이터 전처리를 하면서 간단하게 분석을 수행하기도 하고, 오히려 고급 통계분석이나 데이터마이닝을 업무에 적용해 스스로가 데이터 분석가로 거듭나는 사람들도 종종 있다. 반면에 데이터 분석가로 탈바꿈하고 싶지만 그렇게 하지 못하는 SW 개발자들도 많이 봐왔다.

 

SW 개발자에서 데이터 분석가로의 변신... 유념 사항은

SW 개발자에서 데이터 분석가로 성공적으로 업종변경을 하는 것은 경험자의 한 사람으로 봤을 때 그리 간단한 문제가 아니다. 흡사 오랫동안 오른손을 주로 사용해서 조각을 해온 사람에게 왼손만 사용하게 하는 것과 같다. 예외사항으로 조각을 위한 도구를 만들 때는 오른손을 사용하게 해서 필요한 다양한 도구를 만드는 시간을 단축할 수 있게 하는 상황과 매우 유사하다.


변신을 위해 몇 가지 유념해야 될 사항이 있다.

1. 그동안 주력기술과 경력을 쌓았던 SW 개발능력이 앞으로는 주력이 돼서는 안 된다. 이걸 너무도 잘해 계속 성과로 내세우다가는 영영 데이터 분석 업무로 갈 수 없다.

2. SW 개발은 본인의 분석 업무를 매우 쾌적하게 만들어줄 환경과 빠른 분석을 위한 보조수단으로 활용한다.

3. 데이터 분석가의 KPI와 SW 개발자의 KPI는 다르다.


위 세 번째 항목이 특히 중요한데, 데이터 분석 업무의 궁극적인 목적은 의사결정을 위한 유의미한 정보 발견이다. 이는 특정 기능을 하는 SW를 제작하는 행위가 목적인 SW 개발과는 매우 다른 목적이다.

이를 혼동해서 특정 기능을 수행하는 통계 알고리즘을 직접 구현하는데 80%의 시간을 소모하고 20%의 시간을 데이터 분석에 할애하는 개발자들이 종종 눈에 띈다. 이는 데이터 분석 업무에서는 도박행위와 같다.

이 행위는 필자도 수년 전 직접 시행착오를 겪었던 부분이다. 당시 뉴럴 네트워크(Neural Network, 신경망)를 얼랑(Erlang)이라는 언어로 직접 구현(노드를 워커로 할당해 학습을 분산시키는 개념)하고 데이터 분석을 하고자 했다. 알다시피 뉴럴 네트워크와 같은 데이터를 입력으로 받고 데이터로 모델링을 하는 학습 알고리즘의 경우 디버깅이 매우 어렵다.

게다가 뉴럴 네트워크 자체가 블랙박스 모형이라는 점도 큰 장애물로 작용했다. 이렇게 80% 이상의 프로젝트 시간을 구현에 허비하고 남은 20%의 시간만 실제 데이터 분석에 투자하는 과오를 범하고 말았다. 결국 프로젝트는 앞으로 이렇게 하지 말아야겠다는 교훈만을 남긴 채 실패하고 말았다.

 

20%의 시간만 데이터 분석에 할애하는 것은 도박행위와 같다

당시 필자는 개발자적인 만족감에 도취돼 얼랑 언어로 뉴럴 네트워크를 직접 구현하는 일종의 ‘만행’을 저질렀다고 볼 수 있다. 이런 만족감 이면에는 통계분석의 경험 부족을 개발 결과물로 어느 정도 보완하고자 하는 무의식적인 의도가 있었던 것이 아니었을까 돌이켜본다.

부족한 경험과 실력이지만 그 당시 가능했던 통계분석 방법으로 데이터 분석 목적 달성을 위해 노력했다면 어땠을까 하는 생각을 가끔씩 해보기도 한다. 하지만 개발자에서 데이터 분석가로 가기 위해 어느 정도 피할 수 없는 시행착오가 아니었을까 하는 생각이 들기도 한다.

데이터 분석을 하는데 있어, SW 개발 기술 및 이해 정도는 요즘 같은 시기에 큰 힘이 된다. 하지만 데이터 분석의 KPI를 잊은 채 SW 개발 결과물을 내세우고 싶은 유혹 또한 있기 마련이다.

이런 유혹을 떨칠 수 있는 사람만이, 다른 능력이 있더라도 데이터 분석 업무의 시행착오를 묵묵히 견뎌낼 수 있는 사람이 데이터 분석 업무로 성공적인 안착을 할 수 있다고 생각한다. 물론 데이터 분석 KPI를 달성하기 위해 새로 습득해야 될 지식과 경험이 생각보다 매우 많다는 함정이 있지만 말이다.

흥미롭게도 SW 개발과는 다르게 데이터 분석에서 SW 혹은 코드 조각은 그저 중간 결과물에 지나지 않는다. 한 번의 분석을 위해 수백 라인의 R코드를 작성하지만 분석결과가 무의미하다면 코드는 쓰레기통에 들어가고 만다.

코드가 가치가 있으려면 데이터 분석 결과가 유의미해야 되고, 이를 배치 잡(Batch Job)으로 동작시킬 필요가 있을 때 비로소 분석코드가 SW로 되살아날 기회가 생긴다. 따라서 분석과정에서는 개발과정과 같이 심혈을 기울여 최적화된 코드를 미리 작성할 필요가 없으며, 이미 존재하는 알고리즘을 재구현할 이유도 없다.

 

데이터 분석에 필요한 지식을 습득하는데 더 투자하라

프로토타이핑을 하듯이 데이터 분석 코드는 작성할 필요가 있고, 이미 존재하는 알고리즘은 사용과 해석에 필요한 지식을 습득하는데 투자를 하고 가져다 쓰는 게 가장 좋다.

이는 데이터 분석 및 모델링에 ‘은제탄환(Silver Bullet)’이 존재하지 않기 때문이며, 목적에 맞는 탄환을 빠르게 찾아서 선택해 사용하는 게 데이터 분석 KPI를 달성하는데 가장 좋은 접근방법이기 때문이다.

“직접 만들지 않고 이렇게 가져다 쓰기만 하면 내가 얻는 게 뭐가 있나요?”라고 SW 개발자 관점의 질문을 할 수 있다고 생각하는데, 데이터 분석을 하다보면 해석과 추론을 위해 알아야 될 통계지식이 너무도 많이 요구된다.

그 지식을 실무에 적용시키는 훈련이 곧 학습이 되고 경험이 되는 것이다. 흥미롭게도 위와 같은 질문 자체가 아직 SW 개발의 KPI에서 벗어나지 못했다는 것을 의미할 수 있다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지