既然都打算勸世了,那就勸到底吧
前面有人懷疑我的資歷,我大概就說我先前任職的是前面列出來幾間公司之一
層級對照起來大概算在Amazon L6-L7吧
曾經在1A2B全球SVP團隊面前present過我的專案(某企業解決方案)
也和FAANG/BATTMD的幾個CXO介紹交流過
....這經歷行了吧(捂臉
到目前為止帶過的團隊人數確實也不太多,<20人
面試經歷人數也還好,150+
先前首次在公司擔任team lead時,曾經內推大批台灣人進來(30+)
不過結果非常糟糕。總歸其因只有一點: 互聯網相關的專案經驗和技術深度不足
我自己分析了一下這些人的經歷,當然不外乎是
1. 非互聯網產業IT人員 (包含傳產、金融業、電信業、甚至IC產業)
2. 互聯網產業。包含Line, Yahoo, 三竹等台灣知名的公司... 以及一群新創
由於1.的職涯路徑性質比較不一樣,就不在後續的討論範圍內了
也確實台灣非常多的IT人員是在這類公司就職的,技術風氣真的不佳也是實話
沒有把1.在第一篇文章中排除是我的問題,我和大家道歉
所以接下來的討論可以把重心放在「台灣的互聯網公司能給的經歷和磨練」上了
在台灣的互聯網公司(或比較專注在IT研發上的公司)基本可分為幾層級:
1. top tier的: FAANG/BATTMD (如果有RD office的話)
2. 外企前段班: Yahoo, Line等已IPO公司
3. 外企中段與國內前段: 例如Grindr, Shopee, Shopback等B輪以上公司。還有國內
經營比較好的互聯網產業公司,例如Appier, 17, 三竹
(老實說這個區間有點大,不過就這樣吧)
4. 國內經過A輪以上公司(國外沒B輪不會在台灣設office的吧?)
5. 其他
有點抱歉,又是我的問題了,我在第一篇文章所謂的「大公司」
其實是指1.2.3.的部分...
1.2.3.沒有任何問題,用戶量,以及隨之而來系統與技術累積都是比較好的
在這邊可以看到至少100k起跳的DAU系統,以及需要承受這個量級用戶的業務彈性
我非常推薦來這類型的公司。來到這些公司如果還沒有辦法學到東西或沒有累積
那不單是個人問題,而是一種罪過,平白丟失了讓另一個人學習的機會
所以我前面希望指出問題的其實是這些4.5.的公司
後面的討論是以單個工程師的職涯成長而言的,
也就是未來你去求職的時候老闆怎麼評價你的視角,老實說比較自私
當然有人會說他希望讓世界更美好,每一間公司都曾經小過....
但那不需要是你的問題,我在這邊只是勸世,希望未來老闆怎麼看你會好一點
國內能夠拿到A輪以上的基本都是有核心技術的公司,而非透過特殊業務來增長的
這類公司的經營者想法不外乎是出手核心技術賺一筆,
或是持續經營,希望出海賺海外市場的生意
前者很明顯了,除了負責核心技術和業務的人員之外,
其他的IT人員基本上都是打雜工,美其名的全棧工程師,其實就是demo工程師
負責基礎IT的人員可能網路/機房/DBA/ops於一人
另一個最大的特徵,這種公司不可能有QA角色的存在
對於這類公司而言,核心人員當然非常優秀,
但負責其他角色的員工真的對這類公司是可有可無的,
所有的技能大概stackoverflow都能搞定,不需要高深理解,也沒有業務規模
當然成長受限
後者的話我建議看看,因為為了避免他是前者踩坑,
真的對公司業務或技術很有興趣的話可以等他有規模了再加入
接下來就是罪大惡極的5.了...(我真的不知道怎麼形容
我經歷過台灣2011~2016那段大家瘋狂搞創業公司的時期
台灣因為人口基數小,即便在某個業務領域的市場上有一定份額
其帶來的技術/架構和穩定性需求也可能是非常薄弱的,我們來證明一下:
隨便算個數學,Line Pay作為國內電支龍頭,MAU 220萬,DAU沒公佈, 我們抓92萬
(以支付寶比例來算,支付寶MAU 6.6億, DAU 2.8億,比例0.42)
假設我們的公司目標與市場明確,用戶體驗良好,
半年開發上線,經過一年半經營和迭代就能有了Line Pay的1/5用戶數
DAU: 92萬*20% = 18.4萬人
再假設這些用戶黏性極高,每天進行2筆交易,那就是單日36.8萬筆交易
所以每日日均tps就是 368000/86400 = 4.26筆
有人會說tps不是uniform的,那調整一下,日峰值五倍: 21.3tps
這邊再來另一個數據,一台8核16G的機器上,
執行不具有大量CPU或IO運算的Spring(Java)應用, 配合基本的MySQL單例資料庫
至少可以提供一般業務操作300 rps和至少40+ tps
所以,這是台灣本土市場創業公司的致命弱點也是比較悲哀的地方
如果你是一個服務端工程師,真的不需要你有多強的架構能力和技術深度
DDD、微服務這些架構設計、性能優化、穩定性都不需要的
即便你有極大的抱負期望引進這些技術和工具,也有極大的可能因為資金成本和
導入過程中的開發與運維成本而失敗
講白了就是這些公司沒有成長空間,就算有,也只是很低的天花板,
進去晃個一年可以,千萬不要超過兩年,你的職涯時間很寶貴的。
這邊聊的還是日活DAU 18.2萬、比較有前景,實際上背景也比較厚的公司。
其他那種找二姨三叔公借錢,和學弟拿10萬說入技術股、一間只有5個人的公司,
抱歉我不會改變我的說法,就是玩玩的。你自己玩可以,不要浪費別人時間
來個結語:
抱歉之前讓大家誤會了,非IT產業不在我之前討論內
我所謂的大公司是前面的1.2.3,我非常鼓勵大家想辦法加入,感受文化和提升自己
4.的話要仔細觀察,不要貿然加入
5.的話,以職業成長以及企業用人單位視角來說,實在很難有加分效果
沒有特殊原因,強烈不建議加入。
※ 引述《gundam00 (傻那駕駛中)》之銘言:
: ※ 引述《NewSpec (新規格)》之銘言:
: : 前幾天面試了一個接近10年經驗的工程師,
: : 原本是希望讓他來帶個團隊的
: 邀請接近10年的工程師來當Team leader 基本上你是看過對方的履歷
: 才會覺得該面試者可能有能力來擔任這職位 結果從履歷看不出來都在做一樣的事
: 不知道是他包裝得太好 還是你的理解能力有問題
嗯,包裝得非常好,最近幾年幾間公司都是co-founder和team leader
要不然就是lead a project, lead a team...blah blah
: : 面試之後發現,他近10年的經驗幾乎全都是創業公司
: : 各種行業、各個層級的創業公司職位
: : 因為這些公司都是那種台灣國內小創投玩玩的那種,
: : 所以基本上日活月活也都根本起不來
: 什麼叫國內小創投玩玩 你這跟大中華思想去看台灣一樣
: 覺得本身站在一個大格局上去看輕別人 真不知道哪邊來的優越感
: 多少人創業是想要改善問題 但偏偏新創就是會每天遇到一堆問題
: 在沒有經驗 & 資源的情況下 一不小心就失敗很正常
: 用玩玩這口吻來形容新創的高失敗率 真的很不恰當
我承認不太洽當,不過站在提供junior工程師建議的立場上
這些地方真的不是學習成長的好選擇
: : 因為用戶和業務量不大,所以各種技術和架構也當然都不需要了
: : 只要app和服務能跑得起來就好,跟做科專demo沒什麼區別
: 同意各種技術和架構沒得和穩定服務的大型公司比
: 但技術跟架構本來就是與時俱進 新創先做POC或MVP 求有再求好
: 最後才會因為痛點的緣故 改善技術和架構 如果該面試者在前公司有機會走到這邊
: 這些都不會是十年只做一件事
: : 這其實說明了了一個困境:
: : 作為一般公司工程師發展可能不好,看的不全面,成長不多
: : 所以我想學更多東西,所以我去創業,負責更全方位的職責,希望能力更強
: : 但是這些創業公司的規模小,所以其實每次做的事情都一樣,一樣淺、一樣不深入
: 請先定義叫做每次做的事情都一樣? 每次App從無到有開發 第一次用MassiveVC
: 第二次改成MVVM 第三次用MVVM+Rx 第四次用VIPER+Rx
: 第五次用Flutter直上雙平台 雖然每次都是開發App 但這明顯是不一樣的事情
不知道你自己有沒有發現,這正是我想講的做了n次一樣的事情
一樣拿上面的例子來說吧,任何語言的任何框架都能擋300rps和40tps
2011年紅的Groovy/Grails, 2012的Scala/Play, 之前的Python/Django
或者Java/Spring+Struts, Java/Spring MVC, Java/Spring WebFlux
任何一組要做一套成熟的系統都可以玩個一兩年
會明顯認為這不一樣的事情是因為沒遇過3k rps/400 tps甚至30k rps/4k tps的需求!
作為一間日活不只18.2萬人的公司,我要的絕對超出這個水平
你拿這些技能之中的什麼來證明你有這個能力?
: : 這擺明了就是那個可怕的職場寓言:
: : 工作怕的不是一件事情做十年,而是做了十年一樣的事情
: 十年做一樣的事情其實也不恐怖 看個log就知道是在update table cell時
: source和cell count不一致 造成的index out of range就能省你很多時間了
: : 老在搞創業公司也是一樣的OB
: : 在台灣,因為用戶基數這個基本的限制,所以一般的創業公司真的很難生存下去
: : 如果工程師自己看不清的話,很容易就是這間公司幹一樣的事 (like... CTO?)
: : 到下一間公司照樣幹一樣的事,然後再下一間....
: : 就這麼折騰了幾年,講實話了,你去了幾間公司,就是做了幾次一樣的事情
: : 真的 一 點 長 進 也不會有的
: 再複習一次 先定義什麼叫幹一樣的事 十年都寫Hello World那真的很狂
: 大部分的工程師通常都專精在差不多的領域深造 做一樣的事範圍可大可小
: 有些人只會後端 但他開的API就是比較有彈性 存取資料庫就是比較有效率
: 有些人只會手機端 但他畫面處理多執行緒就是很流暢 畫的動畫就是比較美
: 別污名化幹一樣的事 有些是面試官自己問不出來而已
看樣子應該是client工程師吧,我給一下我的幾個問題: (Android)
1. Activity正常和異常情況下的生命周期?
2. App如何保證後台服務不被kill?
3. 如何優雅的展示bitmap大圖? (可接續問LruCache與weak reference及soft reference)
4. 說明一下Android的消息機制 (接著問與event bus的差異,優缺)
5. 如何優化一個ListView?
6. 哪些情況會導致OOM?能不能給個例子,或用代碼簡單表示?
7. 什麼情況下會發生memory leak?
8. 如何監測memory leak?有哪些工具與手段?
9. 工具(例如: LeakCanary)監測memory leak的原理是什麼?
10. Android對HashMap做了優化後推出的新的容器類是什麼?
雖然不是很深,但應該還能分別只刻業務功能和有點深度的工程師啦
: : 誠心建議有心創業的工程師們,在有一定的技術能力之前
: : 好好先乖乖待在有口碑、有技術實力的大公司裡看看
: : 自己不管在技術或架構能力上的成長、眼界的擴展才是最重要的
: : 創不創業真的沒什麼關係,就只是一個風潮而已
: 再來問一下 有口碑 有技術實力的大公司 你是本身在每一間都任職過嗎?
: 沒的話怎麼有辦法斷言去大公司就能夠在技術或架構上拓展眼界跟成長實力?
: 創不創業真的沒什麼關係 就只是一個強加的理由而已
: 最後是工作上最怕的不是只做一樣事情的人 是永遠覺得自己觀點是對的
: 然後在同事提供不同意見後 拿出極端例子來反駁的人 能溝通很重要...
做人當然需要能溝通,聽意見,
但在技術上,是需要深厚的知識和專案積累來協助我們做出最佳判斷的
而這個判斷,絕對是有最佳解的,需要由具有充分能力的人找出來的。
技術決策一但似是而非或人云亦云就危險了,不然公司要CTO或技術總監幹嘛?