계절학교 여러분 안녕하세요?

구종만, jongman@gmail.com

자기 소개

시작하기 전에

  • 모든 것은 개인적 경험 및 의견 (우주적 진리가 아님!)
  • 질문 있으면 아무때나 하세요!
  • 재미 없으면 푹 자요!

오늘 할 이야기

오늘 할 이야기

  1. 외국인 로동자의 일생
  2. 즐겁게 지속적으로 성장하기

(하나만 하려 그랬는데 시간이 남길래)

외국인 로동자의 일생

외국인 로동자의 일생

이 얘기는 아님

이력

  • 2009년 DRW Trading Group (시카고)
  • 2011년 GETCO (시카고)
  • 2014년 Two Sigma Investments (뉴욕, 예정)

뭐해요?

  • High-frequency trading (HFT)
  • 주식/채권/파생선물 등등을 사고 파는 프로그램을 만들어요
  • 뭐가 중요?
    • 속도
    • 정확한 알고리즘
    • 오류 없는 프로그램

거기서 뭘 해요?

  • 퀀트
  • 개발자
  • 트레이더

그걸 왜 해요?

  • 정확하고 빠른 피드백: 재미있어요!
  • 영업이나 고객이 없어요: 자유로워요!
  • 훌륭한 인력이 회사의 경쟁력!

물론...

  • 여러분에게 트레이딩 하라고 얘기하러 온 건 아니니까 여기까지
    • 말은 안했지만 안좋은 점도 많아요

미국에서 일하는건 어때요?

  • "Software is eating the world!"
    • Airbnb, Uber, Square, Dropbox, ...
  • 한국도 그렇지만 미국은 수십개의 스타트업이 매일매일 쏟아져 나옴!
  • 이들이 전부 소프트웨어를 만들어야 하니 개발자 수요 대 폭발!

그렇게 개발자가 부족한데..

  • 좋은 개발자 찾기란 하늘의 별따기!
  • 좋은 학교에서 좋은 학점을 받고도 코딩 못하는 사람이 부지기수
    • 좀 과장이지만, FizzBuzz를 95%의 지원자가 못 푸는 현실!

FizzBuzz

  • 1부터 100까지 세면서 3의 배수에는 "Fizz"를, 5의 배수에는 "Buzz"를, 공배수에는 "FizzBuzz"를 출력한다.
  • 쉽죠?
    • "대부분의 전산학과 졸업생들은 이 코드를 못 짠다."
    • "자신이 시니어 프로그래머라고 주장하는 사람들이 이 코드를 짜는 데 10분에서 15분 걸리는 것도 보았다."

FizzBuzz

개발자 부족 대란!

  • 그러니 찾기 힘들 수밖에!
  • LinkedIn 에 연락처를 올려두면 일주일에 한번은 연락옴!
  • 일단 손에 들어온 개발자는 금지옥엽처럼!
  • 좋은 개발자는 금보다 비싸다 (이건 약간 오바)

대신에 면접은 어려움!

  • 정말 개발을 잘 할 수 있나 확실하게 검증!
    • 면접을 10명 넘는 사람과 1:1로 본다
    • 화이트보드에 프로그램 짜기
    • 알고리즘, 시스템 설계 등등..
  • 이걸로도 모자라서 이틀 면접 보고, 숙제도 풀어와야 함!

(물론 여러분은 문제없음!)

체계적인 개발 방식

  • 자기가 일하는 일을 주도적으로 선택
  • 상하 관계가 훨씬 적다
  • 성장하기 위해 관리자가 될 필요가 없다!

결과적으로 엔지니어로써의 커리어 패스가 더 많이 열려 있음 → 훌륭한 롤 모델도 많음!

자유로운 분위기

  • 자유로운 출퇴근 및 휴가
  • 노트북 들고 놀러 나가서 일해도 상관 없음
  • 오늘 좀 몸이 안 좋으면 집에서 일하기
  • 아예 리모트로 일하는 회사도 있음

