最近在酷殼上看到陳皓的《什么是工程師文化?》丐怯,很有感觸硅卢。
最近入職新公司不久县好,帶領(lǐng)一個(gè)新的團(tuán)隊(duì)做一個(gè)新的項(xiàng)目藤滥。項(xiàng)目之初蠢络,缺乏規(guī)范,缺乏信任效览。為此整理”團(tuán)隊(duì)開(kāi)發(fā)規(guī)范“无切。《什么是工程師文化丐枉?》中提到的內(nèi)容很有借鑒意義哆键。可以在自己的項(xiàng)目中選擇適用的部分作為指導(dǎo)瘦锹。
文章的部分內(nèi)容如下:
今天籍嘹,每個(gè)從事計(jì)算機(jī)行業(yè)的技術(shù)人員都應(yīng)該感到幸運(yùn),因?yàn)橥湓海覀儾坏x對(duì)了行業(yè)辱士,也出生在了正確的時(shí)代,可以感受到前所未有的刺激和變化听绳,相比起我們的父輩颂碘,我們的人生,能經(jīng)歷這樣的時(shí)代椅挣,實(shí)在是一種幸運(yùn)头岔。所以,選對(duì)了職業(yè)并出生在了正確的年代的我們鼠证,此時(shí)只需要思考的一個(gè)問(wèn)題峡竣,那就是,我是否呆在了正確的地方用正確的方式做事量九?
在我看來(lái)澎胡,這個(gè)世界上有三種商業(yè)公司:
運(yùn)營(yíng)或銷(xiāo)售驅(qū)動(dòng)型的公司。這類(lèi)的公司以運(yùn)營(yíng)和營(yíng)銷(xiāo)見(jiàn)長(zhǎng)娩鹉,技術(shù)對(duì)于他們來(lái)說(shuō),更多的只是為了支持大規(guī)模的營(yíng)銷(xiāo)活動(dòng)稚伍,以及成本上的控制弯予,所以,基本上來(lái)說(shuō)不太需要技術(shù)創(chuàng)新个曙。這種公司最大的問(wèn)題就是缺乏安全感锈嫩。
產(chǎn)品驅(qū)動(dòng)型的公司受楼。這類(lèi)公司以產(chǎn)品見(jiàn)長(zhǎng),通過(guò)創(chuàng)造能提升用戶生活體驗(yàn)的產(chǎn)品見(jiàn)長(zhǎng)呼寸,技術(shù)對(duì)于他們來(lái)說(shuō)艳汽,除了支持大規(guī)模的在線用戶之外,他們會(huì)更多的去尋找那些為了增強(qiáng)用戶體驗(yàn)对雪,提高整個(gè)業(yè)務(wù)流程效率的技術(shù)創(chuàng)新河狐。比如:UI的交互方面的,整個(gè)業(yè)務(wù)流程方面的瑟捣。這種公司最大的問(wèn)題馋艺,就是容易被別人模仿和抄襲。
技術(shù)驅(qū)動(dòng)型的公司迈套。這類(lèi)的公司相信技術(shù)能改變世界捐祠,他們更多的是用強(qiáng)大的工程技術(shù)來(lái)創(chuàng)造有顛覆性的東西,更多的是用各種自動(dòng)化的技術(shù)取代人類(lèi)桑李。比如:近代的蒸汽機(jī)技術(shù)取代了大量的人工踱蛀,數(shù)字技術(shù)取代了大量信息傳遞的人工,現(xiàn)代贵白,這類(lèi)公司還希望通過(guò)人工智能來(lái)取代愚蠢的人類(lèi)來(lái)做決定率拒。這種公司最大的問(wèn)題就是可能做出叫好不叫座的東西。
這三種公司都可能成功戒洼,也都有問(wèn)題俏橘,但是,無(wú)一例外圈浇,他們都需要強(qiáng)大的技術(shù)支撐寥掐,只不過(guò),他們把技術(shù)所放在的位置不一樣磷蜀。
工程師文化的特征
簡(jiǎn)單說(shuō)來(lái)召耘,我可以簡(jiǎn)單的把這多的工程師文化的總結(jié)成兩大類(lèi):“自由” 和 “效率”。
針對(duì)于工程師文化來(lái)說(shuō)褐隆,尤其是軟件工程污它,提升工程效率的具體表現(xiàn)如下:
- 簡(jiǎn)化。簡(jiǎn)化不是簡(jiǎn)陋庶弃,簡(jiǎn)單的東西通常意味著用戶更好理解衫贬,也意味著更容易的維護(hù)和運(yùn)維。就像阿里推行的“小而美”歇攻,就像喬布期推崇的“沒(méi)有產(chǎn)品手冊(cè)簡(jiǎn)單易用的產(chǎn)品”固惯,就像Amazon推行的Working Backwards里說(shuō)的那樣,一個(gè)新的產(chǎn)品或功能缴守,產(chǎn)品經(jīng)理需要寫(xiě)三個(gè)文檔:媒體公關(guān)文葬毫、用戶手冊(cè)镇辉、常見(jiàn)問(wèn)題,三個(gè)文檔總共加起來(lái)不超過(guò)兩頁(yè)A4紙贴捡,且不準(zhǔn)用任何圖片說(shuō)明忽肛,目的就是為了讓產(chǎn)品簡(jiǎn)化和容易使用。
- 殘酷無(wú)情的推行自動(dòng)化烂斋。編寫(xiě)程序的最本質(zhì)的目的就是自動(dòng)化屹逛,看看人類(lèi)發(fā)展史上自動(dòng)化了多少東西。對(duì)于自動(dòng)化來(lái)說(shuō)源祈,不僅僅只是消除人肉的重復(fù)勞動(dòng)煎源,更重要的是,很多事情人完全干不過(guò)機(jī)器香缺。比如:加一臺(tái)機(jī)器手销,程序在秒級(jí)就可以完成,而人是永遠(yuǎn)不可能達(dá)到這樣的速度的图张,再比如:電商中用程序管理數(shù)量巨大的訂單的自動(dòng)化系統(tǒng)锋拖,加再多的人都完成的不可能像機(jī)器那樣完成的又好又快。自動(dòng)化需要大力開(kāi)發(fā)提高生產(chǎn)力的工具祸轮,比如:持續(xù)集成兽埃,持續(xù)部署,自動(dòng)化運(yùn)維适袜,基礎(chǔ)自動(dòng)化運(yùn)維柄错,甚至自動(dòng)化的運(yùn)營(yíng)工具。(Amazon的軟件工程中對(duì)自動(dòng)化和簡(jiǎn)代相當(dāng)迷戀)
- 避免無(wú)效率的組織架構(gòu)和無(wú)效率的管理苦酱。這體現(xiàn)在這些方面:1)扁平化的組織架構(gòu)售貌,2)努力用自動(dòng)化工具取代支持型的工作,3)不超過(guò)10個(gè)人的全棧小團(tuán)隊(duì)疫萤,4)不按人員的技能分工而是按其負(fù)責(zé)的產(chǎn)品或功能分工(關(guān)于分工颂跨,請(qǐng)參看《讓我們來(lái)談?wù)劮止ぁ罚?)開(kāi)會(huì)不是解決問(wèn)題,開(kāi)會(huì)是表決提案扯饶,6)通過(guò)產(chǎn)品的目標(biāo)或信條Tenets來(lái)減少溝通和決策過(guò)程(Amazon里的每個(gè)部門(mén)恒削,每個(gè)團(tuán)隊(duì),每個(gè)產(chǎn)品都有自己的Tenets尾序,這個(gè)Tenets標(biāo)明了要什么不要什么钓丰,這樣可以避免很多扯皮和難纏的trade-off的決擇,比如:AWS的幾個(gè)信條:運(yùn)維是最高優(yōu)級(jí)的——這意味著只要是會(huì)讓運(yùn)維變得復(fù)雜的需求都可能會(huì)工程團(tuán)隊(duì)被拒掉每币,Throughput & Latency不能更差——這意味著斑粱,功能要為性能讓路,因?yàn)樾阅茏儾盍烁Γ脩艟鸵I(mǎi)更多的資源)
- 正確的組件抽象则北。抽象是簡(jiǎn)化的一部份,一方面痕慢,抽象意味著重用和通用尚揣,另一方面抽象意味著強(qiáng)大的擴(kuò)展性,以適配各種可能性掖举。最重要的是快骗,抽象意味著技術(shù)能力的輸出,無(wú)論是內(nèi)部的其它團(tuán)隊(duì)還外部的團(tuán)隊(duì)塔次。比如:Google的MapReduce/BigTable/ProtoBuffer方篮,F(xiàn)aceBook的Thrift,還有Amazon內(nèi)部的WebService框架Coral Service励负、處理日志監(jiān)控的Timber藕溅,以及全線AWS產(chǎn)品都用到的Amazon Lock Framework(一個(gè)分布式鎖框架)……
- 開(kāi)發(fā)高質(zhì)量的產(chǎn)品。因?yàn)楦哔|(zhì)量的代碼继榆,不但可以容易的修改和維護(hù)巾表,還可以因?yàn)樯偬幚砭€上故障,從而有更多的時(shí)間去為未來(lái)做更多創(chuàng)造性的工作略吨。這意味著需要有非常嚴(yán)謹(jǐn)?shù)腄esign Review集币,Code Review,以及測(cè)試翠忠,關(guān)于Code Review鞠苟,可以參看這篇文章《從Code Review 談如何做技術(shù)》,關(guān)于嚴(yán)謹(jǐn)?shù)臏y(cè)試秽之,可以參看這篇文章《如何做性能測(cè)試》
- 不斷的提高標(biāo)準(zhǔn)以及招聘最好的人当娱。取法其上,得乎其中政溃,取法其中趾访,得乎其下,取法其下董虱,法不得也扼鞋。如果一個(gè)公司或一個(gè)團(tuán)隊(duì)想變得越來(lái)越好,越來(lái)越強(qiáng)大的話愤诱,就必需要不斷的提高自己的工作標(biāo)準(zhǔn)云头,提高工作標(biāo)準(zhǔn)意味著要不斷地培養(yǎng)和招聘更好的人。在Amazon和Google的招聘官中都有一個(gè)叫Bar Rasier的人淫半,這個(gè)人就是為了提高招聘標(biāo)準(zhǔn)而設(shè)立的溃槐。
- 創(chuàng)建一個(gè)持續(xù)改善的文化。一個(gè)好的組織科吭,一個(gè)好的團(tuán)隊(duì)昏滴,是需要不斷反思前進(jìn)的猴鲫,這需要全體員工一起來(lái)的。微觀層面上谣殊,在項(xiàng)目做完后需要有一個(gè)總結(jié)會(huì)分析項(xiàng)目中的得失拂共,在故障出現(xiàn)后,需要有故障分析會(huì)姻几,反思得失宜狐,在Amazon,嚴(yán)重的故障蛇捌,需要寫(xiě)一個(gè)COE(Correction of Errors)的文檔抚恒,其中有一節(jié)叫“Ask 5 Whys”,讓你自己?jiǎn)栕约褐辽?個(gè)為什么络拌。在宏觀層面俭驮,一個(gè)公司每年都應(yīng)該做一定的工作數(shù)據(jù)分析或是員工調(diào)查,比如盒音,是否招聘到了不錯(cuò)的人表鳍、工作的投入產(chǎn)出比,員工在哪些地方花時(shí)間了祥诽,等等譬圣,然后不斷的用技術(shù)手段來(lái)改善。(Amazon每年的工程師員工調(diào)查表是我活那么大見(jiàn)過(guò)的最細(xì)最細(xì)的調(diào)查表了雄坪, 問(wèn)題除了對(duì)公司厘熟、經(jīng)理、文化的维哈,還有從绳姨,日常工作、開(kāi)發(fā)環(huán)境阔挠、持結(jié)集成飘庄,測(cè)試自動(dòng)化、產(chǎn)品質(zhì)量购撼、軟件架構(gòu)跪削、軟件維護(hù)、線上問(wèn)題處理迂求、年度計(jì)劃碾盐、數(shù)據(jù)倉(cāng)庫(kù)建設(shè)、通用工具投票……這個(gè)員工調(diào)查直接導(dǎo)致公司的對(duì)工程的投資方向)
工程師文化如何落地
如果你要讓任何文化在公司內(nèi)得到執(zhí)行揩局,你有下面幾個(gè)手段可以選擇:
- 通過(guò)政治手段:你需要把住三個(gè)地方——招聘毫玖、績(jī)效考核 & 升職。比如,你要落地工程師文化中的簡(jiǎn)化和自動(dòng)化付枫,那你你在招聘的時(shí)候烹玉,你需要把懂簡(jiǎn)化和喜歡自動(dòng)化的人招進(jìn)來(lái),然后在績(jī)效考核和升職的地方設(shè)置上一條硬性指標(biāo)——你今年簡(jiǎn)化了什么励背?自動(dòng)化了什么春霍?如果沒(méi)有,對(duì)不起不但不能升職叶眉,績(jī)效可能還不達(dá)標(biāo)。
- 通過(guò)經(jīng)濟(jì)手段:讓不做這事的成本 > 要做這個(gè)的成本芹枷。然后衅疙,正常的人類(lèi)都會(huì)選擇成本低的方案。比如鸳慈,如果你要推行Design/Code Review/UT以提高質(zhì)量饱溢,你就把QA和OPS團(tuán)隊(duì)全挪到一邊去,讓Dev團(tuán)隊(duì)自己測(cè)試走芋,自己負(fù)責(zé)绩郎,這樣等這些Dev重復(fù)多次手動(dòng)測(cè)試,處理多次線上的弱智故障翁逞,他們就會(huì)自然而然的寫(xiě)自動(dòng)化測(cè)試和做Code Review了肋杖,而QA和OPS團(tuán)隊(duì)只是幫Dev你做工具罷了,而測(cè)試和運(yùn)維的事全是你DEV的Ownership挖函,出了故障也是Dev自己負(fù)責(zé)状植,于是,他們就會(huì)發(fā)現(xiàn)怨喘,不做Code Review和UT的成本遠(yuǎn)遠(yuǎn)大于做C Code Review/UT的成本津畸,他們就會(huì)去做成本低的事的。
最后必怜,工程師文化要落地肉拓,還有幾個(gè)小條件,
第一梳庆,團(tuán)隊(duì)要小暖途,Ownership很重要,Eat Your Own Dog Food靠益。 沒(méi)有人幫你擦屁股丧肴,自己的屎自己吃,沒(méi)有痛苦胧后,不會(huì)產(chǎn)生想進(jìn)步的動(dòng)力芋浮。
第二,熱愛(ài)學(xué)習(xí)和嘗試,學(xué)習(xí)嘗試新的技術(shù)纸巷,開(kāi)拓眼界镇草,學(xué)習(xí)嘗試新的思維方式,否則瘤旨,呆在原地梯啤,原有的思維方式只會(huì)讓你在原地打轉(zhuǎn)轉(zhuǎn)。
第三存哲,老板更多的相信技術(shù)而不是管理因宇。相信技術(shù)會(huì)用技術(shù)來(lái)解決問(wèn)題,相信管理祟偷,那就只會(huì)有制度察滑、流程和價(jià)值觀來(lái)解決問(wèn)題。
說(shuō)了這么多修肠,時(shí)代還在發(fā)展贺辰,不過(guò),這是我這么多年經(jīng)歷或看到的工程師文化的東西了嵌施。最后吐幾個(gè)槽——
對(duì)于996和加班這個(gè)事饲化,對(duì)于工程師來(lái)說(shuō)從來(lái)都不是問(wèn)題,在解決技術(shù)問(wèn)題或是創(chuàng)造的時(shí)候吗伤,工程師是個(gè)很自覺(jué)的群體吃靠,基本不需要有別人驅(qū)動(dòng),工程師是最樂(lè)意Work Hard的人了牲芋。我相信幾乎所有走上編程這個(gè)職業(yè)的人來(lái)說(shuō)撩笆,基本上都是興趣所至,覺(jué)得編程很有趣缸浦,但卻被各個(gè)公司996搞得對(duì)編程毫無(wú)興趣夕冲。為什么,你們這些公司要向中國(guó)的教育學(xué)習(xí)呢裂逐?人家本來(lái)對(duì)這事有比較高的興趣的歹鱼,但就是要通過(guò)考試/KPI/996這些東西把人家的興趣一點(diǎn)一點(diǎn)的磨滅掉,把人變成機(jī)器卜高、奴隸弥姻、牲口,讓人對(duì)學(xué)習(xí)和工作產(chǎn)生了厭倦和討厭掺涛,會(huì)是你們這些管理者們所希望的庭敦?是不是只有把人變得不思進(jìn)取了,你們才會(huì)管理薪缆?就像《軟件開(kāi)發(fā)中的兩種管理方式》中說(shuō)的第一種人一樣秧廉?
另外,我不知道,為什么我一說(shuō)這些東西疼电,就會(huì)有很多人(包括程序員自己)來(lái)和我說(shuō)我是個(gè)理想主義者嚼锄,這些已經(jīng)不是什么理想了,已被很多成功的公司用了很多很多年了蔽豺。只是你沒(méi)有見(jiàn)到過(guò)罷了区丑。還有的人說(shuō),因?yàn)橹袊?guó)的國(guó)情不同修陡。這更讓我費(fèi)解了沧侥。這讓我想到了當(dāng)年大清朝派了一堆人出國(guó)考察后回來(lái)后,說(shuō)外國(guó)的那套共和的東西不符合中國(guó)國(guó)情魄鸦,最終也在歷史的潮流中被淹沒(méi)掉了正什。另外,什么叫“中國(guó)的國(guó)情不同”号杏?中國(guó)有全世界數(shù)一數(shù)二的互聯(lián)網(wǎng)用戶,也有全世界數(shù)一數(shù)二的市場(chǎng)斯棒,不再是以前那個(gè)一窮二白的年代了盾致,中國(guó)的國(guó)情到底有哪些不同呢?
我不知道各位工程師是為什么活的荣暮?但我覺(jué)得庭惜,我們選擇了一個(gè)刺激的職業(yè),也趕上了這個(gè)行業(yè)大發(fā)展的時(shí)代穗酥,我們不妨捫心自問(wèn)一下护赊,你是否愿意讓自己的能力、青春和熱情就這樣被磨滅了砾跃?
擴(kuò)展閱讀:
bar raiser
抬杠者
什么是工程師文化骏啰?
https://coolshell.cn/articles/17497.html
簡(jiǎn)介:
2016年09月18日 陳皓 評(píng)論 109 條評(píng)論 63,713 人閱讀
四年前,我在QCon上演講了一個(gè)《[建一支強(qiáng)大的小團(tuán)隊(duì)](http://www.infoq.com/cn/presentations/Form-powerful-team)》(整理后的[PPT分享于這里](http://vdisk.weibo.com/s/gN-sQ/1351485199))提到了工程師文化抽高,今天判耕,我想在這里再寫(xiě)一篇關(guān)于工程師文化的文章,一方面是因?yàn)槲矣钟辛艘恍┫敕ê腕w會(huì)翘骂,另一方面壁熄,因?yàn)槲乙舱咴趧?chuàng)業(yè)的道路,毫無(wú)疑問(wèn)碳竟,要建一個(gè)有濃重的工程師文化的團(tuán)隊(duì)或公司草丧,所以有必要把自己的相關(guān)想法形有成白底黑字的“字據(jù)”,以供打自己的臉——“要是未來(lái)沒(méi)有做到莹桅,這篇文章就打我未來(lái)的臉” || “這篇文章太幼稚了昌执,未來(lái)的我會(huì)打我現(xiàn)在的臉”,當(dāng)然,如果要打臉仙蚜,我希望是前者此洲。
Again,**這篇文章不是招人的貼子委粉,因?yàn)槲矣X(jué)得呜师,招聘第一重要的事,不是發(fā)招聘廣告或是找獵頭挖人贾节,而是先得讓自己變成一個(gè)能配得上真正工程師的公司汁汗,然后再談吸引人的事**。
亞馬遜招聘內(nèi)幕:Bar Raiser狂刷應(yīng)聘者
http://www.ebrun.com/20140109/89507.shtml
簡(jiǎn)介:
一位與Facebook和Twitter都有過(guò)合作的人力資源顧問(wèn)表示栗涂,幾乎沒(méi)有公司能像亞馬遜一樣能堅(jiān)持自己的招聘流程知牌,他們不僅僅是招聘最優(yōu)秀的人才,而且愿意去尋找最適合自己的人才斤程。要成為一個(gè)Bar raiser之前要處理過(guò)幾百場(chǎng)面試角寸,而且在問(wèn)面試問(wèn)題和分辨優(yōu)秀員工方面要有一定的閱歷。通常來(lái)應(yīng)聘的員工都會(huì)由其他部門(mén)的Bar raiser來(lái)面試忿墅,Bar raiser會(huì)向他們提出具有挑戰(zhàn)性的問(wèn)題來(lái)測(cè)試應(yīng)聘者的分析技能扁藕。做過(guò)Bar raiser的員工都說(shuō)這項(xiàng)工作既是一個(gè)榮耀,也是一個(gè)負(fù)擔(dān)疚脐。
還有一位亞馬遜的硬件開(kāi)發(fā)員工表示他在亞馬遜的8年中參加過(guò)700多場(chǎng)面試亿柑,但是他不愿意成為一名Bar riser,因?yàn)檎加玫臅r(shí)間太多了棍弄。在創(chuàng)建這個(gè)招聘策略的時(shí)候望薄,亞馬遜CEO貝索斯想要?jiǎng)?chuàng)造一種持續(xù)的合作的公司文化。亞馬遜的高層認(rèn)為呼畸,這個(gè)程序涉及的面試官比較多痕支,需要大家意見(jiàn)統(tǒng)一才能確定招聘的人選,這樣就減少了招聘上的失誤役耕。曾經(jīng)幫助亞馬遜開(kāi)發(fā)這個(gè)項(xiàng)目的員工說(shuō)采转,這個(gè)嚴(yán)格的面試程序是為了篩選掉那些適應(yīng)性較差人,只有能經(jīng)歷這種輪番面試的人才能適應(yīng)亞馬遜的工作氛圍瞬痘。
一位曾給亞馬遜提供招聘咨詢的人力資源師說(shuō)故慈,亞馬遜招聘的是一個(gè)能適應(yīng)公司的任何角色的人,而不是為了單純的填補(bǔ)職位的空缺框全。雖然這樣招聘看起來(lái)費(fèi)時(shí)費(fèi)力造價(jià)昂貴察绷,但是貝索斯卻對(duì)這種方式很滿意,因?yàn)樗J(rèn)為如果招聘到了錯(cuò)誤的人選則會(huì)付出更大的代價(jià)津辩。