[討論] 我怎麼在一個 Startup 中擔任 Tech Lead

看板Soft_Job作者 (Ageis)時間11年前 (2015/01/31 20:56), 11年前編輯推噓11(11018)
留言29則, 16人參與, 最新討論串1/3 (看更多)
網誌好讀版: http://blog.norman-chen.me/post/26 這篇是個人在一個startup這幾個月來,擔任 Tech lead 的一些心得 分享給各位,希望版上各位大德能給我一些意見,或是討論(鞭打?)自己的 Tech lead ===========================分隔線============================= 我在一個 Startup 裡擔任某一 Project Team 的 Tech Lead, 以下是我這幾個月以來的心得 >> WARNING: 以下是個人心得,或許不適合於你/妳的環境 #主要的職責是 關於 Tech Lead,我想這篇解釋的很清楚,主要的職責就是以下三項: 1. 技術決策者 2. 流程監督者 3. 干擾過濾器 #技術決策 無疑問的,技術決策者一定是技術背景,但做決定時不能單考慮技術角度 必須是以產品的角度來看, 用什麼樣的技術會對產品的發展最好,負債最少。 影響決策的最大因素通常會是時間,但我會建議你別因為時間而忽略了品質, 在經驗上,一旦你忽略品質,之後你必須用更多時間補破網,就長期來看不是明智之舉 >> Mitsubishi怎麼改都不會變成BMW 因此綜觀來說 產品 > 技術決策 品質 > 時間 有次在某一個開發週期,我們為了趕上某個 milestone,多塞了一些Task給某個RD, Planning 時看起來只超出原本的開發時間幾個小時,看起來還好,至少當時是這樣想的。 結果因為某個Task需要比原本多的開發時間,把Buffer都吃掉了, 結果該名RD只好在星期六加班,但是QA的狀況依然不佳, 所以我們把整個時程往後延了一天,但還是有一個bug不能解決, 於是只好先延後這個Feature的開發。 事後PO問我為何事後多給了一天進行開發,狀況卻仍然沒有改善, 我的回答是:因為時間的壓縮,RD沒辦法做最好的規劃, 所以既使事後多用了一些時間,也不足挽救原本不良的設計 >> 一旦發生火災,再精良的設備都是亡羊補牢 #關於流程 用任一種敏捷式的流程,無論你的團隊採用那種理論 (Scrum, Kanban or...), 然後依照實際需求調整,流程的設計需根據5W1H 以下有三項最高原則可以遵循: 1. 有SOP就照樣執行 2. 沒有SOP盡早建立 3. 有問題的SOP討論修改 Tech Lead 應時時緊盯流程,確定每個人都按照流程的原則工作,一旦有出軌的情況, 越早拉回來越好,以防造成更嚴重的災情。 不過有時我會故意放點小火,這樣大家就知道原則是需要被嚴格執行的, 沒有足夠強烈的理由,就不應調整流程。 #持續集成、定期發佈 包括 TDD 及 CI 之類的,以下我打算只專注在為什麼要這麼做, 我假設每個開發人員都知道這些是在幹嘛的。 你應該要經常並自動化的測試你的程式, 這不只是為了當次的開發,也是為了之後的重構, 如果你能夠早點發現錯誤,那為什麼不做呢? 或者這樣問,你打算什麼時候做呢?QA的時候,或是Release的時候嗎? 這些工具都是為了及早發現程式的邏輯錯誤而產生的, 星星之火,足以燎原,問題越快處理越好。 定期發佈也是一樣的道理,沒有任何一個方法或工具能夠找出所有的問題, 因此應嚴格管控版本發佈的時間,萬一在這次發佈產生問題的話, 抓蟲的範圍可以比較好定義及回溯,不管你用的是什麼樣的版控工具,都應該這樣做。 #搬開石頭 這裡的石頭指的是在開發過程中,任何可能會造成障礙的東西。 身為 Tech Lead 應該主動,確保你的成員能完全專注在他應該做的項目上, 舉凡spec不清、經常性的被interrupt、頻繁的 context switch 等… >> 為什麼搬開石頭很重要,因為軟體開發跟睡覺一樣,是有階段性的 >> 你沒辦法每次一躺下就進入熟睡狀態。 題外話,我一直覺得純粹用時間管理軟體人員是很愚蠢的事, 因為我們每天的狀況不一樣,有時我們工作了八小時,真正專注的時間不到二小時; 有時狀況很好,可以專心做很多事,但不會一直都狀況很好。 #溝通、和更多的溝通 一個團隊,特別是 Project Team 是包含各種不同功能的成員, 身為 Tech lead 應該盡量耐心擔下溝通的工作。 呼應上一段,這也可以避免你的技術人員經常被無意義的打斷。 雖然溝通很重要,但不代表你的工作也是可以被隨意打斷的, 應該盡早使整個團隊建立溝通管理的原則, 以同樣的準則分辨這個問題的重要性及緊急性。 #Load Balance Tech Lead 非常忙碌,同時要兼顧開發及管理,以我淺薄的經驗看來, Tech Lead 必須及早建立起團隊文化,文件化執行細項及原則, 讓每個團隊成員按照團隊準則行事。 #關於外包 很不幸的我們團隊中有外包人員 (且非 on-site), 所以在溝通上,耗費了很大的成本,我在外包的 Lesson Learned 包括: 1. 一定要配合團隊的流程 2. 最好是 on-site,如果不行的話,退而求其次,至少在 QA時要 on-site 3. 及早建立好溝通管理及路徑 4. 清楚的文件 以下是個人的偏見,除非你真的沒辦法,不然不要找外包,因為: 1. 外包通常專注在 Delivery,而非品質 2. 外包 (尤其是公司) 通常同時接了一個以上的案子, 也是之所以外包只能專注在 Delivery 3. 外包的開發經驗不能累積 4. 好的外包像特效藥,但藥效一過經常會有反彈; 壞的外包像包著糖衣的瀉藥,吃下去就是要落塞的 #透明化 PM要讓RD知道整個計畫的 roadmap; RD應該盡可能讓PM以白話的方式知道目前的工作狀況, RD之間應每天用5~10分鐘review目前的狀況, 透明化是避免驚喜最好的方式,沒有之一。 #結論 最好的 Tech Lead 就是沒有 Tech Lead,盡可能的讓自己容易被取代。 -- ◆ 你不夠資深喔! <囧> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.245.65.133 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1422708970.A.53A.html