자기 일만 잘 하면 됨!

할 수 있는 일들

  • 엄청 많음!
  • 서비스, 플랫폼, 운영체제, 검색엔진, 트레이딩..
    • 가능성은 무한함
  • 꼭 개발자나 전산학자가 되지 않아도 됨
    • 생물학, 물리학, 경제학, ...
    • 본인도 그 예 중의 하나!

미국에서 일할 수 있는 경로

  1. 유학을 간다
  2. 한국에서 대학을 졸업하고 미국으로
    • 비자를 지원받아 간다
    • 매년 4월에 비자를 신청하고 10월부터 일할 수 있음!

(아직 여기는 먼 얘기니까 생략)

영어 공부 많이 해야 하나요?

  • 좋은 개발자가 되려면 미국 안 가도 영어 잘 해야 함!
    • 모든 개발 문서와 최신 블로그는 영어
    • 세상 모든 개발 신기술은 다 영어로 소개됨
  • 일단 많이 쓰는게 중요!
    • 한글판 게임을 그만두고 영문판을..
    • 미드 기왕 볼거면 영문 자막으로..
    • 싸이월드 허세글도 영어로..

가장 중요한 것은

  • 재미있고 꾸준하게 컴퓨터 공부하는 것
  • 길은 엄청나게 많다! 한국에도 좋은 길이 많다!
  • 재밌고 즐겁게 살 수 있으니 걱정 말고 공부하자!

즐겁게 지속적으로 성장하기

굴곡의 개인사

  • 암울했던 고등학교 시절
  • 그 이후로 장족의 발전이 있었어요!

좋아하는 일좋은 환경에서 재미있게 하면서

좋은 결과를 얻었어요!

어떻게 그랬지?

  • 나이 먹어서 머리가 좋아졌을까? => 아니에요!
  • 운이 좋았다 => 정답! 하지만 이것만으론 부족

실전에 강했다?

비결은 "꾸준한 성장!"

  • 성장은 나이가 먹으면 먹을 수록 어려워져요!
    • 선택의 여지가 늘어나기 때문에
    • 어릴때는 선택의 여지가 없음: 부모님이 다 신경써줘요

신경써준다는게 뭘까?

  • 무엇을 해야 장기적으로 가장 좋을까?
  • 공부한다면 어떻게 해야 할까? 학원? 책? 동영상 강의?
  • 무슨 책을 볼까? 어디 학원에 다닐까?
  • 어느 속도로 진도를 나가야 할까?
  • 어느 연습 문제를 풀어야 실력이 늘까?

다시 말해

지금은

  • 다 고민해주심!
    • 부모님
    • (학교/학원/과외) 선생님
    • 계절학교 교수님
    • 조교님

지금 내가 커피샵에서 슬라이드 만드는데 옆자리에서 부모님들이 열띤 토론!

하지만

  • 대학 가면?
    • 교수님은 신경 안써줘요 (술먹느라 교수님 뵐 일이 없음!)
  • 직장에 가면?
    • 회사에서는 야근 횟수 말고는 신경 안써줌
  • 대학원 가면?
    • 좀 신경써주시죠! (하지만 교수님이 시키는대로만 하는 대학원 생활은 패망의 지름길!)

앞으로는 알아서 살아야 하는 정글!

대개 어떻게 되느냐?

  • 가이드가 없으면 비틀거리기 시작
  • 성장의 속도가 느려져요
  • "아, 내가 고등학교 때는 머리가 얼마나 쌩쌩했는데..." → 나이 탓이 아님!

스스로 꾸준히 효율적으로 성장

  • 이런 사람이 많지 않음
  • 10년 지나면 엄청나게 큰 차이가 되어요!
  • 효율적으로 하는 것도 중요
    • 분야가 구체적일 수록 가이드가 없음

