ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 머신러닝 데브매칭으로 솔트룩스 자연어 처리 개발자가 된 샘 이야기, “아주 작은 가능성 키우기”
    취업 이야기/합격자 인터뷰 2020. 8. 27. 11:35

    비전공・늦은 나이라는 걱정보다 하고 싶은 일을 선택한 3년 차 자연어 처리 개발자 인터뷰

    2020년 1월과 2월에 걸쳐 진행된 ‘2020 Dev-Matching : 머신러닝(자연어 처리) 개발자'를 통해 솔트룩스 자연어 처리 개발자가 된 샘을 만났습니다. 생명과학 전공자 샘은 어떻게 개발자가 되었고, 어떤 개발자로 살아가고 있는지 이야기를 들어보세요.

    솔트룩스, 자연어 처리 개발자 샘

    "솔트룩스의 제품기술연구센터에서 자연어 처리 개발을 담당하고 있습니다. 저는 특이하게 개발자가 된 케이스라고 생각해요."


    개발자가 되기에 늦은 때란 없다

    특이하게 개발자가 되었다고 하셨어요. 개발이 아닌 어떤 다른 일들을 하셨나요?

    일들을 한 것은 아니고요, 개발과 관련 없는 것들을 해왔어요. 대학 전공은 생명과학이었고, 석사 전공은 미생물 생태학이었어요. 프로그래밍에는 계속 관심 있고 하고 싶었는데 선뜻 시작을 못했어요. 학부 때는 부전공을 고민하다가 못했고, 학부 전공이 없다 보니 석사도 지원 못했죠. 지금 생각해보면 뭐든 해도 괜찮았는데 어리고 잘 몰라서 진로 선택을 그렇게 했던 것 같아요.

    이후에 석사를 마치고 나서는 군대 대체복무를 하려고 여러 회사를 알아보는데 대체복무까지 생명과학 분야에서 하기가 싫은 거예요. 컴퓨터 과학 관련된 일할 수 있는 곳은 없나, 뽑아 주는 곳은 없나 알아봤어요. 그런데 전문연구요원은 석사가 있어도 유관전공자만 가능하더라고요. 전자공학과나 기계공학과까지는 받아줬던 것 같은데 그때 당시에 저를 받아주는 곳이 없었어요. 어떻게 할까 고민하다가 임상시험 데이터 관리라는 일을 하는 곳에 지원했어요. 데이터 관리를 한다고 하니 프로그래밍을 할 수 있을까 싶었거든요. 나중에 아닌 것을 알게 되었지만 그 회사에 합격되어서 4년 정도 일을 했어요.

    임상시험 데이터 관리는 프로그래밍은 아닌가요?

    프로그래밍은 아니에요. 데이터에 논리적으로 문제가 없는지를 보고 그 데이터를 작성한 사람에게 쿼리를 날려서 수정을 요청하는 일이었어요. QA와 비슷해요. 임상시험 데이터의 버그를 잡는 일을 했던 거죠. 굉장히 지식노동이면서도 단순노동도 많은 일입니다. 업무량도 많은 편이었어요.

    그렇다면 개발은 언제부터 하게 되셨어요?

    저를 처음 뽑아준 스타트업에서 개발을 처음 시작했어요. 이 취업 과정도 특이해요. 인공지능 분야로 취업을 하고 싶었는데 채용공고를 보면 생명과학 전공을 전혀 뽑지를 않아요. 그래서 취업이 안될 것 같다는 생각을 많이 했어요. 그러다가 꼭 입사지원이 아니더라도 가볍게 차를 마시는 시간을 가져봐도 좋을 것 같다는 메일을 받고 대표님과 티타임을 갖게 되었어요. 사실은 제가 다른 팀에 지원할 수 있는지 물어보려고 갔죠. 딥러닝 개발자에 관심은 있지만 잘 안될 것 같다고 솔직하게 말했어요.

    그런데 대표님이 인터뷰 중간에 개발자로 일해보지 않겠냐고 먼저 제안을 주셨어요. 고민을 많이 했죠. 해보고 싶지만 두려움이 컸거든요. 모르는 분야이고 개발을 해본 적도 없었고요. 괜히 늦은 나이에 시작해서 되게 못하는 사람이 돼서 저에게 실망하고 싶지 않았거든요. 그래서 조금 시간을 달라고 말씀드리고 또 고민했어요. 취업 준비하면서도 계속 딥러닝 공부를 했는데 재미가 있는 거죠. 너무 재미있어서 제대로 한번 하고 싶더라고요. 그래서 제안해주신 대표님이 계신 회사로 입사를 했고 개발자로 일을 시작하게 되었어요.

    개발자 경력이 없는데 왜 뽑으셨는지 혹시 입사한 다음에 물어보셨어요?

    물어봤죠. 입사하고 나서가 아니라 입사 전에 면접에서 여쭤봤어요. 왜냐하면 프로그래밍에 대한 경력과 포트폴리오가 없는 사람을 개발자로 뽑는 것은 저도 이해할 수가 없었거든요. 그래서 여쭤봤는데 감이라고 하셨어요. 지금까지 많은 사람들의 면접을 보고 겪어봤는데 감이 왔다고. 그 감이 제가 굉장히 좋은 개발자가 될 것 같은 감이라고 하셨다고 나중에 다른 분을 통해서 들었어요. 그래서 항상 감사한 마음이 있어요.


    인생은 말하는 대로

    딥러닝은 어떤 계기로 관심을 갖게 되었나요? 

    처음에는 인공지능 기술이 어디까지 발전되었고 정확히 무엇인지 궁금증이 생겨서 찾아보기 시작했어요. 레이 커즈와일의 <마음의 탄생> 이라는 책이 있어요. 뉴럴 네트워크가 뇌과학 이론을 굉장히 많이 차용하고 있는 것을 이 책에서 설명해주거든요. 인간의 뇌를 모방한 네트워크를 만들어서 실제로 도입을 했더니 인간의 수준만큼 혹은 인간을 뛰어넘는 알고리즘을 만들어냈다는 것에 가장 매료되었어요.

    생명과학 전공과도 약간 연관이 있네요?

    네, 인간의 뇌에 대한 호기심이 강했거든요. 생명과학을 전공으로 선택한 것도 그 이유였고요. 저는 컴퓨터 공학 쪽에서 인간의 뇌를 연구할 수 있는 것이라는 생각을 그때 당시에는 못했어요. 살아있는 생물을 다루거나 인체의 전반적인 메커니즘에 대한 이해를 통해서 뇌를 더 이해할 수 있겠다 생각했었는데 그게 아니더라고요. 딥러닝 공부를 하면서 깨닫게 되었어요.

    여담이지만, 4년 전쯤 알파고로 떠들썩할 때 회사 동료분들과 뉴스를 보면서 나중에 여기 퇴사하고 나서 인공지능 관련된 일하고 싶고 아마 그렇게 될 것 같다고 얘기한 적이 있어요. 사람들이 갑자기 뜬금없이 인공지능 쪽에 취직을 한다는 거냐고, 전공도 다르지 않냐고 했었는데, 지금 진짜로 하고 있는 것이 제가 생각해도 신기해요.


    솔트룩스 이직기

    프로그래머스 ‘2020 Dev-Matching : 머신러닝(자연어 처리) 개발자’에는 어떻게 참여하게 되셨나요?

    가장 큰 이유가 설날이 심심해서 뭐라도 할 거리가 있었으면 좋겠다였어요. 이직 생각이 있긴 했는데 겨울에 뭔가를 하는 것을 귀찮아해서 나중에 하려고 했어요. 그리고 제가 춤을 좋아해서 1월에 인도에서 열리는 춤 축제를 가려고 했거든요. 페스티벌 일주일 남겨두고 인도 비자 발급받고 비행기 예약하고 그렇게라도 가려고 마음먹었는데, 그때 회사에 일이 있어서 좀 나중에 가야 하더라고요. 결국 인도는 안 가게 되었고 설날 명절 연휴에 아무것도 안 하는데 너무 심심했어요. 이직하고 싶은 마음도 있긴 했었으니까 이직 성공하면 좋지만 안 돼도 이번 기회에 내가 얼마나 부족한지를 깨닫고 좀 충격을 주자는 생각으로 참여를 했어요. 별로 열심히 하지는 않았고요 하루에 두세 시간 정도 하면서 ‘아 내가 너무 잉여인간으로 지내지 않았다’는 만족감을 느꼈죠.

    그럼 회사를 선택할 때 어떤 점을 중요하게 보셨어요?

    딥러닝 중에서도 제가 관심 있는 분야의 일을 할 수 있는 회사인지를 중요하게 봤어요. 사실 저를 자연어 처리 개발자라고 생각하게 된 것은 솔트룩스에 입사한 이후이고, 그 전에는 딥러닝이 하고 싶은 개발자라고 생각했죠. 딥러닝과 관련된 여러 분야 중에서도 자연어 처리에 관심이 있고, 자연어 처리 중에서도 언어 모델이나 기계 독해 쪽에만 관심이 있었어요.

    첫 이직인데, 솔트룩스 면접 볼 때 힘든 점은 없으셨어요?

    조급한 마음이 많았어요. 면접 볼 때도 제가 해온 일에 대해서 주눅 들어 있었죠. 나는 왜 이렇게 부족한 게 많지? 더 빨리 성장해야 할 것 같은데? 이런 불안감이 항상 있었고 늘 똑같은 일만 하면서 내가 뒤쳐지는 것 같다는 생각을 하고 있었으니까요. 그런데 좋게 봐주신 것인지 모르겠지만 솔트룩스 면접 담당관(이자 지금의 팀장님)께서 많은 일을 한 것이라고 말해주셨어요. 그리고 실제로 많은 일을 했었구나라는 것을 지금은 조금 알 것 같아요.


    자연어 처리 개발자의 일상

    자연어 처리 개발자는 어떤 일을 하나요?

    문장이나 문서에 대해서 사용자가 원하는 정보를 얻게 끔 알고리즘을 짜는 것이 자연어 처리 개발자가 하는 일이라고 보시면 될 것 같아요. 세부적으로 기초기술을 연구하는 사람들이 있고, 저는 그 기술을 적용하는 개발을 해요. 다양한 자연어 처리의 기초 기술들 중에 개발하려고 하는 소프트웨어는 어떤 기술들을 가져다 쓸 수 있는지를 파악하고 적용하고 있어요.

    그럼 텍스트 데이터 전처리도 직접 하세요?

    주로 전처리를 하죠. 전처리가 노가다인데 그냥 하고 있어요. 

    솔트룩스에서 가장 재미있는 업무는 어떤 것이에요?

    최신 기술을 이해하는 과정이요. 예를 들어 어떤 논문을 읽고 실제 도입이 가능한지를 알아봐야 할 때가 있는데, 관련된 최신 논문뿐 아니라 과거 논문도 찾아 읽거든요. 논문을 읽으면 부족한 기본기가 채워지는 것 같아서 즐거워요. 또 제가 잘 모르는 부분이 무엇인지 알 수 있고, 이것이 회사 일이니까 모르는 부분에 대해서 회사 업무 시간에 마음껏 볼 수 있는 점도 좋아요.

    다른 사람들에게 이야기할 수 있는 솔트룩스만의 특별히 좋은 점이 있을까요?

    자연어 처리 지식 기반으로 고객사의 불가능해 보이는 요구사항들을 구현해가는 과정이 재미있어요. 아직 구체화되지 않은 기술에 대해서 이것을 어떻게 하면 만들어 낼 수 있을까를 고민하는 것은 해보지 못한 경험이기도 하고요. 그리고 제가 할 일을 다른 사람이 정해주지 않아요. 모델을 만들었을 때 그 모델의 성능평가를 어떻게 할 것인가도 제가 정하는 거예요. 이렇게 평가했어요라고 할 때 설득력이 있으면 오케이. 그건 말이 안 되는 것 같은데?라고 까이면 다시 또 찾아서 알아보고 다시 검토받는 과정을 거치는데 이런 과정이 낯설고 힘들지만 좋은 경험이라고 생각해요.

     

    2020년 7월 30일. 창립 20주년이 된 솔트룩스 기념 파티 모습. 장소는 솔트룩스 카페테리아.


    코드를 읽고 짜면서 실력 늘리기

    딥러닝을 독학을 하셨다고 했는데, 어떤 것부터 시작하셨어요? 기억나는 것이 있을까요?

    첫 번째로 일단 개발을 해야 하잖아요? 코드를 짤 줄 알아야 해서 파이썬 책을 한 권 쭉 읽으면서 코드도 작성해봤어요. 사실 대학교 때도 수업을 3개 정도 들었고, 혼자 공부한 경험이 있어서 아예 0부터 시작하는 것은 아니었거든요. 석사 때도 단순 반복 작업이 있으면 프로그램을 짜서 연구실에서 같이 썼고요. 제 연구에 쓰려고 단순한 코드를 짜서 사용하기도 했어요. 그런 식으로 저에게 필요한 것을 만들려고 했었어요.

    평소에 개발 공부는 어떻게 하세요?

    스탠포드(Stanford)나 다른 대학교에서 공개한 강의자료를 보고 과제를 하면서 혼자 딥러닝을 공부했었는데요, 지금 생각은 좀 달라졌어요. 요즘은 알고리즘을 많이 공부하려고 해요. 왜냐하면 전처리를 많이 하고 있는데, 전처리를 할 때 알고리즘이 중요하더라고요.

    개발을 하면서 개인적으로 실력이 많이 늘은 것 같다고 느꼈던 적은 언제였을까요?  

    딥러닝 개발에만 해당하는 것인데요, 논문을 읽으면서 어떻게 코드로 구현할지 머릿속에 그려질 때요. 그 전에는 논문을 읽어도 이해는 되는데 코드로 어떻게 구현해야 할지는 막막했거든요. 다른 사람이 짜 놓은 코드를 보면 읽을 수는 있겠는데 나에게 코드로 구현하라면 못하겠다는 생각을 했었어요. 최근에 친구에게 발표된 지 3개월 정도 지난 논문을 읽고 설명해달라고 부탁받은 일이 있었어요. 그 논문을 보는데, 코드로 구현도 할 수 있을 것 같은데?라는 생각이 들었어요. 그런 자신감이 있었어요. 모델을 이해하기 위해 그림을 그려가면서 읽어서 그런지 다시 그 논문을 떠올렸을 때 그림들이 머릿속에 그려지더라고요.

    마지막으로 이 분야로 취업을 준비하는 후배들에게 한 말씀 부탁드려요.

    자료구조, 알고리즘 같은 기본을 충실히 익히면 좋겠습니다. 자신 있게 쓸 수 있는 프로그래밍 언어도 있으면 좋은데, 저 같은 경우엔 오픈 소스의 코드를 많이 읽다 보니 늘었어요. 처음 접했던 파이썬이라는 언어가 많이 낯설었는데, 읽으면서 많이 익숙해졌거든요. 여러 사람들의 코드를 보다 보면 내가 몇 줄에 걸쳐서 짰던  코드를 이렇게 짤 수도 있구나 라는 것을 알 수가 있고 혹은 어떻게 짜면 조금 더 보기 좋은 코드를 짤 수 있는지 눈에 들어오거든요. 어떤 사람 코드는 '어 되게 잘 읽힌다 내가 실력이 늘었나?' 하다가 다른 사람 코드를 보면 '아 나는 쓰레기인가… 왜 이렇게 안 읽히지?' 생각하게 되는데 그냥 그 코드가 지저분한 것일 수도 있어요. 그런데 잘 안 읽히는 코드도 읽고 리팩토링 할 수 있는 것도 실력이니까요. 

    특히 논문을 구현하는 분들은 논문을 이해하는 것과 그 내용을 코드로서 이해하는 것은 또 다르고, 그 코드를 보고서 고칠 수 있는 것이 또 다른 능력이라고 생각해요. 사실 논문만 보고도 코드로 구현할 수 있는 것이 최고죠. 아무 기본 코드 없이 스스로 짤 수 있는 연습을 하시면 좋아요. 그런데 그런 분은 이미 좋은 회사에 취업하셨을 것 같네요.

     

    댓글

Programmers