01/31 20:59, , 1F
Startup一般不是求能快速打造完mvp @@" 如果用上TDD..
01/31 20:59, 1F

01/31 20:59, , 2F
這樣不會拖慢整個mvp產出的時間嗎?
01/31 20:59, 2F

01/31 21:00, , 3F
如果是已經有product的話~就當小弟以上說的都不存在吧XD
01/31 21:00, 3F

01/31 21:08, , 4F
謝謝Ageis大大分享 :)
01/31 21:08, 4F
我解釋一下,我所在的 project team 是從 0 打造產品的,所以一開始的確是以 mvp 的概念快速打造 prototype,但當商業模式確認了之後, 我們大概花 2 ~ 3 個星期,重新設計了架構,這時才正式引進 tdd

01/31 21:08, , 5F
很有用的建議,感謝分享
01/31 21:08, 5F

01/31 21:16, , 6F
我真的希望我的主管能照你說的做..
01/31 21:16, 6F

01/31 21:38, , 7F
有意思,謝謝分享。
01/31 21:38, 7F

01/31 21:40, , 8F
超棒的整理 謝謝分享!
01/31 21:40, 8F
※ 編輯: Ageis (123.194.110.8), 01/31/2015 21:49:09

01/31 21:52, , 9F
GJ
01/31 21:52, 9F

01/31 21:58, , 10F
好險跟我認知上差不多 ~ 非常感謝Ageis大大再次分享 :D
01/31 21:58, 10F