잠깐: 그건 대학 간 다음 고민?

  • "지금은 다 신경써주잖아요! 걍 따라가면 안됨?" → 틀림!
  • 좋은 계획의 근간에는 컨텍스트가 있음!
    • 내가 이걸 왜 해야 하지?
    • 다른 방법보다 이게 왜 좋을까?
  • 컨텍스트를 알면 모든 것이 훨씬 재밌어요

예: 본인

  • 원래 수학 꼴통 (근의 공식도 맨날 까먹음!)
    • "컴퓨터 하면 어차피 필요도 없는데 뭐 흥" → 틀림!
  • 나중에 기계학습 공부하다 보니 전부 수학!
    • 수업 다 제끼고 몇년후 혼자 미적분 선대 공부
    • 아니.. 이게 이렇게 재밌었나?

(물론 수능공부할때 내가 이걸 왜 해야 하지? 고민해서 좋단 보장은 못함! -_-;)

대원칙: 끊임없이 고민하기

  • 내가 뭘 하고 싶지?
  • 그걸 잘 하려면 어떻게 해야 할까?
    • 구체적으로 어떤 선택지가 있고 그들의 장단점은?
    • 내가 들여야 하는 노력 대비 성과는 어떨까?
  • 나의 한정된 자원(집중력, 돈, 시간)을 어디에 써야 제일 잘 쓸까? → 여러분 이런거 잘풀죠!

퀀트 개발자가 되고 싶었던 본인

  • 아는게 너무 없어요! (대학교때 ACM 하느라 공부를 안함!)
  • 중요한 주제를 트랙별로 나누고 우선순위를 정함
  • 각 주제별로 시간을 배분하고 공부할 책을 찾음
  • 퇴근하고 남는 시간을 쪼개 조금씩 공부하기
  • 시간 관리 방법론 도입!

계획 세우면 다 하나?

그럴리가

  • 열 개 계획 세우면 두 개도 안 한다!
  • 하지만 태반의 사람들은 한 개도 안 함
  • 100% 안 하더라도 계획은 중요하다!
    • 계획이 있어야 내가 얼만큼 했는지 파악하고 실감
    • 계획이 큰 그림을 이해할 수 있는 기반이 된다!

뭘 해야죠? → 지평을 넓히세요 !

  • 개발자 커뮤니티 활동
  • 컨퍼런스 참가
  • 온라인 코스 듣기
  • 다양한 전산학의 분야를 찔러봐요
  • 다양한 개발 해보기
  • 다양한 프로그래밍 언어, 패러다임, 프레임워크!

계획 세우기

  • 구체적일 수록 좋음
    • 고민의 단계와 수행의 단계를 나눈다!
  • 좋은 계획을 세우려면 큰 그림을 이해하고 고민해야 함
    • 부가적인 효과!

계획을 수행할때는 어떻게?

  • 완벽할 필요는 없다
  • 처음엔 어설퍼도 결과를 내는 것에 주력하자
    • 모든 주제를 완벽하게 이해하기 → 힘듬
    • 생각한 모든 기능을 갖춘 프로그램 만들기 → 힘듬
  • 엉성하게라도 완성하면 업적치가 쌓인다!
    • "내가 아직 부족하지만 원래 계획에서 이정도는 했지"!

엉성한 완성이 완벽한 미완성보다 낫다!

회고의 중요성

  • 회고가 가장 중요한 피드백 → 꼭 회고를 하자!
  • 주기적으로 (1주, 1달, ..) 계획의 실행 상황을 재점검!
  • 계획의 실행 상황에 따라 계획을 재조정!

이렇게 살아보니

  • 열심히 할 수록 재미있다!
  • 와우에서 레벨 올리고 템 맞추는 기분으로 공부하게 된다

여러분은 아주 좋은 위치에 있어요

  • 이미 훌륭한 자질의 소유자들!
  • 늦지도 않았음
  • 좋은 길로만 집중하면 훌륭한 전산학자 혹은 개발자가 될 수 있다고 장담!
  • 재미있게 열심히 공부하세요!

감사합니다 :)