Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Startup Engineering:
“What they don’t teach you in school”
http://lab80.co Michael Shilman Junhee Kim Woojin Kim
This talk...
Junhee Kim
Data Engineer
Finance BA Yonsei, 2013
Self-Taught Developer
Woojin Kim
App Engineer
NHN Next, 2015
Not CS
Gradu...
100+ Applications
30+ Interviews
10+ Test Projects
2 Hires
Junhee Kim
Data Engineer
Finance BA Yonsei, 2013
Self-Taught De...
Design and share
Investment portfolios
http://hellomoney.co
http://hellomoney.co
Before we start, a quick self-introductio...
#1 Investing
information service
Reddit’s official
portfolio tool
http://hellomoney.co
User love every day
email, reddit, ...
TeamTeam
http://hellomoney.co
We’re a small team and we have fun working together.
Dropouts!
What do these “startup engineers”
have in common?
Back to the talk. Any doubts that startup engineering is diffe...
Startup
Success
Factors
Computer
Science
What you’re studying
Many startup success factors, such as sales and marketing, p...
Startup
Success
Factors
Computer
Science
Startup
Engineering
Our Focus Today
But even engineering aspects of startups may ...
1.App Engineering
2.Data Engineering
3.Other Engineering
The talk is anecdotal. Woojin will cover app engineering, Junhee ...
Java isn’t cool
You know what’s cool?
The Social Network (2010)
JavaScript
http://githut.info
JavaScript is Trendy
We can do EVERYTHING with JavaScript
Client Side
- Website
- Mobile Application(IOS, Android)
- Desktop Application(OS Ind...
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
JavaScript is FAST
https://www.meteor.com이렇게 쿨한 자바스크립트를, 우리는 전방위적으로 사용함
App engineer is the Silk Route
https://en.wikipedia.org/wiki/Silk_Road
So, Communication is the key
Data Engineer
Designer
Product Manager
App Engineer
회사 여러사람들과 소통이 많이 필요함!
Design
Data
Discussion & Estimation
http://hellomoney.co/discover
Chicken
Think of User
유저와 맞닿아 있으므로 항상 엄마보다 먼저 유저를 생각해야 함!
Build Refinement User Feedback
& Analytics
It ain’t done, till it’s done
그래서 feedback loop가 중요한 거임!
“Press Enter”는 처음엔 없었다.
1.App Engineering
2.Data Engineering
3.Other Engineering
Data
sources
Crawling
Cleaning
Analysis
App User
데이터는 서비스 개발에서 생각보다 많은 비중을 차지합니다. 뒤에 보이는 헬로머니 실제 사용화면만 봐도 그렇지요. 네. 다 제가 관리...
Thing #1
80/20 rule
파레토 법칙은 서비스 개발에도 적용됩니다. 다 끝난것 같아도 끝이 아닙니다. 거의 다 되었다고 생각이 들더라도,
지금까지 쏟은 노력의 몇배를 들여야 100% 완성이 되는 경우가 허다합...
Roughly 80% of the
outcome can be done
with 20% of the work
While 80% of the
work is needed to fill
the missing 20%
People call this 80%
a prototype
People call this 100%
a product
It took only 2 days to
enlist about 5,000 US
stocks to Hellomoney
It took another month
to debug inaccurate
returns of 300...
Thing #2
Rewrite Often
실제 서비스 개발을 하다 보면 생각보다 많은 시간들을 리팩터링에 할애하게 됩니다.
유저들의 피드백을 통해 제품에 대한 이해가 넓어지고, 몰랐던 사실들을 알게 되기 때문에, 이를 ...
This is How we started in 2013
- All static data
- Okay for prototypes
- Not enough for products
Price History CrawlerMeta...
As our needs for data grew,
We immediately added Data Validation
Data Validation
if available_history > 3yrs:
assert retur...
After 8 months of struggles,
I implemented daily price update
Price History Crawler
Data ValidationDaily Price Crawler
Met...
and kept upgrading the data pipeline...
Data ValidationDaily Price Crawler
Returns Fixing Tool IPO Crawler
Price History C...
One day...
Data ValidationDaily Price Crawler
Returns Fixing Tool IPO Crawler
Users: We Want Canadian Stocks!
Price Histor...
Thankfully, I was ready for internationalization
Data ValidationDaily Price Crawler
Returns Fixing Tool IPO Crawler
Intern...
If you don’t refactor,
you’re doing it wrong.
Thing #3
Data is fragile
제대로 신경쓰고 테스트하지 않으면, 데이터는 곧잘 엉망이 됩니다.
미국의 펀드회사 뱅가드가 관리하는 3조 달러는 한화로 3천조원이 넘습니다. 참고로 국민연금이 지금 500조원을 굴립니다. 엄청난 규모지요.
?!
그런 뱅가드에서 이런 터무니 없는 실수를 했습니다. 구글의 주식분할을 착각하여 주가 폭락으로 알람을 뿌린 거죠.
모닝스타는 오로지 금융 정보를 팔아서 돈을 버는 회사입니다. 4천여명의 사람들이 일하고 있음.
그러나 최근 사모펀드에 매각된 Riverbed라는 회사의 주식분할을 제대로 처리하지 못해서
뱅가드와 마찬가지로 주식이 마치 폭락한 것으로 표현해버렸습니다.
헬로머니는 이 부분에 대한 data validation을 갖추고 있기 때문에 Google과 Riverbed모두 제대로 된 데이터를 보여주고 있었습니다.
오른쪽 아래의 그래프에서 밑에 진회색으로 색칠된 부분이 모닝스타의 ...
Data Validation
이게 어떻게 가능했을까요? 데이터 밸리데이션 덕분입니다.
데이터 밸리데이션은 데이터에 대한 유닛 테스트 정도로 이해하시면 될 것 같습니다.
데이터의 정합성에 대한 기준과 가정들을 쿼리로 표현해서 테스트화 한 것입니다.
Thing #4
Automate!
다루는 데이터가 많아지면, 당연히 관련 프로세스를 최대한 자동화해야 합니다. 그렇지 않으면, 더 많은 데이터를 다룰수 없습니다.
Long feedback loop sucks
Long feedback loop sucks
Long feedback loop sucks
Long feedback loop sucks
Long feedback loop sucks
Long feedback loop sucks
대규모의 데이터를 한 덩어리로 다
루면 삶이 고통스러워집니다. 디버
깅 하나 한 것에 대한 피드백을 4시
간 걸려서 받는다고 상상해보세요.
잠 못잡니다.
Breadth and Depth
Find/Resolve
Exceptions
Lean/Fast Test
on
Data pipeline
그래서 breadth and depth의 개념으로 접근하는 것이 중요합니다. data ...
Breadth and Depth
Lean/Fast Test
on
Data pipeline
대규모의 데이터들을 관리하는 Data validation의 포인트는 전체 데이터 셋에 대해 적절한 규칙을 찾아 적용하는 것입니다....
Fix from my phone, teammates can fix too!
Automation!
종종 data validation이 잡아내지 못한 부분을 사람이 찾아낼 때가 있는데, 그때는 슬랙을 통해 바로 디버깅과 업...
80/20 rule
Rewrite often
Data is fragile
Automate!
Well known Fact:
Garbage In, garbage out
Well known Fact:
Garbage In, garbage out
Scary Fact:
Data is broken mostly all the time
1.App Engineering
2.Data Engineering
3.Other Engineering
Finally I’ll cover how we organize our engineering projects at La...
We break development into cycles
1-3 Features
per Person
Live
Product
2-Week
Development
Cycle
Like many teams, we break o...
Building is only part of the process
??? Build ??? ??? ??? ???
The rest of the process, they don’t teach you in school. Ho...
We code less than you might expect!!
??? ??? ????????? Build
~60% of the time
???
??? ??? ?????? ?????? Build
What the heck do we
do the rest of the time?!
???
??? ??? ?????? ???Plan Build
We usually plan for the first day or two of a sprint, which involves picking the features to ...
Build
How long will it
take to build?
How much will it
benefit the
service?
??? ??? ?????? ???
Esti-
mate
???
We rank feat...
Build
How exactly should
it behave?
How are we going
to build it?
Esti-
mate
Spec ??? ??? ?????? ???
After we’ve selected ...
Ship
Anal
yze
YogaRefine TestPlan Build
3 days
1-3 Features
End-to-end
80%
??? ??? ???Refine ???
1 day
Refine
shippable
fe...
Ship ??? ???Refine TestPlan Build
Testing and Deployment are two
absolutely crucial skills. Strangely
they receive almost ...
Ship
Anal
yze
???Refine TestPlan Build
After we deploy, we look at how users behavior on the site changes. Often times we ...
Ship
Anal
yze
YogaRefine TestPlan Build
Shipping can be stressful! At the end of a sprint, we do yoga to relax.
Thank You!
PS - We’re hiring! Come hack with us
in Seoul and San Francisco
http://lab80.co
michael@lab80.co
Sentiment Analysis
B2B, Failed, 2007
Sentiment Analysis
B2C, Acquired 2010
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
Upcoming SlideShare
Loading in …5
×

학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)