01/31 22:00, , 11F
推經驗分享~~~
01/31 22:00, 11F

01/31 22:01, , 12F
推你的結論
01/31 22:01, 12F
※ 編輯: Ageis (123.194.110.8), 01/31/2015 22:35:30

01/31 22:49, , 13F
richi?
01/31 22:49, 13F

01/31 23:02, , 14F
這樣的TL好像對團隊成員沒有收入或技能上的幫助
01/31 23:02, 14F
方便給我進一步的建議嗎? ※ 編輯: Ageis (123.194.110.8), 01/31/2015 23:05:00

01/31 23:27, , 15F
建議不敢 只是主觀偏見 私以為TL還應該考量團隊/成員的
01/31 23:27, 15F

01/31 23:28, , 16F
career 不然說什麼都是表面做做樣子 大家演演戲而已
01/31 23:28, 16F

02/01 07:17, , 17F
career自己顧啦 都成年人了 你被三倍薪挖會因為這樣不走?
02/01 07:17, 17F

02/01 07:27, , 18F
真的會說要培養你的才是在演戲吧 他有不用培養的可用會用你?
02/01 07:27, 18F

02/01 10:31, , 19F
pest說的對,私以為career必須自己顧
02/01 10:31, 19F

02/01 10:32, , 20F
TL不一定是可以決定position的role
02/01 10:32, 20F

02/01 12:55, , 21F
推自己的career自己顧~
02/01 12:55, 21F

02/01 13:52, , 22F
顧career?笑了
02/01 13:52, 22F

02/01 21:47, , 23F
要能橋career 的至少也是都要manager 等級以上了!!
02/01 21:47, 23F
其實我覺得這意見滿有趣的 我想問另一個問題,怎樣的 tech lead 會讓各位覺得對 career 有幫助呢? ※ 編輯: Ageis (123.194.110.8), 02/02/2015 00:44:20

02/02 12:29, , 24F
文中所提 "純用時間管RD很蠢" + "沒事不要打斷其工作" 這意
02/02 12:29, 24F

02/02 12:29, , 25F
思應該是指工作交待完之後 就等哩程收割或是問題回報?如果
02/02 12:29, 25F

02/02 12:30, , 26F
是的話...那為何在外包部份在意 工作地點? 一起工作還是遠
02/02 12:30, 26F

02/02 12:30, , 27F
遠端...有差嗎=_=?
02/02 12:30, 27F
我在下一篇回文有提到,這裡指的"純粹"指的是覺得每小時產出的code數量 應該一致/穩定的產線式管理 實際上我們知道這不可能做到 能盡量穩定的方法,是保持一定的時間節奏,問題是這節奏每個人不太一樣 所以 tech lead 應盡量幫助成員排除意外的干擾 但也不是事情交待下去就顧收成就好 每天應該利用 5 ~ 10 分鐘口頭溝通一下這天的進度,tech lead 視問題處理 這個其實也是一種干擾,但因為是固定的,所以對 rd 而言的影響相對不大 關於外包,一般開發遠端還好,這個開發週期該做什麼功能 早在 spec 中清楚說明,有事用 skype 聯繫,每天也會去了解當天的進度,影響不大 可是例行的 qa 就不是這麼回事了,通常我們是 qa 後接著 release 而 qa 無法事先不知道有什麼問題,萬一有 bug 不能被馬上修復的話 非常有可能會影響 release,事實上我們發生過幾次這樣的情況 被迫要再做時程的調整,所以才會提到,希望 qa 時要 on site ※ 編輯: Ageis (61.62.212.217), 02/02/2015 14:18:36

02/02 23:55, , 28F
推~感謝分享
02/02 23:55, 28F

02/04 19:43, , 29F
好文章 有開發過的 有感覺
02/04 19:43, 29F
文章代碼(AID): #1KpD3gKw (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1KpD3gKw (Soft_Job)