作者AmosYang (泛用人型編碼器)
看板Soft_Job
標題Re: [請益] 如何面試資深工程師
時間Thu Dec 7 06:15:10 2017
※ 引述《del680202 (HANA)》之銘言:
: 不知到板上各位高手是如何面試一個資深工程師的
先說結論:
誘導對方發球;它若發得出好球,你打回去它又接得住的話,應該就不錯。
===
是可以考個實作題,看看它程式寫作風格 (工法,非排版) ,對細節邏輯的處理,
對時間空間的取捨,對問題的理解;看看它是一個十年還是十個一年。
原文裡提到的「二元樹找最大子樹」這類題目不是不能考,但至少儘量照該職缺、
團隊、公司在整個產業鏈裡上中下游的位置調整重點。
如果是處於中下游「應用程式」,你知我知獨眼龍也知,時間大多花在「選擇工具
、整合方案以解決業務問題」上,與其考抽象的計算(compute) 能力,考「了解問
題並解決的能力」比較適當。
易言之,一樣的題目,「二元樹找最大子樹」,先說明你的意圖: 題目就是故意很
模糊,想知道它能否反問出更有意思的問題,例如:
* 這二元樹的資料型態?範圍?是否固定大小?
* 這二元樹有多大?能整個塞進記憶體的是算大還是小?
* 這二元樹會不會變動?有多頻繁?有多少 reader/writer ?
每次變動是否 atomic/transaction ?
能否設計成變動後需要「重算」的地方愈少愈好?
* ...
讓它自己發球,再挑個你覺得最有意思的 (且自己能掌握的) 深入討論、試作,談
談如何測試這個機制 (「效能」, security, scaleability, ...) ,有的沒的。
它自己發的球,你殺回去它接不住的話,它也只能怪自己 :D (我就被我自己發的
球K過, hen 痛 XD )
===
另一點,就資深(senior)工程師來說,我看的另一個重點,就是它的
帶人(mentoring) 能力。它掛著「資深」的稱號,就必須要當得起「資淺」人員的
「榜樣(role model)」;例如:
* 溝通能力: 說服、協商、談判、聚焦、化解衝突
* 領導能力: tribal leadership, situational leadership 這類相關學說
也就是說,除了技術底子、工程紀律外,還要有幫助團隊文化向上成長的助力。
因為你送出來的訊息很清楚: 「這個團隊重視(value) 這個人的行事風格,所以這
個團隊選擇把 senior 這個稱號掛在這個人身上」。反過來說,如果 senior 這個
稱號在這個團隊中是倚老賣老熬年資就能拿到手的,那整個團隊就會跟著一起腐爛
。 (這與管理職不完全一樣,管理職除了要像 senior 一樣作榜樣外,還必須為整
個團隊的成敗負責。)
===
其實,你知我知獨眼龍也知,有些地方「面試」文化本身就很矛盾;粿也一樣。
手上的事都作不完了,又被抓來當分母 (spread of accountability), 招進來的
新人作得好是上級同志領導有方,作不好會有事後諸葛出來說「怎麼當初面試這新
人的人『都』沒有人看出來!?」是故,也很難怪別人使用 "Nobody gets fired
for choosing IBM." 戰術,拿「二元樹找最大子樹」這類題去交差了事 XD
Kent Beck [1] 也有篇文,稍微談到 Facebook 的情形:
*
https://goo.gl/yJ9PuJ
*
https://www.facebook.com/notes/kent-beck/fear-leads-to-anger-primary-and-secondary-emotions/1708089742557216/
[1]:
https://en.wikipedia.org/wiki/Kent_Beck
只能說: 「誰記得誰痛苦」 :D
就看是人求事還是事求人,中意對方開出來的價,那就也只能給對方驗貨到滿意惹
--
個人 雜談、學習、英語、軟體
https://www.facebook.com/tw.yang.30 https://www.facebook.com/30abysses/
https://twitter.com/twy30 http://www.30abysses.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 136.56.47.92
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1512598518.A.B10.html
※ 編輯: AmosYang (136.56.47.92), 12/07/2017 06:20:36
1F:噓 Ommm5566: 縮網址 12/07 07:20
QQ It looked fine on my machine.
已補上:
https://goo.gl/yJ9PuJ :D
2F:推 snaketsai: 好文推 12/07 08:03
3F:推 jackblack: 推 12/07 08:46
4F:推 maxqq: 講得不錯 12/07 09:11
5F:→ maxqq: 本公司資深 = 推垃圾出來,然後裝死自己很忙 12/07 09:12
6F:→ maxqq: 最後再跟老闆說,那個很簡單啊,但做出來就是個垃圾 12/07 09:12
7F:→ maxqq: 但自己就是做不出來 12/07 09:13
8F:推 bowin: 推精闢好文 12/07 09:54
9F:推 Ekmund: 推這說法 12/07 10:08
10F:推 ghmsxtwo: 好文 12/07 10:10
11F:推 Beersheep: 翟本喬有提過,Google 裡面有資深工程師是只專研技術 12/07 11:06
12F:→ Beersheep: 而沒有管理職務的,而跟管理職的地位是ㄧ樣的 12/07 11:06
13F:→ Beersheep: 這種在台灣似乎是比較少? 12/07 11:07
14F:推 senjor: 不只Google,國外很多資深技術缺,但是台灣都會要求掛管理 12/07 11:09
15F:推 fgh81113: 好文 12/07 11:39
16F:→ rhox: 美國工程師可以 12345等級一直上去,不用被逼去當管理職 12/07 11:49
17F:推 senjor: 其實應該說是有兩條轉職線,可以轉資深技術或者跳管理。 12/07 11:54
如 senjor 說的,資源豐富的公司,職涯道路比較多,有空間讓
IC (individual contributor) 累積磨練資歷,待遇也相對提高。
但無法以一概之說「跟管理職的地位是ㄧ樣的」,因為職責的劃分界限還是有出入
。
18F:推 nanashi07: 帶人這點個人覺的非必要性,實際上就是有人只想碰技術 12/07 12:05
19F:→ nanashi07: 而抗拒跟人交流,但只要給予明確的需求就能完好的交付 12/07 12:05
20F:→ nanashi07: 成品,主要還是看怎麼用對的方式用人 12/07 12:05
是的,這就看該組織是如何在「文化、風氣」中作出取捨;戰利品分給什麼樣的人
多,底下的人就會把那個人當榜樣 :D
21F:推 vi000246: 台灣的話架構師不知算不算管理職 12/07 12:14
22F:推 edward13: 科技廠是有資深工程師上去是主任工程師 資深主任工程師 12/07 12:28
23F:→ edward13: 最頂就總工程師 技術長之類 12/07 12:29
24F:→ edward13: 但很多名義上不是管理職 實際上還是要管雜務XD 12/07 12:31
25F:推 shiauji: 推 12/07 12:50
26F:推 YahooTaiwan: 台灣也有雙軌制的公司啦 12/07 13:00
27F:推 senjor: 你是指YahooTaiwan嗎? 12/07 13:01
※ 編輯: AmosYang (136.56.47.92), 12/07/2017 13:21:40
28F:推 LinuxKernel: 好文 12/07 13:53
29F:推 dream1124: 推 12/07 14:37
30F:推 HMW: push 12/07 18:37
31F:推 siriusu: 推 12/07 22:45
32F:推 puffs: 趨勢科技是雙軌制 12/07 22:45
33F:推 onthesea: 好文 12/08 09:59
34F:噓 ku72: 噓帶人那段 12/10 15:40
35F:→ ku72: 資深工程師應該是就自己工作崗位上需要的知識有足夠的經驗和 12/10 15:44
36F:→ ku72: 能夠獨立解決問題 帶人明明就是主管的責任 丟給資深工程師是 12/10 15:44
37F:→ ku72: 主管不負責任 除非有先跟該資深工程師確認過他有這方面的意 12/10 15:44
38F:→ ku72: 願 12/10 15:44
呃…上面原文裡寫的是
> 我看的另一個重點,就是它的
> 帶人(mentoring) 能力。它掛著「資深」的稱號,就必須要當得起「資淺」人員的
> 「榜樣(role model)」
並沒有主張「帶人是誰的責任」。且,帶人(mentoring) 與管人(managing)也有微
妙的差異。
如果公司業務是極度偏向「制式化」產品,有明確的 SOP + 生產線,那的確可以
「細部分工」的方式來運作。然而,這種細部分工的方式通常缺乏彈性,且會造成
殼倉效應(silo effect) 。
相對的,有些組織的文化是偏向於「自治(autonomy)」以應對最新的變化,也就是
儘可能地把決策權放給第一線的士兵;只要遵守組織的核心價值(core value)、完
成任務、達成目的,實際的執行辦法由團隊成員決定。這個時候,除了硬實力 (工
程技術) 外,就需要軟技能,也就是上面原文裡提到的溝通領導能力。
而這些軟技能難以從課堂、教材裡學到 (上面原文裡提到的 tribal leadership,
situational leadership 等學說是可以參考,但就像打籃球一樣,還是要上場練
才學得會) ,所以需要好的榜樣(role model)。
39F:→ KanoLoa: 樓上為資深邊緣工程師表示反對意見 12/11 19:57
※ 編輯: AmosYang (136.56.47.92), 12/12/2017 03:20:25
40F:→ ku72: 我是專案程式主管喔 另外 原文中的標題就是帶人能力 後面硬 12/12 18:44
41F:→ ku72: 要轉成榜樣那些我覺得有點怪 而且榜樣本身是主管自己要當的 12/12 18:44
42F:→ ku72: 資深工程師是來協助我解決問題的 人員管理安排是我的責任 12/12 18:44
43F:→ ku72: 我多領了獎金 多領了股票 然後把這些問題丟給資深工程師 12/12 18:44
44F:→ ku72: 我沒辦法 12/12 18:44
45F:→ ku72: 我之前公司的總經理在我第一次帶人前 也是先跟我詢問 然後確 12/12 18:48
46F:→ ku72: 認我的意願 並告訴我 這是為了升主管前的考驗 然後也在過程 12/12 18:48
47F:→ ku72: 中教導我很多這方面的知識 直到現在每一個新加入我專案的人 12/12 18:48
48F:→ ku72: 員 我都會一行一行跟他討論他寫的內容 邏輯 了解他想表達的 12/12 18:48
49F:→ ku72: 然後進一步探討怎樣改變會更好 但把這樣的工作丟給資深工程 12/12 18:48
50F:→ ku72: 師 你確定他會這樣對待新人? 還是讓新人忍受老鳥不專業的帶 12/12 18:48
51F:→ ku72: 領? 12/12 18:48
52F:→ ku72: 再者身為專案主管 整個專案的架構 內容 只有你最熟悉 而且也 12/12 18:54
53F:→ ku72: 是你要向上負責的 新人進來你不想辦法讓他融入 讓他理解 然 12/12 18:54
54F:→ ku72: 後直接把問題交給資深工程師 但是我接觸到現在至少有一半的 12/12 18:54
55F:→ ku72: 資深工程師 是不想帶人的 尤其在升不上去的時候 我不覺得在 12/12 18:54
56F:→ ku72: 這樣情況下 資深工程師會覺得自己對新人有啥責任 大部分都是 12/12 18:54
57F:→ ku72: 看的順眼就教你 看不順眼就讓你爆 12/12 18:54
58F:→ ku72: 最後 比較符合你說的是團隊溝通跟協作能力 而不是帶人領導 12/12 19:21
59F:→ ku72: 能力 12/12 19:21
我開了一篇新的
https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1513113828.A.D59.html
※ 編輯: AmosYang (136.56.47.92), 12/13/2017 06:01:36