---
# System prepended metadata

title: 克服恐懼 追求夢想 Instagram iOS 4年經驗分享
tags: [iPlayground2020]

---

---
title: "克服恐懼 追求夢想 Instagram iOS 4年經驗分享"
tags: "iPlayground2020"
---

# 克服恐懼 追求夢想 Instagram iOS 4年經驗分享

{%hackmd vUibBZG0ToSRiPuj0wOKvg %}

> 請從這裡開始

# 克服恐懼 追求夢想 Instagram iOS 4年經驗分享
Jacky

## Instagram
整個 App 都是用 IGListKit 做的，讓 collectionView 更有效率

Data -> Adapter -> Section Controller -> Cell

Section Controller 不用依賴在 viewController 上，任何的地方都可以使用

## Working with large codebased
- 超過 100 個 iOS engineers
- 需要清楚 code 的 ownership
- Alert system：當有人動自己的 code 時會提醒
- 設計出不容易改壞的 code
- Monorepo

## Monorepo
IG/FBMessenger/WhatsApp... 30+ App iOS/Android/Server 都在同一個 Repo
- 容易找 code
- 很多 framework 可以 share module
- 整個公司統一的開發環境
- Dependancy 需要特別注意

## Testing
講者在 FB 四年沒寫什麼 testing（難怪常常爆炸？
“Move fast and break things” 如果東西沒有壞，表示迭代的不夠快

## Instagram vs Facebook
- Instagram is more simple / product driven
- Facebook is more complex / engineering driven

## US vs Asia
- Transparency：很多時候亞洲公司在開發東西，並不能了解其背後的原因，不知為何而做，在國外通常都會拿出來一起討論，有參與感
- Comunication Style：外國人習慣邊講邊想，比較勇於表達自我，東方人覺得要自己想清楚再提出來，常常錯過機會。國外溝通一般也比較直接。
- 重視 Feedback：feedback is a gift。

## Pros and Cons at Big Company
- Pros
	- Greate perks
	- More user base/ impact/ AB testing
	- Scale
- Cons
	- Old technology, more disconnected with developer world
	- Less freedom/ growths in different

## Position
IC3 - Junior Software Engineer
IC4 - Software Engineer
IC5 - Senior Software Engineer
M0

## Performance
- Impact
- Better Engineering：Code 寫的如何
- Direction：做 planning，影響 team
- People：招募或是帶新人

## Lesson: Kill Your Darlings
寫作/寫程式，最難的是砍自己寫的東西，要去蕪存菁，要懂得為公司犧牲自己的成果
- A failed project is only a failure if you didn’t learn form it
- Detach the result from the process
- Fall in love with the problem, not your solution

## Lesson: Occam’s Razor/ Simplicity
做的假設越多，越容易失敗
- The simplest solution is usually the right one
當我們遇到很複雜的事情/程式碼/邏輯時，應該退一步想，是否方向錯了，是否有更簡單的解法

- Product
	- Do the simple thing first
	- Remove extra features

Facebook/ Instagram 都有 team 專門砍 feature，找出沒人用的 feature把他砍掉。

## Lesson: The importance Soft Skills
- Facebook engineers = engineer + PM
- Best engineers = strong technically, very strong communications
- Brainstorm a feature, get buy in, plan road map, get resources, execute test, present, explain results, convince team/ other team the ship
- “Easier done than say” 做出 Demo 給 design team 看
- Writing 寫作寫文件

## Lesson: Extreme Ownership
- DRI: Directly Responsible Individual
- Things that happen to you are not always your fault but are always your full responsibility
	- Your code
	- Your teammates
	- Your manager
- Take extreme ownership over your code base, your project, your career, your mindfulness, and your relationship....

## Lesson: Importance of Mentorship
- I started my career thanks to mentorship from KKBOX
- the most rewarding thing is not focusing on what you’ve empowered others to be able to do, that’s the best way to increase....

## Lesson: Be Bold
“What would you do if you weren’t afraid”
跳出舒適圈

###### tags:`iPlayground2020`