--- 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`