0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何建立工程師文化

工程師人生 ? 來(lái)源:wv ? 作者:簡(jiǎn)書網(wǎng) ? 2019-08-28 16:07 ? 次閱讀

人人都在說(shuō)工程師文化,90%的同學(xué)們向往工程師文化,然而95%的同學(xué)們覺得自己的部門沒有工程師文化。但關(guān)于工程師文化,事實(shí)告訴我們兩件事:

事實(shí)1是:我們定義工程師文化的標(biāo)準(zhǔn)不一樣。這就跟美女一樣,每個(gè)人心中的美女都不一樣, 但我們都愛美女。

事實(shí)2是:工程師文化還是可以客觀感覺出來(lái)的。如果你真是個(gè)美女,大家還是都會(huì)認(rèn)為你漂亮的。標(biāo)準(zhǔn)再不一樣,敢說(shuō)奧黛麗赫本丑的人還是需要莫大并且不要臉的勇氣。

基于這個(gè)不恰當(dāng)?shù)谋扔饕约笆聦?shí)1得出:90%同學(xué)們都愛美女;基于這個(gè)不恰當(dāng)?shù)谋扔饕约笆聦?shí)2得出:95%同學(xué)們部門真的都沒有美女!

基于以上事實(shí)我們做一個(gè)假設(shè):如果同學(xué)們部門里都是美女,大家一定都很開心!

基于這個(gè)假設(shè)得到事實(shí)3:都是美女的部門業(yè)績(jī)肯定完蛋了(這個(gè)推導(dǎo)過(guò)程只可意會(huì)不可言傳)。

根據(jù)以上一個(gè)假設(shè)和三個(gè)事實(shí),我們得到結(jié)論:一個(gè)部門要有美女,但不能多!極端的工程師文化產(chǎn)生少數(shù)幾個(gè)極端成功的公司以及大多數(shù)死得很慘的公司。

工程師文化 vs KPI文化

工程師文化是由內(nèi)而外的引導(dǎo)和自然發(fā)生, KPI文化是由外而內(nèi)的信仰和強(qiáng)行注入。

工程師文化著眼未來(lái), KPI文化活在當(dāng)下。

工程師文化痛恨KPI,我不愛的我不做,我愛的我瘋狂。 KPI文化唯KPI說(shuō)話,愛不愛都要像戰(zhàn)士一樣完成。

淺談工程師文化

工程師文化的前提條件

信任:leader和產(chǎn)品對(duì)工程師絕對(duì)的信任是工程師文化的最基本條件。如果他說(shuō)要用一個(gè)更優(yōu)雅的方法解決一個(gè)問題,但要花更多的時(shí)間,請(qǐng)你選擇相信他。好的工程師非常懶惰,他這么做一定是為未來(lái)的工作提高效率。

卓越的技術(shù)領(lǐng)袖存在:領(lǐng)導(dǎo)如果對(duì)技術(shù)沒有信仰,只把技術(shù)當(dāng)成工具,就很難說(shuō)這個(gè)團(tuán)隊(duì)會(huì)有工程師文化。說(shuō)白了不是每個(gè)不懂技術(shù)的領(lǐng)導(dǎo)都懂得欣賞優(yōu)雅代碼產(chǎn)生的美和對(duì)未來(lái)產(chǎn)生的深遠(yuǎn)影響。

技術(shù)列為KPI:在我參加晉升面試的時(shí)候,50%以上的技術(shù)人員講的都是產(chǎn)品(what),而不是技術(shù)(how),并且他們都晉升了。..。.這源于業(yè)務(wù)BU總是把業(yè)務(wù)當(dāng)成KPI的唯一衡量手段:技術(shù)好不好有什么關(guān)系?今年不出事,明年我已晉升。如果沒有技術(shù)KPI,技術(shù)就會(huì)總被放在次優(yōu)先級(jí)。

工程師文化的特征

小團(tuán)隊(duì):7-12人的團(tuán)隊(duì)是比較適合的團(tuán)隊(duì)大小。有人用pizza團(tuán)隊(duì)來(lái)形容一個(gè)團(tuán)隊(duì)的大小,就是一兩張pizza可以喂飽這支團(tuán)隊(duì)。facebook和google經(jīng)常有2-3個(gè)人的團(tuán)隊(duì),小團(tuán)隊(duì)有如下特征(中文為個(gè)人即興翻譯,可以選擇忽略):

Move Fast and Break Things(不破不立);

Huge Impact with Small Teams(以少為多,精準(zhǔn)打擊);

Be Bold and Innovative(勇敢追求卓越);

技術(shù)創(chuàng)新:團(tuán)隊(duì)必須堅(jiān)信技術(shù)可以為業(yè)務(wù)帶來(lái)不同于現(xiàn)在的可能性,現(xiàn)在沒看見不代表它不存在。技術(shù)挑戰(zhàn)產(chǎn)品是因?yàn)橐苍S你不知道還有更好的技術(shù)和架構(gòu)可以更簡(jiǎn)單更有效地完成一個(gè)業(yè)務(wù)任務(wù)。團(tuán)隊(duì)激勵(lì)不單純以業(yè)績(jī)?yōu)橹鞯募夹g(shù)的創(chuàng)新,比如:Google每個(gè)工程師都有20%的時(shí)間可以用于研究自己喜歡的技術(shù),而不是跟Google相關(guān)的業(yè)務(wù)。

