2. 주제
● 어떻게 일하는가
○ 잘하는 사람이 가르쳐 줌
● 일하면서 배운 것
○ 실수하면서 고생한 얘기
● 과거에 하고 돌아다닌 것들 + 느낀 것
○ 순서대로
○ 앞부분은 연도 생략..
이건
아니다.
2
3. 서울대 석사, 최적화연구실
● 학부생 때 알고리즘, AI가 재미있어서 컨택.
○ 조합 최적화(combinatorial optimization)를 genetic algorithm으로
○ 신경망, HMM 같은 기계학습 모델을 더 잘 풀기
● 개인적 목표: 과제비로 국제학회 출장가기 (ACM GECCO)
○ 쉽게 논문 쓸수 있는 주제 정함: 그래프 분할(NP-Hard)을 GA로 global optimization - 2년 동안 3편 씀. 졸업논문도 이걸로..
○ 학회 두번 갔음: Seattle (1년차), London (2년차)
○ 겉핥기: 정말 중요하거나 풀고싶은 문제라고 생각했나? No. 그냥 논문 될 거 같은 걸로 썼음.
○ 그래서 machine learning 연구에 흥미 잃음.
● 프로젝트: 한국주가 데이터 분석
○ 기술적, 기본적 전략 backtest - 나중에 지도교수님 책 쓰시고(<메트릭 스튜디오>) 자산운용사 창업.
○ 데이터 분석은 데이터 다듬는 일이 절반 (수정주가, 데이터 누락, 심지어 오타)
○ 여러가지 bias, overfitting을 피하는 것은 매우 어려움: 나중에 전략대로 해봤는데 잘안됨 (PER/PBR, NCAV)
● 중요한 문제를 찾아서, 남들보다 더 잘푸는 것은 쉽지 않은 일
○ 실력, 끈기, 진지함이 있어야.
○ “Success is the ability to go from one failure to another with no loss of enthusiasm.” - Sir Winston Churchill
3
4. 티맥스소프트 R&D center
● S 팀장님 만남
● 기업용 검색엔진을 만들어보자
○ 시스템 프로그래밍, 엔진 개발에 대해 많이 배움
■ 출근한 첫주에 Stevens의 <APUE> 주문했던 기억.
■ 설계하는 법, 발표하는 법.
○ 제품개발 - ProSearch
■ 문서 수집 - parsing - indexing - 실시간 검색 - UI까지.
■ 제품에 대한 애정 - 내 자식, 내 작품이라고 생각.
○ 일하면서 공부하면 필요성을 느끼면서 빨리 배움.
■ 메모리 관리, 동기화, multi-threading 이 왜 필요한가
■ Big-o notation의 유용함. Stack overflow가 정말 발생하네! (non recursive하게 작성해라).
○ 대우조선, 부산시청 등 몇개 고객확보.
● Web crawling도 해서 검색서비스를 하자.
○ Google 초창기 논문 읽고 자체 개발 - 분산 Crawler, 분산파일시스템(GFS 따라하기)
● S님 유학선언 & 월급 안나옴.
“철이 없었죠.
바닥부터 만든다는 게...”
4
5. 삼성전자 생산기술연구소
● 반도체 사업부 가서 일하기
○ 메모리 사업부, LSI 사업부 - 제조업의 끝.
○ 잘되는 조직 - 반도체 사업부
■ 일에 대한 진지하고 치열한 자세
■ 직급이 높아질수록 더 고생하는 게 당연
■ junior가 도전적으로 일벌리다가 하는 실수는 조직이 책임진다
■ “일이 되게 한다” - 크고 오래된 회사지만, 좋은 사람보다 일이 되게 하는 사람을 더 인정하는 분위기.
○ MARS 프로젝트: 메모리/LSI 장비 (주로 photo scanner) 생산최적화
■ 장비의 데이터 수집/구조화
■ 병목 찾을 수 있도록 시각화. 데이터마이닝, 장애예측
○ DSL 정의 + 자동수집기(ssh, ftp, 각종 log 파일)
■ 대형사고: 목요일 밤에 걸려온 전화… 데이터 수집 가이드라인 생김.
■ 현업에 대한 존중
● 대기업의 장단점
● (건방지게) 만족못함. SW가 메인인 곳
○ 퇴사하고 좀 쉬자
○ 대학원때 써둔거 출판 (많이 못놀았음) - 아는 걸 남에게 설명하거나 글로 쓰면 더 잘 알게됨.
5
6. 티베로 연구소
● 외국계 회사가려고 interview, offer 받음.
○ “엔진! Core! 해봐야하지 않겠나”
● Tibero Core team 합류
○ 이런거 개발함
■ Buffer cache management, transaction management
■ Crash recovery, active-active cluster, physical replication
○ 정작 query optimization을 안했기 때문에.. SQL 잘모름.
● UNIX계열 C 시스템 프로그래밍의 끝을 봄.
○ 정말 밑바닥부터 구현: 예를 들어 플랫폼 별로 구현한 동기화 메커니즘(lock) 구현.
○ 복잡성 다루기 - 추상화 계층을 수십단계 쌓아올림.
○ 십년 넘은 수십만줄의 코드를 수십명이 수정. 수백개 고객 요구사항.
■ 로그보고 디버깅해서 패치하기.
○ RDB는 CS 성과의 집약체 - 다른 걸 쓰려면 잘 생각해봐야함
● 레드오션 전략
○ 확실한 제품을 고른 다음, 더 싸게, 더 빠르게, 고객이 원하는 대로
○ Oracle 따라잡기
○ 장점과 단점
6
7. Atto Research (2014-2020)
● SDN 연구개발 시작하던 시점 합류
○ 몇년내로 네트워크는 모두 SDN으로 넘어갈거라고 예상.
● 1년쯤 주로 개발. 팀이 빠르게 커지면서 management 시작.
● 제품/기술 영역: network/cloud innovation
○ SDN controller OBelle: openflow SDN 컨트롤러
○ Hermes: SDN+3D 시각화
○ OBelle Fabric: OpenStack의 cloud network을 빠르게
○ Atto-Access SDLAN: LAN을 SDN으로
● 그리고 수많은 정부과제
○ 과제책임자 5-6번 정도. 실무는…
○ 정부과제 driven development
■ 언젠가부터 일주일중 2-3일은 정부과제에..
7
“이제 돈되는 일이면 다해라”,
<범죄도시>
8. Atto Research (2014-2020)
● SDN Controller OBelle: 컨트롤러 자체만으로 팔릴줄 알았으나..
● Hermes (2016): 보는 사람마다 우와 하고 사진찍어감. 그러나 매출은..
● Fabric (2017): cloud에서 SDN 기반 network virtualization
○ 첫고객: Koscom PaaS
○ 어마어마하게 많은 legacy network(underlay) + neutron overlay network의 기능을 하나씩 구현
■ 기술적인 벽에 부딪히고.. 넘고..를 반복, Openflow 지원 하드웨어 부족함
■ 지금 생각해보면 개발팀장(=나)의 기술적 고집, 미련한 결정으로 모두 고생.
○ 나중에 NBP가 win-back: 여기는 그냥 쉽게쉽게 감.
● Atto-Access: SDN으로 LAN 구현 (2018)
○ 고객이 원하는 것 - IP mobility?
○ LAN 구현은 훨씬 쉬웠음. 가끔 표준과 다르게 구현된 장치들 처리하기.
○ 시청, 교육청 등등 - 고객 늘어나는 중.
● 최신, 고급의 기술이 중요하지 않음
○ 시장에 보여주면 요구사항은 달라짐.
○ 오래 걸려 만들지 말고, 빠르게 프로토타입을 만들어야 함.
○ 비지니스적으로 풀수 있는 것은 그렇게 풀자.
● 정부과제의 장점이자 단점
○ 제품 초기단계에 금전적 지원 (도랑치고 가재잡고)
○ 마음이 편함: 뭔가 하고 있다는 느낌, 인건비 상당부분 커버 (취업준비생의 알바)
○ 팀장, 연구소장, 주요개발자가 소수가 대응하게 됨.
8
9. 정리 & 못다한 얘기
● 커리어 관리
○ 자기의 한계(기술적 어려움, 일의 빡셈)에 적절하게 도전해야 능력향상
■ “Brain muscle”, “일근육”: 근육은 찢어졌다 회복하는 과정에서 커짐
■ 적절한 무게: 너무 어려우면 좌절하고 멘탈깨짐.
● 이런 구성원을 격려해서 키워낼 수 있는 조직이 좋은 조직
○ 장인정신 - 내 제품을 내 새끼, 내 작품이라고 생각하자.
○ 이직: 실력과 reputation이 가장 큰 재산.
● 공부
○ 매주 하루정도, 업무관련 공부만 하면 정말 잘 알게 됨: 그렇게 하는 사람은 드물다.
■ “좋은 프로그래밍 책을 두 달에 한 권, 즉 일주일에 대략 35페이지 정도만 읽어도 당신은 이내 이
분야에 대해서 확실한 감을 갖게 될 것이며 주변의 거의 모든 이들과 구별되는 수준으로 올라설
것이다.” - <Code Complete>, 스티브 맥코넬
○ 의도적 수련이 중요 - 나의 수영실력: 고민없이 연습하면 12년을 해도 실력이 늘지 않는다
9
10. 정리 & 못다한 얘기
● 고객과 시장
○ 새로운 기술에 대한 예측은 잘 맞지 않는다. 특히 R&D.
○ 고객의 니즈를 미리, 정확히 파악하긴 어렵다 (사실 고객도 잘 모른다?)
○ 지저분하게 빠르게 만든 프로토타입을 (그렇지 않은 척하면서) 잠재고객에게 보여주고
다녀야 함.
■ 프로토타입과 최종제품의 괴리를 적절히 유지, 필요하면 빠르게 채울 수 있는 능력,
빠르게 방향을 바꿀수 있는 능력은 그 회사의 실력 - 이건 그냥 키워야되는 것 같음
■ 재능마켓 moonlight
○ 내가 가진 툴에 맞는 문제를 찾지 말고, 좋은 문제를 먼저 찾자 (moloco, toss의 사례)
○ 현업에 있는 사람과 규칙을 존중하자.
○ 고객, 시장, legacy는 바보가 아님.
○ 기술적으로 하찮은 일을 하찮게 취급하지 말자.
“It is faster to make a four-inch mirror then a six-inch mirror
than to make a six-inch mirror.” -Allyn Thompson 10
11. 요약
1.
꾸준한 공부, 의식적인 훈련으로 실력을 쌓아 좋은 동료를 만나고 중요하고 좋은 문제를 같이 풀자.
2.
제품, 기술에 대한 애정과 자부심을 갖고 설계/개발하자.
빠르게 동료, 고객과 시장에 보여주면서 대응하자. 시장과 고객을 존중하면서도 리드할 수 있다는 생각을 갖자.
3.
벽에 부딪히면 충분히 고민하되 혼자서 끌어앉고 있지 말자.
좋은 동료들과 머리맞대고 의논하면, 힘을 모아서 해결하거나 , 다른 방법으로 풀수도 있다.
11
-끝