[管理]硅谷公司如何提升工程效能

工程效能是什麼?工程效能是研發團隊能夠持續為用戶產生有效價值的效率,包括有效性、效率、可持續性,三個方面


如何提升開發團隊的工程效能?

首先,要想提高工程效能,就必須深入到軟件開發的整個過程當中,研究軟件開發過程的本質,才能夠從紛亂的表象中,找到根本性的原則。圖9-6是軟件開發過程閉環圖。

[管理]硅谷公司如何提升工程效能


軟件開發的整個生命週期,包含6個部分:需求分析、軟件設計、程序開發、測試、發佈、運營。在運營的過程中發現新的需求,於是又從需求分析開始,不斷迭代。

工程效能提升的關鍵,就是從以上6個環節入手,確保輸入和輸出的質量與速度,從每個節點的優化,再到整個軟件研發流水線的優化。總結下來,工程效能的優化,可以從以下四個方面進行:

01

研發流程全鏈路優化提效

需求分析

關注需求價值的管理,建立需求價值的判定規則,根據公司當前的戰略重點,對需求價值、項目價值進行評定,如:公司當前以拓展市場為主要目標,那麼跟拓展市場相關的需求優先級就高一些,比如OA辦公、培訓系統等等,相比之下優先級就沒那麼高。

軟件設計

在設計環節,重點提升設計交付物的簡明,這裡並不強調文檔交付的格式和標準,需要根據每個團隊自身的情況來制定,成熟度比較高的團隊,經過了長時間磨合,產品設計人員只需要通過簡單講解,輔助一些流程圖、頁面要素定義、原型,就可以清楚的表達設計意圖,開發人員和測試人員也能夠很好的理解,這就達到了比較好的狀態,不需要設計人員寫幾十頁的設計文檔。

程序開發

在給予一定工作自由度的同時,工程師需要遵守相關的規約,如編碼規範、文檔註釋、自測用例的覆蓋度等等,通過一個個項目來提升自己的職業素養。其次,工程師要快速解決問題,把這一點視為有效工作的標準,而不是去玩一些新技術,結果把代碼質量和按時交付拋在一邊,就本末倒置了。

測試

測試工作的重心放在測試用例的編寫,對業務邏輯的梳理和學習,儘可能把手動測試的工作工具化,從接口到界面儘量用自動化測試工具,許多雲測試工具是不錯的選擇,包括App兼容適配測試等等,都可以做到雲端測試。

發佈

隨著虛擬化、雲計算等技術的發展,發佈技術和工具日益強大,許多公司在開源套件的基礎上,都建立起了自己的CI、CD平臺,實現DevOps研發、測試、發佈、運維一體化。實現了A/B測試、灰度發佈等極大提供效率的工程實踐。

運營

發佈結束並不意味著軟件生命週期的結束,實際上萬里長徵才踏出第一步,產品經理、運營人員、項目經理等核心人員,必須關注軟件交付後的運營情況,對產品經理來說,這個階段是驗證需求有效性非常重要的環節,然而許多公司的產品研發團隊對運營環節重視度不夠,久而久之就會跟業務方的想法產品隔閡,技術人員不能很好的理解業務需求,導致開發的有效性降低,所以產品研發團隊必須有日常工作當中關注運營進展,提升業務敏感度。


[管理]硅谷公司如何提升工程效能


02

團隊工程效能提升

一群人如何走得更快、更遠?

開發環境

開發環境包括,機器、IDE、版本管理工具等開發所需的軟硬件設施。國內許多企業都越來越重視這些因素,比如給開發人員配備一臺筆記本、一臺式機、高分辨率的電腦屏幕、移動端開發用的手機,甚至符合人體工學的辦公桌椅等等,這些都是非常好的實踐,提升了員工辦公體驗的同時,也提升了工作效率。

許多公司也開始重視代碼審查,為什麼強調做代碼審查呢?因為代碼審查,一來能夠及時發現代碼中的問題,並且能夠提升開發人員的編碼能力,再者能夠提高代碼質量,促進代碼規範的統一,同時也達到了知識共享的目的。代碼審核包括增量審核、全量審核,根據員工的特點的階段可以分別採用。

開發速度與代碼質量

在日常開發工作當時,迭代的安排是比較緊湊的,以應對快速變化的市場,開發人員會做很多的“臨時方案”,這些方案逐漸變成了技術債。因此,有計劃的還“技術債”能夠避免工程質量的坍塌,讓系統更持久的運行。同時,開發人員要有意識做持續重構,通過工程再造,抽象、拆分等措施,把代碼和架構持續優化。

左移、右移測試

所謂的左移測試、右移測試,是相對於常規測試而言的,從圖9-6所示,測試的上一個環節是開發,下一個環節是發佈,左移測試指的是在開發環節進行前置測試,包括開發的測試用例執行,代碼中包含測試代碼等等,指標包括:測試用例代碼覆蓋率、送測一次通過率等等。右移測試指的是,在發佈環節的測試,即代碼部署完成,連接線上數據,進行預發佈測試,以及發佈完成後在生產環境做冒煙測試、手工測試等等。

灰度、藍綠、紅黑髮布