2,038 views

Published on

학교에서는 안 가르쳐준다! 알아서 배우자. 진짜야.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)

  1. 1. Startup Engineering: “What they don’t teach you in school” http://lab80.co Michael Shilman Junhee Kim Woojin Kim This talk covers some aspects of engineering in a software startup that are not covered in a normal Computer Science (CS) curriculum.
  2. 2. Junhee Kim Data Engineer Finance BA Yonsei, 2013 Self-Taught Developer Woojin Kim App Engineer NHN Next, 2015 Not CS Graduates I’m happy to be co-presenting with my excellent colleagues Junhee and Woojin, neither of whom were CS majors.
  3. 3. 100+ Applications 30+ Interviews 10+ Test Projects 2 Hires Junhee Kim Data Engineer Finance BA Yonsei, 2013 Self-Taught Developer Woojin Kim App Engineer NHN Next, 2015 In fact, Junhee and Woojin were the best candidates of over 100 applicants, most of whom were CS majors.
  4. 4. Design and share Investment portfolios http://hellomoney.co http://hellomoney.co Before we start, a quick self-introduction. We build Hellomoney, a web app for online investors to design and share their investment portfolios.
  5. 5. #1 Investing information service Reddit’s official portfolio tool http://hellomoney.co User love every day email, reddit, twitter Hellomoney is a new service that’s making headway with online investors.
  6. 6. TeamTeam http://hellomoney.co We’re a small team and we have fun working together.
  7. 7. Dropouts! What do these “startup engineers” have in common? Back to the talk. Any doubts that startup engineering is different from what’s taught in the CS curriculum?
  8. 8. Startup Success Factors Computer Science What you’re studying Many startup success factors, such as sales and marketing, partnerships, luck, etc. have little to do with engineering.
  9. 9. Startup Success Factors Computer Science Startup Engineering Our Focus Today But even engineering aspects of startups may only have limited overlap with a typical CS curriculum.
  10. 10. 1.App Engineering 2.Data Engineering 3.Other Engineering The talk is anecdotal. Woojin will cover app engineering, Junhee will data engineering, and I’ll talk about project structure.
  11. 11. Java isn’t cool You know what’s cool? The Social Network (2010)
  12. 12. JavaScript
  13. 13. http://githut.info JavaScript is Trendy
  14. 14. We can do EVERYTHING with JavaScript Client Side - Website - Mobile Application(IOS, Android) - Desktop Application(OS Independent) Server Side - Web Server(Node.js) - Database Also, WebRTC(Real Time Communication), Shell Script, Arduino, Kinect, ...
  15. 15. https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/ JavaScript is FAST
  16. 16. https://www.meteor.com이렇게 쿨한 자바스크립트를, 우리는 전방위적으로 사용함
  17. 17. App engineer is the Silk Route https://en.wikipedia.org/wiki/Silk_Road
  18. 18. So, Communication is the key Data Engineer Designer Product Manager App Engineer 회사 여러사람들과 소통이 많이 필요함!
  19. 19. Design Data Discussion & Estimation http://hellomoney.co/discover
  20. 20. Chicken Think of User 유저와 맞닿아 있으므로 항상 엄마보다 먼저 유저를 생각해야 함!
  21. 21. Build Refinement User Feedback & Analytics It ain’t done, till it’s done 그래서 feedback loop가 중요한 거임!
  22. 22. “Press Enter”는 처음엔 없었다.
  23. 23. 1.App Engineering 2.Data Engineering 3.Other Engineering
  24. 24. Data sources Crawling Cleaning Analysis App User 데이터는 서비스 개발에서 생각보다 많은 비중을 차지합니다. 뒤에 보이는 헬로머니 실제 사용화면만 봐도 그렇지요. 네. 다 제가 관리합니다.
  25. 25. Thing #1 80/20 rule 파레토 법칙은 서비스 개발에도 적용됩니다. 다 끝난것 같아도 끝이 아닙니다. 거의 다 되었다고 생각이 들더라도, 지금까지 쏟은 노력의 몇배를 들여야 100% 완성이 되는 경우가 허다합니다.
  26. 26. Roughly 80% of the outcome can be done with 20% of the work While 80% of the work is needed to fill the missing 20%
  27. 27. People call this 80% a prototype People call this 100% a product
  28. 28. It took only 2 days to enlist about 5,000 US stocks to Hellomoney It took another month to debug inaccurate returns of 300 stocks
  29. 29. Thing #2 Rewrite Often 실제 서비스 개발을 하다 보면 생각보다 많은 시간들을 리팩터링에 할애하게 됩니다. 유저들의 피드백을 통해 제품에 대한 이해가 넓어지고, 몰랐던 사실들을 알게 되기 때문에, 이를 기존의 시스템에 반영해야 하기 때문입니다.
  30. 30. This is How we started in 2013 - All static data - Okay for prototypes - Not enough for products Price History CrawlerMetadata Crawlers 본격적으로 포트폴리오 분석 툴을 만들기 위한 프로토타이핑 과정에서, 데이터가 모두 갖춰져 있지만 주기적으로 업데이트되지는 않는 시스템을 만들었습니다. 예를 들면, 헬로머니가 매일 정보가 바뀌지 않고 2013년 1월 1일에 머물러 있는 것이죠.
  31. 31. As our needs for data grew, We immediately added Data Validation Data Validation if available_history > 3yrs: assert returns_3yr is not None Price History CrawlerMetadata Crawlers 유저 인터뷰를 통한 반복 개선을 거치면서, 다루게 되는 데이터의 양은 점점 늘어갔고, 아예 데이터를 점검하는 부분을 별개의 툴로 만들어 시스템에 포함시켰습 니다. 점검하는 내용은 생각보다 단순합니다. 예를 들어, “주식이 생긴지 3년이 넘었다면 3년치 수익률도 데이터베이스에 있어야 한다” 정도가 있습니다.
  32. 32. After 8 months of struggles, I implemented daily price update Price History Crawler Data ValidationDaily Price Crawler Metadata Crawlers - Dynamic data - Graduating Prototype 일일 주가를 업데이트하는 기능을 시스템에 추가하면서, 베타 서비스를 시작할 수 있게 되었습니다. 이제 하루에 한번씩 수만 개의 주식 정보가 업데이트되면서, 데이터 점검에도 더 많은 주의가 필요하게 되었습니다.
  33. 33. and kept upgrading the data pipeline... Data ValidationDaily Price Crawler Returns Fixing Tool IPO Crawler Price History CrawlerMetadata Crawlers 실제 유저들의 요청에 맞추어, 신규 주식을 자동으로 데이터베이스에 추가하고, 수익률을 자동으로 점검하고 고치는 툴등을 계속 시스템에 추가하게 되었습니다.
  34. 34. One day... Data ValidationDaily Price Crawler Returns Fixing Tool IPO Crawler Users: We Want Canadian Stocks! Price History CrawlerMetadata Crawlers
  35. 35. Thankfully, I was ready for internationalization Data ValidationDaily Price Crawler Returns Fixing Tool IPO Crawler International Price History CrawlerMetadata Crawlers 그러던 어느날, 캐나다에 사는 유저들이 “캐나다 주식도 넣어달라!”는 요청을 해왔습니다. 결국 이 모든 시스템이 “국가별 주식시장"에 대한 개념을 가지도록 코드를 다시 쓰게 되었습니다.
  36. 36. If you don’t refactor, you’re doing it wrong.
  37. 37. Thing #3 Data is fragile 제대로 신경쓰고 테스트하지 않으면, 데이터는 곧잘 엉망이 됩니다.
  38. 38. 미국의 펀드회사 뱅가드가 관리하는 3조 달러는 한화로 3천조원이 넘습니다. 참고로 국민연금이 지금 500조원을 굴립니다. 엄청난 규모지요.
  39. 39. ?! 그런 뱅가드에서 이런 터무니 없는 실수를 했습니다. 구글의 주식분할을 착각하여 주가 폭락으로 알람을 뿌린 거죠.
  40. 40. 모닝스타는 오로지 금융 정보를 팔아서 돈을 버는 회사입니다. 4천여명의 사람들이 일하고 있음.
  41. 41. 그러나 최근 사모펀드에 매각된 Riverbed라는 회사의 주식분할을 제대로 처리하지 못해서 뱅가드와 마찬가지로 주식이 마치 폭락한 것으로 표현해버렸습니다.
  42. 42. 헬로머니는 이 부분에 대한 data validation을 갖추고 있기 때문에 Google과 Riverbed모두 제대로 된 데이터를 보여주고 있었습니다. 오른쪽 아래의 그래프에서 밑에 진회색으로 색칠된 부분이 모닝스타의 그래프고, 그 위의 실선 그래프가 헬로머니의 그래프임. 모닝스타 그래프에서 자주색 선으로 표시한 부분을 잘 보면 그 시점 이후로 주가가 폭락한 것처럼 그래프가 그려져 있는 것을 볼 수 있습니다.
  43. 43. Data Validation 이게 어떻게 가능했을까요? 데이터 밸리데이션 덕분입니다.
  44. 44. 데이터 밸리데이션은 데이터에 대한 유닛 테스트 정도로 이해하시면 될 것 같습니다. 데이터의 정합성에 대한 기준과 가정들을 쿼리로 표현해서 테스트화 한 것입니다.
  45. 45. Thing #4 Automate! 다루는 데이터가 많아지면, 당연히 관련 프로세스를 최대한 자동화해야 합니다. 그렇지 않으면, 더 많은 데이터를 다룰수 없습니다.
  46. 46. Long feedback loop sucks
  47. 47. Long feedback loop sucks
  48. 48. Long feedback loop sucks
  49. 49. Long feedback loop sucks
  50. 50. Long feedback loop sucks
  51. 51. Long feedback loop sucks 대규모의 데이터를 한 덩어리로 다 루면 삶이 고통스러워집니다. 디버 깅 하나 한 것에 대한 피드백을 4시 간 걸려서 받는다고 상상해보세요. 잠 못잡니다.
  52. 52. Breadth and Depth Find/Resolve Exceptions Lean/Fast Test on Data pipeline 그래서 breadth and depth의 개념으로 접근하는 것이 중요합니다. data validation으로 전체 데이터를 점검하고 잘못된 부분을 찾아내는 것과, 특정 데이터에 대해 end-to-end로 테스트하고 디버깅하는 것이 breadth와 depth의 큰 축을 이룹니다.
  53. 53. Breadth and Depth Lean/Fast Test on Data pipeline 대규모의 데이터들을 관리하는 Data validation의 포인트는 전체 데이터 셋에 대해 적절한 규칙을 찾아 적용하는 것입니다. 그 중 테스트를 통과하지 못한 증권에 대해서만 end-to-end로 디버깅과 업데이트를 실행해서 전체 프로세스의 시간을 단축합니다.
  54. 54. Fix from my phone, teammates can fix too! Automation! 종종 data validation이 잡아내지 못한 부분을 사람이 찾아낼 때가 있는데, 그때는 슬랙을 통해 바로 디버깅과 업데이트를 실행할 수 있도록 시스템 을 구축했습니다. 결과적으로, 과거 4시간이 걸리던 디버깅이 이제는 5분으로 단축되었습니다!
  55. 55. 80/20 rule Rewrite often Data is fragile Automate!
  56. 56. Well known Fact: Garbage In, garbage out
  57. 57. Well known Fact: Garbage In, garbage out Scary Fact: Data is broken mostly all the time
  58. 58. 1.App Engineering 2.Data Engineering 3.Other Engineering Finally I’ll cover how we organize our engineering projects at Lab80.
  59. 59. We break development into cycles 1-3 Features per Person Live Product 2-Week Development Cycle Like many teams, we break our development into short cycles, and we ship at the end of each cycle. Doing this well requires a lot of practice.
  60. 60. Building is only part of the process ??? Build ??? ??? ??? ??? The rest of the process, they don’t teach you in school. How much of the process do you think is about building features?
  61. 61. We code less than you might expect!! ??? ??? ????????? Build ~60% of the time ???
  62. 62. ??? ??? ?????? ?????? Build What the heck do we do the rest of the time?! ???
  63. 63. ??? ??? ?????? ???Plan Build We usually plan for the first day or two of a sprint, which involves picking the features to build and figuring out the specifics
  64. 64. Build How long will it take to build? How much will it benefit the service? ??? ??? ?????? ??? Esti- mate ??? We rank features by “development cost vs. user benefit”. In general, we try to pick the easiest things that will bring the most benefit.
  65. 65. Build How exactly should it behave? How are we going to build it? Esti- mate Spec ??? ??? ?????? ??? After we’ve selected a set of features to ship, we spec it out in some detail.
  66. 66. Ship Anal yze YogaRefine TestPlan Build 3 days 1-3 Features End-to-end 80% ??? ??? ???Refine ??? 1 day Refine shippable features In fact, Junhee and Woojin were the best candidates of over 100 applicants, most of whom were CS majors.
  67. 67. Ship ??? ???Refine TestPlan Build Testing and Deployment are two absolutely crucial skills. Strangely they receive almost no attention in school?!! After the features are ready, we test them as a team and deploy them once they work properly.
  68. 68. Ship Anal yze ???Refine TestPlan Build After we deploy, we look at how users behavior on the site changes. Often times we find unexpected consequences of our features!
  69. 69. Ship Anal yze YogaRefine TestPlan Build Shipping can be stressful! At the end of a sprint, we do yoga to relax.
  70. 70. Thank You! PS - We’re hiring! Come hack with us in Seoul and San Francisco http://lab80.co michael@lab80.co
  71. 71. Sentiment Analysis B2B, Failed, 2007 Sentiment Analysis B2C, Acquired 2010

×