人人都在說工程師文化,90%的同學們嚮往工程師文化,然而95%的同學們覺得自己的部門沒有工程師文化。但關於工程師文化,事實告訴我們兩件事:
基於這個不恰當的比喻以及事實1得出:90%同學們都愛美女;
基於這個不恰當的比喻以及事實2得出:95%同學們部門真的都沒有美女!
基於以上事實我們做乙個假設:如果同學們部門裡都是美女,大家一定都很開心!
基於這個假設得到事實3:都是美女的部門業績肯定完蛋了(這個推導過程只可意會不可言傳)。
根據以上乙個假設和三個事實,我們得到結論:乙個部門要有美女,但不能多!極端的工程師文化產生少數幾個極端成功的公司以及大多數死得很慘的公司。
工程師文化 vs kpi文化
**工程師文化
工程師文化的前提條件
信任:leader和產品對工程師絕對的信任是工程師文化的最基本條件。如果他說要用乙個更優雅的方法解決乙個問題,但要花更多的時間,請你選擇相信他。好的工程師非常懶惰,他這麼做一定是為未來的工作提高效率。
卓越的技術領袖存在:領導如果對技術沒有信仰,只把技術當成工具,就很難說這個團隊會有工程師文化。說白了不是每個不懂技術的領導都懂得欣賞優雅**產生的美和對未來產生的深遠影響。
技術列為kpi:在我參加晉公升面試的時候,50%以上的技術人員講的都是產品(what),而不是技術(how),並且他們都晉公升了.....這源於業務bu總是把業務當成kpi的唯一衡量手段:技術好不好有什麼關係?今年不出事,明年我已晉公升。如果沒有技術kpi,技術就會總被放在次優先順序。
工程師文化的特徵
小團隊:7-12人的團隊是比較適合的團隊大小。有人用pizza團隊來形容乙個團隊的大小,就是一兩張pizza可以餵飽這支團隊。facebook和google經常有2-3個人的團隊,小團隊有如下特徵(中文為個人即興翻譯,可以選擇忽略):
技術創新:團隊必須堅信技術可以為業務帶來不同於現在的可能性,現在沒看見不代表它不存在。技術挑戰產品是因為也許你不知道還有更好的技術和架構可以更簡單更有效地完成乙個業務任務。團隊激勵不單純以業績為主的技術的創新,比如:google每個工程師都有20%的時間可以用於研究自己喜歡的技術,而不是跟google相關的業務。
技術決策權大:尊重技術決策的前提就是信任技術決策,而不是簡單粗暴地說:「為什麼完不成?隨便叫乙個程式設計師就可以完成。」工程師未必在所有產品特性的定義上有決策的能力,但在優先順序和排期上是可以從技術角度給出決策。所有的業務deadline倒排都在一定程度上逼迫技術做出妥協,並且這些妥協慢慢變成合法理由:我的**不好的原因是業務壓力太大。note:工程師們不要為自己邋遢的**找理由,**對於乙個軟體工程師就是尊嚴。
技術資料視覺化:視覺化技術相關資料報含圈複雜度、測試覆蓋率、重複率等等,對資料好的工程師給予掌聲。但是,好資料給予的是掌聲而不是獎金,所有資料都可以被造出來,這是個充分但不必要條件——好的**資料肯定好,資料好的**不一定是好**。
分享多會議少:寧願少開會掰扯這個應該誰做,這個p1應該誰來背,也要多聽技術高手講乙個技術細節,大家都應該沉下心來沉澱一下自己的專業知識。
敏捷敏捷——乙個飽受非議,飽受爭議的名詞。今天我提它不是想為它正名,其實是想說大個子女孩的故事:我有個大個子女孩同學,身材非常好,178cm,人到中年堅持鍛鍊,身材高挑,穿啥都是給啥做廣告。她告訴我,她外婆小時候走路只敢走在路坎的下面,鄰居朋友走在路坎上面,這樣可以顯得她外婆矮點。那時,高個的女孩是被嘲笑的:150cm的姑娘指著她外婆的背影說:「看這傻大個!」可今天我想對我同學說:「你女兒最好也像你這麼高,我兒子去看看能不能追上,優化一下我家族的身高基因。」
很多人一聽到敏捷就說:「還說敏捷,早過時了!」 雖然今年流行網紅臉,不流行高個姑娘,可她就是比你高。那些聽到敏捷就嗤之以鼻的人,你們在堅持什麼?至少堅持敏捷實踐的人心中有信仰,這是他們作為工程師的信仰,他們還在堅持為減少乙個if else修煉每一行**,堅持為乙個完整的自動化測試不停思考,堅持為了兩個模組的解耦絞盡腦汁。
即便如此,今天不談敏捷,就像今天不談」身高「,我們談」身材修長「。基於這個前提,敏捷還是不敏捷就不重要了:是不是敏捷,是不是所謂的工程師文化都不重要,重要的是找到適合團隊的開發方式,讓團隊開發效率更好,系統更健壯,特性更易擴充套件。
盒馬基礎技術團隊實踐
note:本文,我僅對自己的個別兩個小分隊進行描述。
設計乙個軟體技術團隊的最終產出物是可交付的軟體本身,所以不管什麼花裡胡哨的管理方式都沒有乙份安全和穩定執行的**來的給力。好的**應該要有設計的痕跡:簡單粗暴地還原業務或多或少給未來埋坑。
在我們團隊,大部分微觀**設計
源自我們自己定製的一套領域模型設計套路。套路裡要有每個工程師對每個特性的精心設計
,同學們的設計原則是:可以設計得不完美,但不能不思考設計;即使已經上線了的系統,只要有問題,**永遠可以修改
,但前提是有完善的自動化測試保護。
自動化測試
不要低估了自動化測試可以給軟體質量帶來的深遠影響:不管是當下質量,還是未來加特性,或是單純的重構**。
不要低估了編寫自動化測試的難度:檢驗**好壞的一條標準就是——是否很容易對這塊**新增有效的自動化測試。
測試的一些原則:
持續整合/持續發布
持續整合其實什麼都不是,它只是隨時把大家的**編譯、打包、部署、測試,不停地跑起來,持續地告訴你**質量是否滿足你的測試要求:
分支策略
我們採用的分支策略一定跟大部分同學們的分支策略背道而馳。
結對程式設計
兩個人在一起寫**在阿里這麼繁忙的企業應該是件讓人匪夷所思的事情,但我堅持讓團隊踐行這個實踐:
>>>>閱讀全文
如何在團隊建設工程師文化?阿里資深技術專家這麼做
人人都在說工程師文化,90 的同學們嚮往工程師文化,然而95 的同學們覺得自己的部門沒有工程師文化。但關於工程師文化,事實告訴我們兩件事 基於這個不恰當的比喻以及事實1得出 90 同學們都愛美女 基於這個不恰當的比喻以及事實2得出 95 同學們部門真的都沒有美女!基於以上事實我們做乙個假設 如果同學...
工程師如何在面試中脫穎而出
簡評 不單純說技術,工程師在申請人池中如何脫穎而出。每個人都想在面試中脫穎而出,我也一樣。事實上,這是工程師最長問到的問題之一。為了或多更多參考,我問了好多朋友,他們都是資深工程師或公司創始人。我問他們同樣的問題 過去你做了什麼,或者你看其他人做過什麼,來幫助工程師脫穎而出?他們回答的非常好,我不得...
第2講如何打造屬於自己的工程師文化
有的技術管理者遇到到這樣的問題,招聘的時候每個成員都是特別棒的,為什麼進入公司幾個月後精英個人都變成變成了平凡的,整體團隊產出也不理想。這是為什麼呢?文化是什麼 谷歌 亞馬遜 facebook 等都有很強的工程師文化,以亞馬遜為例,它的工程師文化包括 通過解決問題來改造世界 基於事實與科學規律 實踐...