灰度發佈,也叫金絲雀發佈,是指在黑與白之間,能夠平滑過渡的一種發佈方式。在其上可以進行A/B testing,即讓一部分用戶繼續用產品特性A,一部分用戶開始用產品特性B,如果用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把所有用戶都遷移到B上面來。金絲雀發佈的由來,是因為以前曠工開礦下礦洞前,先會放一隻金絲雀進去探是否有有毒氣體,看金絲雀能否活下來,金絲雀發佈由此得名。

藍綠髮布

藍綠髮布 (Blue Green Deployment) 是一種平滑過渡的發佈模式。藍綠髮布的操作模式上,首先依賴於能夠將全站應用劃分為對等的 A、B 兩個單元,A 先發布新產品代碼並引入少許用戶流量,B 繼續運行老產品代碼;如果新代碼 A 經線上運行觀察沒有跡象表明有問題,或者用戶行為對 A 中的變化沒有特別的反饋,那麼逐步引入更多用戶流量,直至所有用戶都訪問新產品。

紅黑髮布

這是Netflix採用的部署手段,Netflix的主要基礎設施是在AWS上,所以它利用AWS的特性,在部署新的版本時,通過AutoScaling Group用包含新版本應用的AMI的LaunchConfiguration創建新的服務器。測試不通過,找到問題原因後,直接幹掉新生成的服務器以及Autoscaling Group就可以,測試通過,則將ELB指向新的服務器集群,然後銷燬掉舊的服務器集群以及AutoScaling Group。紅黑部署的好處是服務始終在線,同時採用不可變部署的方式,也不像藍綠部署一樣得保持冗餘的服務始終在線。

雲化提效

中小型軟件公司尤其適合雲化提效,把測試環境、生產環境部署在雲端,通過第三方雲平臺的成熟套件,進行環境搭建,包括機房負載、安全防護、數據庫搭建、服務器環境安裝等等。如果按照傳統的方式,需要專業的數據庫工程師、運維工程師、網絡工程師,採用雲端的方式,這些都省了,只需要按月付費即可。雲化還有一個好處,就是讓應用能夠實現高可伸縮性,這在過去,是一筆巨大的投入,現在雲化就像自來水一樣,按需付費,人人都可以使用。

03

個人工程效能提升

從原則、方法、工具,來武裝每個工程師

個人高效能原則。個人工程效能提升,要關注一些基本的原則,比如當接收到一個需求的時候,不要著急動手編碼,要對模塊進行抽象、拆分,做適度的工程化處理,否則隨著工程複雜度的增加,代碼就會變得難以維護,災難離你就不遠了。在工程化的同時,要注重快速迭代原則,迴歸工程師的本質,工程師的本質就是用工程的方法,解決業務上的實際問題,快速搞定是工程師的基本要求。


[管理]硅谷公司如何提升工程效能


番茄工作法

番茄工作法,是一種幫助你深度高效工作的方法。具體做法是,選擇一個待完成的任務,將番茄時間設為25分鐘,專注工作,中途不允許做任何與該任務無關的事,直到番茄時鐘響起,然後在紙上畫一個X短暫休息一下(5分鐘就行),每4個番茄時段多休息一會兒。

番茄工作法極大地提高了工作的效率,還會有意想不到的成就感。市面上有許多軟件、App都提供番茄鐘的功能,可以嘗試使用,以幫助你進一步提升工作效率。

04

硅谷10倍速工程效能提升的秘密

跟奈飛學習工程師文化

文化好比企業的DNA,它決定了企業如何思考,如何行動。因此,研究硅谷公司,就必須關注它的公司文化。老K研究過硅谷非常有名的「奈飛文化手冊」,下面我們來聊一聊以奈飛文化為代表的,硅谷工程師文化。

奈飛(Netfilx)文化的核心是“自由”與“責任”。它認為現代企業的核心就是“人管人”,跟傳統公司領導管下屬的方式不同,這裡的人管人,前後兩個人是同一個人,自由與責任的核心就是要將權力還給員工,讓員工在自由環境中充分展現自己的能力,履行自己的責任。我們從奈飛文化的8個原則當中,能夠窺探硅谷工程師的文化精髓:


[管理]硅谷公司如何提升工程效能


1)我們只招成年人。奈飛不招巨嬰,成年人能夠自己管理好自己。

2)要讓每個人都理解公司業務。儘量告知員工他所處環境中的所有信息,然後由他來判斷怎樣行動是最合理的,而不是隻告訴他你認為他需要的信息,讓他嚴格按照指令來行事。

3)絕對坦誠,才能獲得真正高效的反饋。奈飛的文化支柱之一,是要開誠佈公。如果某個人對另一名同事有意見,最好的方式就是當面溝通。

4)只有事實才能捍衛觀點。在奈飛,員工可以有自己的意見,也可以為自己的意見辯護,但意見要始終以事實為依據。

5)現在就開始組建你未來需要的團隊。要面向未來,思考自己需要什麼樣的團隊成員,而不是眼下缺什麼樣的人,才去找什麼樣的人。

6)員工與崗位的關係,不是匹配而是高度匹配。招聘人才的責任不在HR,而是在用人經理上,要做好招聘就要找到與崗位完美匹配的人,奈飛看一個人是否合適這個崗位,主要是看應聘者解決問題的方式。

7)按照員工帶來的價值付薪。按照員工給公司帶來的真正價值確定薪酬,同時,要給得起錢,要儘可能保證每個人都處在人力市場薪酬水平的頂端。

8)離開時要好好說再見。績效評估應該不僅僅是年度,而應該是季度+年度。


分享到:


相關文章: