Today We Learned #03
인프런이 만난 사람 – 개발자에게 듣다

저는 이 직업이 정말 좋다고 생각해요.

– 개발자 김은기 1편

Q. 먼저 소개 부탁드려요.

저는 항상 열려있는 개발자 ‘좋은사람*’이고요. 평범하게 개발하고 있어요. 아키텍처의 효율적인 개선과 코드 간소화, 최신 기술들을 현행 프로젝트에 적용하기, 그리고 퍼포먼스와 트렌드에 관심이 많은 개발자입니다.
*좋은사람 님 기술 블로그

Q. 과거에 하신 일과 현재의 일이 궁금해요.

과거에 해온 일은 SI라고 하죠. 큰 규모의 시스템을 처음부터 끝까지 개발하는 건데요. 애플리케이션이 어떻게 만들어지는 지를 정신없이 겪으며 지나왔어요.

R&D에서는 파이썬 쪽의 OCR, 머신러닝, 빅데이터처리 기술을 이용해 대용량 데이터 처리를 진행했고요. 현재는 딥러닝을 이용한 자연어 처리를 하고 있습니다. 지금은 딥러닝을 활용해 자연어 처리를 깊게 파고 있어요. 철자 검사, 동의어 찾기 등을 딥러닝을 이용해 해결하는 프로젝트로 의미분석과 시맨틱 애널리시스*(Semantic Analysis) 학습을 시키고 있어요.
*자연어 분석과정, 자연어 이해 기법 중 하나이며 여러 의미 분석 방법과 다양한 유형의 문법을 이용한다.

Q. 어떻게 개발에 입문하셨나요?

컴퓨터공학을 전공했지만 어렸을 때부터 프로그래밍을 좋아하진 않았어요. 하드웨어의 작동원리 또는 커스터마이징이라고 하죠? 기존의 하드웨어를 뜯어 납땜 같을 걸 해서 새로운 기능을 추가하는 것에 관심이 많았어요.
* 커스터마이징: 이용자가 사용방법과 기호에 맞춰 하드웨어나 소프트웨어를 설정하거나 기능을 변경하는 것.

하지만 하드웨어가 소프트웨어의 퀄리티에 좌우되고, 하드웨어 사양이 높아도 SW가 받쳐주지 못하면 좋은 제품이 나오지 못한다는 걸 분명히 깨달았어요. 그래서 약간 늦은 나이에 소프트웨어 방면으로 전향했어요.

서른 살 즈음이었어요. 당시 SI의 기술을 경시하는 분위기 속에서 SI로 개발에 입문했어요. 그때 정말 많이 힘들었죠. 우리나라의 개발 문화를 조금 쇠퇴시키는 게 SI 문화라고 볼 수 있어요. 불필요한 야근, 정해지지 않은 방법론, 제한된 개발자의 역할 같은 것들.

예를 들어 각종 학원에서 몇 개월만 수업을 듣고 바로 SI로 들어와 작업하는데요. 그렇게 만든 품질은 견고하지 못하다는 걸 깨달았어요. 진입장벽이 낮게 만들어진 소프트웨어는 또 두 차례, 세 차례를 개발을 또 하게 돼요.

안 좋은 점만 얘기를 드렸는데요. 요즘에는 SI도 개발 방법론을 숙지하고 실천하는 프로젝트 매니저나 고객사들이 점점 많아지고 있어요. 프로젝트를 처음부터 끝까지 겪어볼 수도 있고요. 새로운 기술을 찾아 바로 적용하고, 어떤 고객사든지 클라이언트가 원하는 제품을 만들고 그에 따른 만족감과 성취감도 크게 느낄 수 있어요. 다양한 도메인을 경험할 수도 있고요. SI로 개발에 입문한 건 저한테는 굉장한 큰 경험이었습니다.

Q. 프로그래머의 좋은 점은 무엇인가요?

저는 프로그래머라는 직업이 정말 좋다고 생각해요. 첫 번째로 우리나라가 IT 기술 인프라로는 강국에 속하기 때문에 IT 기반 비즈니스 모델로 사업할 수 있는 곳이 정말 많습니다. 그만큼 실력이 좋으면 이직을 쉽게 할 수 있고 또 좋은 회사에서 실력에 준하는 연봉을 받을 수 있어요.

두 번째로 정확하게 기획, 설계 분석된 애플리케이션을 만들 수 있고, 제 날짜에 고객의 니즈를 맞춰 비즈니스 모델, 아이디어를 제품화시키는 능력이 있다면, 1인 개발자로서 많은 수익과 명성과 개발자로서의 인지도를 모두 획득할 수 있어요.

세 번째로 프로그래머는 새로운 것을 창조하는 일이고, 기술의 패러다임이 금방금방 바뀌기 때문에 자기 계발의 기회가 정말 많습니다. 식상한 농담이지만, ‘마흔 살이 넘으면 외식업이나 창업을 준비해야 한다.’ 이런 말은 과거의 자기 계발에 뒤떨어지고 트렌드에 뒤떨어지는 일부 사람들이 만들어낸 말이라고 생각해요. 적어도 제 주위에는 그런 사람은 보이지 않습니다.

열정적이고 진취적으로 일하는 개발자라면, 또 최근에 나온 AWS를 잘 활용하면 이직 시장에서 폭넓게 자기 위치를 선점할 수 있어요. IT 회사도 많고 각 회사마다 필요로 하는 인재들이 정말 다양해요.

1인 개발자로서 제품을 만들어 수입을 창출하고 자신의 인지도를 높이면 사회생활을 영위해 나가는 데에는 부족함이 없어요. 저는 이런 점에서 프로그래머라는 직업이 매우 좋다고 생각합니다.

Q. 관심있는 기술분야가 있나요? 덧붙여 그 분야가 중요하다고 생각하는 이유가 궁금합니다. 

데이터의 빠르고 민첩한 처리가 프로젝트의 성패를 좌우하는 시기가 왔어요. 예를 들어 A 진영에서 관련 오픈소스가 나오면, B 진영에서도 나와요. 이를 활용하는 엔지니어들은 정말 바쁠겁니다. 서로마다 장단점이 명확하고 또 자기만의 최적화된 데이터 프로세싱 시스템을 확보하기 위해 이런 기술력을 습득할 수 있는 좋은 시기라고 생각해요.

저는 AWS를 활용해서 실시간 스트리밍 데이터를 수집, 처리, 분석할 수 있는 시스템을 만들고 있어요. 데이터가 왕이기 때문에 이런 통찰력을 확보할 수 있고 효율적으로 비용을 낮출 수 있는 AWS를 활용합니다. 저장된 데이터를 일반 SQL, NOSQL 또는 자바나 파이썬 을 활용해 직접 조회하고 제공하는 데이터 처리 플랫폼에 관심이 있어요.

데이터를 처리, 분석하고 이와 관련된 제품을 만들어 내부적으로 활용하거나 이익 창출에 힘써야 하기 때문에 경쟁에서 우위에 설 수 있는 기반을 확보하는 것이 가장 중요한 영향을 미칠 거예요.

또 블록체인과 지능형 네트워크가 중요한데요. 지금까지는 데이터를 사후 처리했거든요. 이제 실시간 처리를 이용해 신속하게 데이터를 통합하고 스트리밍 데이터 서비스를 제공하는 기술이 방송, 금융 분야에 막대한 영향을 끼칠 거예요.

그런 의미에서 파이썬, Golang, R이 중요하고요. 특히 데이터 분석 처리에 용이한 범용 프레임워크 언어로서 파이썬의 위상은 점점 높아질 거라고 생각해요. 거기에 덧붙이자면 데이터를 처리하고 가공하고 학습하는 데이터 엔지니어의 역할이 점점 위상을 높여갈 겁니다.

Q. 강의는 어떻게 구상하시나요?

자랑은 아니지만 책을 많이 읽습니다. 정말 많이 읽어요. 책을 읽으면서 느낀 건데요. 어려운 책, 쉽게 읽다가 끝나는 책, 남는 게 없는 책이 있어요. 일반적인 바운더리 안에서 쉽게 학습할 수 있는 부분을 넓게 펼쳐 쓴 책들도 많고요.

좋은 강의는 중심을 잡고 있어야 한다고 생각해요. 그래서 기초로 시작하지만 도전할 수 있는 파트, 예제 파일, 또는 어떤 ‘목적’을 꼭 강의에 넣으려고 해요. 그렇게 만들면 강의가 어려워지기도 하는데요. 하지만 저는 강의를 만들 때 너무 쉽게 만들려고 하진 않습니다.

처음엔 기초부터 시작하지만 수강생이 강의를 반복해서 들었을 때 처음에는 해결되지 않은 부분이 나중엔 ‘아, 이런 거였구나’라고 반드시 성취감을 느끼도록 하고 싶어요. 그럴 수 있도록 카테고리와 예제 파일을 구성합니다.

Q. 평소 어떤 툴을 자주 사용하세요?

윈도와 맥을 둘다 사용합니다. 맥은 맥 mini를 주로 사용해요. 들고 다니면서 모니터만 연결하면 매우 쉽게 사용할 수 있기 때문이죠. 노트북은 Window, 데스크탑도 Window를 사용하고요. VS Code, Atom 에디터 그리고 전사적으로 모든 기능을 제공해야 하는 파트에서는 인텔리제이를 많이 씁니다. 프로젝트에 따라서 이클립스를 사용하고요. IntelliJ 기반의 소프트웨어와 파이참, 웹스톰을 즐겨 써요.

Q. 지금 프로그래밍을 시작하는 사람은 어떻게 공부하는 게 좋을까요?

고급, 중급, 초급 이런 개발자들을 우리나라에서 나누는 등급이 있죠. 근데 저는 의미 없다고 생각합니다. 눈으로만 본 게 아니라 직접 키보드로 소리를 내면서 코딩을 한 사람이 잘하거든요.

막연히 Copy & Paste를 하는 것 말고요. 개발자가 갖다 쓸 수 있는 프로그램을 개발하는 개발자, 그리고 그러한 오픈소스를 갖고 와서 개발하는 개발자 두 종류가 있는데요. 둘 다 훌륭하다고 생각해요.

하지만 지금 시작하는 분들은 반드시 요즘 기업에서 채용시스템에 반드시 들어가는 알고리즘을 공부해야 합니다. 무턱대고 시작한 개발자보다 나중에 숙련도가 쌓였을 때 압도적으로 실력 차이가 나는 것을 저는 눈으로 확인하고 체감하고 있기 때문인데요.

각 언어를 배우기 전에 C언어를 활용한 알고리즘 코딩을 먼저 공부하고 자료 구조라든지 알고리즘 문제를 많이 풀어서 기본을 1년 정도 익히고 개발 엔지니어로서의 실무 필드로 나오셔도 충분히 훌륭한 프로그래머가 될 수 있을 거라고 생각해요. 나중에 다시 하려면 쉽지 않아요. 가장 중요한 건 알고리즘에 관한 기초학습이라고 말씀 드리고 싶어요.

Q. 최근에 읽은 책 중, 추천할 책이 있나요?

현재 제 관심사는 대용량 데이터의 실시간 전처리에 있어요. 내가 만들고 싶은 걸 AWS를 활용해 만들어보는 게 가장 핵심입니다. 요즘 90% 이상이 AWS 활용 가능자를 인재로 영입하려 하는데요. AWS를 공부해보시길 추천드립니다.

<실전 AWS Workbook>이란 책이 있어요. 검색하면 1위로 나오는 책인데요. 얇고 정말 좋습니다. 전자책으로도 나와있어요. AWS를 활용한 인프라, 데이터 분석, 백업, 모바일 앱 등 실무 필드의 현업들한테 필요한 것들을 잘 요약해서 설명해놨더라고요. 너무 도움을 많이 받은 책이라서 추천하고 싶어요.

Q. 스트레스는 어떻게 푸세요?

음악을 좋아해요. 듣는 것뿐만 아니라 연주하는 걸 좋아합니다. 밴드에서 드럼을 치면서 스트레스를 풀어요. 또 게임기를 직접 사서 조립하고, 라즈베리 파이를 기반으로 레트로 게임기를 기성품을 만들거나, 직접 파츠를 사서 만들기도 해요. 그렇게 스트레스를 풀어요.

>>인터뷰 2편 보러가기

좋은사람 김은기 님이 정성껏 만들었습니다.

우리는 성장 기회의 평등을 추구합니다.