技術(shù)決策權(quán)大:尊重技術(shù)決策的前提就是信任技術(shù)決策,而不是簡(jiǎn)單粗暴地說(shuō):“為什么完不成?隨便叫一個(gè)程序員就可以完成。”工程師未必在所有產(chǎn)品特性的定義上有決策的能力,但在優(yōu)先級(jí)和排期上是可以從技術(shù)角度給出決策。所有的業(yè)務(wù)deadline倒排都在一定程度上逼迫技術(shù)做出妥協(xié),并且這些妥協(xié)慢慢變成合法理由:我的代碼不好的原因是業(yè)務(wù)壓力太大。Note:工程師們不要為自己邋遢的代碼找理由,代碼對(duì)于一個(gè)軟件工程師就是尊嚴(yán)。

技術(shù)數(shù)據(jù)可視化:可視化技術(shù)相關(guān)數(shù)據(jù)包含圈復(fù)雜度、測(cè)試覆蓋率、重復(fù)率等等,對(duì)數(shù)據(jù)好的工程師給予掌聲。但是,好數(shù)據(jù)給予的是掌聲而不是獎(jiǎng)金,所有數(shù)據(jù)都可以被造出來(lái),這是個(gè)充分但不必要條件——好的代碼數(shù)據(jù)肯定好,數(shù)據(jù)好的代碼不一定是好代碼。

分享多會(huì)議少:寧愿少開會(huì)掰扯這個(gè)應(yīng)該誰(shuí)做,這個(gè)P1應(yīng)該誰(shuí)來(lái)背,也要多聽技術(shù)高手講一個(gè)技術(shù)細(xì)節(jié),大家都應(yīng)該沉下心來(lái)沉淀一下自己的專業(yè)知識(shí)。

敏捷

敏捷——一個(gè)飽受非議,飽受爭(zhēng)議的名詞。今天我提它不是想為它正名,其實(shí)是想說(shuō)大個(gè)子女孩的故事:我有個(gè)大個(gè)子女孩同學(xué),身材非常好,178cm,人到中年堅(jiān)持鍛煉,身材高挑,穿啥都是給啥做廣告。她告訴我,她外婆小時(shí)候走路只敢走在路坎的下面,鄰居朋友走在路坎上面,這樣可以顯得她外婆矮點(diǎn)。那時(shí),高個(gè)的女孩是被嘲笑的:150cm的姑娘指著她外婆的背影說(shuō):“看這傻大個(gè)!”可今天我想對(duì)我同學(xué)說(shuō):“你女兒最好也像你這么高,我兒子去看看能不能追上,優(yōu)化一下我家族的身高基因?!?/p>

很多人一聽到敏捷就說(shuō):“還說(shuō)敏捷,早過(guò)時(shí)了!” 雖然今年流行網(wǎng)紅臉,不流行高個(gè)姑娘,可她就是比你高。那些聽到敏捷就嗤之以鼻的人,你們?cè)趫?jiān)持什么?至少堅(jiān)持敏捷實(shí)踐的人心中有信仰,這是他們作為工程師的信仰,他們還在堅(jiān)持為減少一個(gè)if else修煉每一行代碼,堅(jiān)持為一個(gè)完整的自動(dòng)化測(cè)試不停思考,堅(jiān)持為了兩個(gè)模塊的解耦絞盡腦汁。

即便如此,今天不談敏捷,就像今天不談”身高“,我們談”身材修長(zhǎng)“?;谶@個(gè)前提,敏捷還是不敏捷就不重要了:是不是敏捷,是不是所謂的工程師文化都不重要,重要的是找到適合團(tuán)隊(duì)的開發(fā)方式,讓團(tuán)隊(duì)開發(fā)效率更好,系統(tǒng)更健壯,特性更易擴(kuò)展。

盒馬基礎(chǔ)技術(shù)團(tuán)隊(duì)實(shí)踐

Note:本文,我僅對(duì)自己的個(gè)別兩個(gè)小分隊(duì)進(jìn)行描述。

設(shè)計(jì)

一個(gè)軟件技術(shù)團(tuán)隊(duì)的最終產(chǎn)出物是可交付的軟件本身,所以不管什么花里胡哨的管理方式都沒有一份安全和穩(wěn)定運(yùn)行的代碼來(lái)的給力。好的代碼應(yīng)該要有設(shè)計(jì)的痕跡:簡(jiǎn)單粗暴地還原業(yè)務(wù)或多或少給未來(lái)埋坑。在我們團(tuán)隊(duì),大部分微觀代碼設(shè)計(jì)源自我們自己定制的一套領(lǐng)域模型設(shè)計(jì)套路。套路里要有每個(gè)工程師對(duì)每個(gè)特性的精心設(shè)計(jì),同學(xué)們的設(shè)計(jì)原則是:可以設(shè)計(jì)得不完美,但不能不思考設(shè)計(jì);即使已經(jīng)上線了的系統(tǒng),只要有問題,代碼永遠(yuǎn)可以修改,但前提是有完善的自動(dòng)化測(cè)試保護(hù)。

