Hello, SDS !

I'm from Studio XID

  • https://www.protopie.io/
  • 프로토타이핑 툴을 만들어 판매
    • 스케치 말고 프레이머
  • 직원 12명의 작은 스타트업
  • 대부분 구글, 네이버 출신
  • 재택 근무를 권장
    • 실제로 춘천과 제주도 거주
  • 개발자가 7명
    • 5명이 15년차 이상

Mark

  • 저는 `이웅재` 라고 합니다.
  • 8년차 소프트웨어 엔지니어
    • iPhone 개발로 입문
    • Android 개발 (당시에는 1 + 1)
    • 웹개발
    • 컴퓨터 비전 소프트웨어 엔지니어
    • Electron, TypeScript 로 데스크탑 앱 개발
  • 타입스크립트 한국 유저 그룹 오거나이저
  • 일렉트론 한국 유저 그룹 운영자
  • Seoul.JS 오거나이저
    • https://seoul.js.org/
  • AWS Certificate

흔한 스타트업 개발자의 하루 (1) - 빛

  • 10시 30분에 구글 행아웃을 통한 스탠드업 미팅
    • 거의 10시 23분 정도에 일어남
    • Jira 를 통해 어제 한일과 오늘 할일 정리하고 브리핑
  • 컴퓨타 함
    • 회의가 있으면 구글 행아웃을 통해 회의 참여
  • 12시 30분이 사무실 근무자들 식사 시간
    • 재택 근무자는 똑같은 시간에 밥을 먹지 않음
    • 그냥 컴퓨타 할때가 많음
  • 배고파지면 밥을 먹고, 아니면 컴퓨타 혹은 회의
  • 사무실 근무자는 대개 6 ~ 7시 퇴근
    • 재택 근무자도 컴퓨타 그만!

흔한 스타트업 개발자의 도구

  • 면대면으로 하지 않는 대신 도구의 활용이 무척 중요
    • 슬랙
      • 급하거나 업무시간에만 노티가 가도록 설정 및 배려
      • 아직도 전화번호가...
    • 행아웃
      • 타자 치기 답답한 그 순간 `행아웃 하실래요 ?`
      • 스펙 논의, 코드 리뷰
    • Jira
      • 태스크를 최대한 잘게 쪼개야 일한 티가 난다.
    • Upsource
      • 코드 리뷰 툴
      • 모든 코드는 2인 이상 확인한다는 룰
      • 다른 엔지니어에게 리뷰를 요청하고, `Accept` 받음

흔한 스타트업 개발자의 하루 (2) - 그늘

  • 사무실은 퇴근을 했지만, 재택 근무자는 먼가 허전
  • 다시 컴퓨타
    • 하루를 보람차게 보내지 않은건 도구를 통해 티가 남
    • 집에서 야근을 하게 됨
    • 아내한테 쿠사리
    • 그래도 일잘하는 멋진 동료가 되고 싶어 새벽에도 컴퓨타
  • 결국 늦게 잠듬
    • 그래서 아침에 늦게 일어남.
  • 되풀이되다가 번아웃...

TypeScript

  • 실제 프로덕트에 사용한지 벌써 1년
    • 이전에는 es6 (babel) 사용
  • 현재 모든 사내 프로젝트에 타입스크립트 사용
    • Electron + TypeScript
    • Node.js + Express + TypeScript
    • Next.js + TypeScript + MobX / Clojure (?)
    • AWS Lambda + TypeScript
  • 계속 열일하는 타입스크립트
    • 2.0 나오면서 도입
    • 현재 2.4

필요성 - 늘어나는 파일들...

  • 데스크톱 앱을 만들면서 늘어는 파일의 수
    • 현재 src 폴더에 546개
    • 사람이 관리 가능한 파일의 수가 아님
  • 어제 작성한 코드를 오늘 까먹...
  • 변경이 잦은 요구 사항
  • 불확실한 프로젝트

타입스크립트가 해결 가능한가요

TypeScript = Language

  • 타입스크립트는 ' 프로그래밍 언어 ' 입니다.
  • 타입스크립트는 ' Compiled Language ' 입니다.
    • 전통적인 Compiled Language 와는 다른 점이 많습니다.
    • 그래서 ' Transpile ' 이라는 용어를 사용하기도 합니다.
  • 자바스크립트는 ' Interpreted Language ' 입니다.

Compiled

  • 컴파일이 필요 O
  • 컴파일러가 필요 O
  • 컴파일하는 시점 O
    • => 컴파일 타임
  • 컴파일된 결과물을 실행
  • 컴파일된 결과물을 실행하는 시점

Interpreted

  • 컴파일이 필요 X 
  • 컴파일러가 필요 X
  • 컴파일하는 시점 X
  • 코드 자체를 실행
  • 코드를 실행하는 시점 o
    • = 런타임

정적 타입 언어 VS 동적 타입 언어

컴파일러

Superset

Type 시스템이 Key 입니다.

JavaScript 는 런타임에 에러를 뱉습니다.

TDD 와 TypeScript

  • 그래서 Test 드리븐 개발을 통해 런타임을 돌려보며, 코드를 확인합니다.
  • 테스트 커버리지를 높이는 이유
  • 타입스크립트는 테스트와는 관련이 없습니다.
    • 타입스크립트가 바라보는 곳과 테스트가 주시하는 곳은 다릅니다.
    • 타입스크립트는 테스트가 돌기 전에 알려주는 곳입니다.
  • 실수 방지에 뛰어난 역할을 합니다.
    • A 라는 클래스를 B 와 C 에서 사용하는데, B 작업 중 A 를 수정하면, C 도 수정해야 한다고 알려주는 역할
      • 사실 이거 하나만으로도 굉장히 훌륭하다고 할수있습니다.

TypeScript 도입 장애물

타입스크립트에 대한 레퍼런스의 부족

  • 완벽한 편견입니다.
    • 2.0 이후 부터가 진짜입니다.
  • 구글도 공식 언어로 지정했습니다.
  • 검색해보세요.
    • 예전 같지 않습니다.
  • 기본적으로 자바스크립트로 가능한 모든 개발을 타입스크립트로 할수있습니다.
  • 이제는 type definition 파일도 번들로 제공합니다.
    • redux
    • mobx
    • moment
    • electron

동료 개발자들이 호응해 주지 않아서

  • 끊임 없는 설득
  • 밤사이에 바꿔놓기
  • 그 팀을 떠나세요 !

레거시 코드가 자바스크립트여서

  • 가장 어려운 케이스인것 같습니다.
  • 기존 레거시가 es6 (babel) 이라면, 자연스럽게 단계적으로 옮겨가는 것을 추천합니다.
  • 아니라면, 
    • 다시 프로젝트를 처음부터...

타입스크립트 언어 학습에 대한 부담

  • 타입스크립트 한국 유저 그룹
    • https://www.facebook.com/groups/TSKorea
    • https://ts-korea.now.sh/
  • 세미나 동영상
    • https://www.inflearn.com/

현업 도입시 생기는 시간(기타)에 대한 리스크 부담

  • 그것은 학습을 통해

컴파일 환경에 대한 거부감

  • 여러분이 리액트를 하신다면, 여러분은 이미 컴파일을 하고 있는 겁니다.
  • 요즘 자바스크립트에서 누가 컴파일 안하나요?
  • 자신을 속이고 있는 겁니다.
  • 어차피 컴파일할거면 제일 좋은걸 쓰자구요!

Hello, SDS

By Woongjae Lee

Hello, SDS

Samsung SDS 런치 세미나 발표자료

  • 1,078