自動(dòng)化測(cè)試

不要低估了自動(dòng)化測(cè)試可以給軟件質(zhì)量帶來(lái)的深遠(yuǎn)影響:不管是當(dāng)下質(zhì)量,還是未來(lái)加特性,或是單純的重構(gòu)代碼。

不要低估了編寫自動(dòng)化測(cè)試的難度:檢驗(yàn)代碼好壞的一條標(biāo)準(zhǔn)就是——是否很容易對(duì)這塊代碼添加有效的自動(dòng)化測(cè)試。

測(cè)試的一些原則:

代碼提交前通過(guò)所有測(cè)試:測(cè)試就是驗(yàn)收標(biāo)準(zhǔn),是需求驗(yàn)收的代碼轉(zhuǎn)換。原則上一條驗(yàn)收標(biāo)準(zhǔn)可以對(duì)應(yīng)至少一個(gè)斷言(assert),沒有斷言的測(cè)試被視為無(wú)效測(cè)試;

用given/when/then語(yǔ)態(tài)寫單元測(cè)試;

要讓測(cè)試代碼更容易寫必須分離代碼邏輯與數(shù)據(jù)庫(kù)讀寫;

合理使用mock/stub技術(shù),測(cè)你要測(cè)的,讓你的測(cè)試更有效;

異步測(cè)試不要用sleep;

最好的debug手段就是測(cè)試;

單元測(cè)試耗時(shí)最短,多用單元測(cè)試覆蓋代碼邏輯;

越是集成測(cè)試數(shù)量應(yīng)該越少,因?yàn)榇鷥r(jià)很大,性價(jià)比不高;

靜態(tài)代碼質(zhì)量分析應(yīng)該伴隨每次持續(xù)集成。

持續(xù)集成/持續(xù)發(fā)布

持續(xù)集成其實(shí)什么都不是,它只是隨時(shí)把大家的代碼編譯、打包、部署、測(cè)試,不停地跑起來(lái),持續(xù)地告訴你代碼質(zhì)量是否滿足你的測(cè)試要求:

測(cè)試應(yīng)按測(cè)試運(yùn)行時(shí)間長(zhǎng)短分級(jí)編排在不同級(jí)別的持續(xù)集成中,時(shí)間短的測(cè)試應(yīng)該跑得更頻繁,比如:代碼的每一次push,時(shí)間長(zhǎng)一點(diǎn)的跑的頻度低點(diǎn),像是每隔3個(gè)小時(shí),每天晚上11點(diǎn)開始。..。..

一次編譯多次部署,在持續(xù)發(fā)布的環(huán)節(jié)中,

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 工程師
    +關(guān)注

    關(guān)注

    59

    文章

    1571

    瀏覽量

    68553
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA算法工程師、邏輯工程師、原型驗(yàn)證工程師有什么區(qū)別?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題(一) Q:FPGA中的FPGA算法工程師、FPGA邏輯工程師、FPGA原型驗(yàn)證工程師三者有什么區(qū)別? A:FPGA 算法工程師
    發(fā)表于 09-23 18:26

    正是拼的年紀(jì)|65歲電子工程師上班VLOG #65歲退休 #電子工程師 #搞笑 #上班vlog

    電子工程師
    安泰小課堂
    發(fā)布于 :2024年07月25日 11:31:02

    用二創(chuàng),1:1復(fù)刻工程師的職場(chǎng)現(xiàn)狀

    工程師
    揚(yáng)興科技
    發(fā)布于 :2024年07月19日 18:30:07

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    嵌入式軟件工程師和硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件工程師是軟件開發(fā)領(lǐng)域中的一種專業(yè)工程師,他們主要負(fù)責(zé)設(shè)計(jì)和開發(fā)嵌入式軟件,
    發(fā)表于 05-16 11:00

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識(shí) #面試題

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    如何入門硬件工程師

    想跨行業(yè)做硬件設(shè)計(jì)工程師,應(yīng)該如何學(xué)習(xí)規(guī)劃呢
    發(fā)表于 03-17 21:49

    一位硬件工程師的歷練之路:從入門學(xué)習(xí)理論到... #搞笑 #硬件工程師 #電子工程師 #揚(yáng)興科技

    硬件工程師揚(yáng)興科技
    揚(yáng)興科技
    發(fā)布于 :2024年03月13日 17:50:21

    企業(yè)老工程師和高校老師有啥區(qū)別

    電子工程師硬件
    電子發(fā)燒友網(wǎng)官方
    發(fā)布于 :2024年02月28日 17:50:00

    如何搞崩一個(gè)硬件工程師心態(tài)?試試對(duì)ta說(shuō)這幾句

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2024年02月20日 18:05:49