首先定義一下這裏所謂的 「target miss」 指的是啥:性能優化
我講幾個親身經歷的故事。微信
## 僅憑 「猜測」 而定下目標換來的必定是無效的投入網絡
小 A:目前我們的直播延時比較高,想一想有啥辦法下降延時到 3s 內 ?
小 B:我猜應該是咱們使用的 RTMP 協議底層是基於 TCP 的,因此延時比較大,咱們啓動一個新的項目,設計一套基於 UDP 的協議來替換 TCP 吧
小 C:肯定要啓動這個新項目麼?咱們要不要先調研一下當前直播的延時具體主要來自哪裏?
小 D:小 C 說得對,其實我前面有調研過的,目前我們的延時主要來自播放器默認在開始播放前有 5s 的緩衝呢,底層的 TCP 協議並非真正的瓶頸呢 !
小 B:…………
## 什麼是 「手段」,什麼是 「目標」?app
小 A:據說我們自研的 video codec 不錯,國際比賽都拿獎了,我本雙月的目標就去完成它的對接和上線吧?
小 B:咱們當前產品和用戶體驗的主要問題有哪些?這個自研的 codec 庫肯定是能夠針對性改善咱們當前遇到的問題麼?
小 A:額,的確沒有想過,我先梳理一下當前亟待改善的 badcase 吧
小 B:好的,記住,開發和對接新功能新 feature 只是手段而已,手段一般是爲解決目標服務的,它不該該直接成爲目標
## 最佳的目標驗收方式是關注最終帶來的收益ide
小 A:個人目標是完成埋點的開發和上線
小 B:你能夠思考更進一步,這套埋點系統最終的目標 「使用者」 是誰 ?它但願解決什麼問題 ?咱們驗收這個任務的目標是否達成,並不該該只是看它是否上線,而是要看它最終是否解決了實際的問題
小 A:嗯嗯,明白了,個人目標應該是以最終產生收益的視角來制定,這樣才能更好地驗證成效,防止雖然系統上線了,可是實際上問題多多徹底不可信不可用
小 B:對的,這一點也包括平時咱們作的一些功能和優化,開發和上線不是目標,實際線上給業務或者用戶帶來了多少收益纔是關鍵
## 目標是要可衡量和評價結果的,而不只僅是 「口號」性能
小 A:咱們今年的目標是創建一套覆蓋全面的測試系統和流程,提升版本輸出的質量
小 B:嗯,這個口號聽起來沒有問題,不過咱們怎麼衡量它的達成狀況,評判它作得好很差呢?
小 A:我想一想,是否可使用 「缺陷逃逸率」 來評價呢?咱們以版本爲週期,關注 「缺陷逃逸漏斗」,看看從 「設計 -> 單元測試 -> 研發自測 -> 自動化測試 -> QA 版本測試 -> 灰度階段 -> 全量階段」 每個環節的缺陷狀況,按期覆盤和歸因,目標是檢驗缺陷是否可以儘量在更早的環節被消滅,從而指導整個流程的迭代和驗收?
小 B:嗯嗯,沒問題~~
## 合理的目標能更好地指導落地的方向和過程單元測試
PM:爲啥咱們總是吹本身的產品抗弱網能力多麼多麼好,可是剛纔的會議過程當中,依然有部分視頻畫面出現了大約 5s 左右的卡頓,以及短暫的語音斷斷續續?
研發:通過排查,肯定是一個突發的網絡極度惡化帶來的問題。mark:一個好的視頻會議產品,並非在全部弱網環境下 100% 不出現任何卡頓或者其餘問題,由於突發的各類網絡惡化並不都能徹底作到提早感知和預測,一個好的產品,優勢在於能快速地響應和恢復,讓總體的體驗在最短的時間內獲得改善,達到一個新的平衡。PS:就如同新冠疫情,不一樣國家的應對錶現,不也有如此差別麼?
PM:贊,理解了,因此咱們合理的目標應該是在常規弱網下不出現影響用戶體驗的問題,而在極端和突發惡化的條件下,追求更快的響應速度和體驗平衡?
研發:嗯嗯,是的。
## 學會使用 「橫向對比」 和 「縱向思考」 來明確目標尺度測試
小 A:我想制定一個 CPU 性能優化的目標,可是到底該定義到什麼值合適呢 ?
小 B:一般目標的制定能夠從兩個維度進行,一個是 「橫向對比」,即在同等條件下,競品作到什麼程度了,咱們的差距有多少,那麼,縮小這個差距值就是咱們的目標尺度;另外一個則是 「縱向思考」,也就是本身跟本身比,深度思考最終咱們指望達成的狀態是什麼樣的?拿 CPU 性能優化來說,咱們最終是指望咱們的產品能在什麼級別和配置的機型上持續流暢運行多久?那麼這個最終的願景就能夠轉化爲咱們目標的尺度
小 A:明白了,多謝建議。
## 用測謊的方式判斷目標是否想清楚了優化
小 A:客戶 PM 明確提出要作這個需求,麻煩排期一下?
小 B:能講講這個需求的背景麼?明顯這個功能跟客戶產品的實際場景並非很 match,爲啥必定要開發這個 ?
小 A:嗯,好的,我去挖一挖……
小 A:客戶 PM 果真沒有深刻思考過,徹底是他們的領導拍腦殼的想法,通過溝通,判斷收益並不明顯,最終決定不上這個功能了
小 B:嗯,還好挖了挖,省掉了無效的人力投入。給你一段個人經驗總結:「判斷一我的是否說謊其中一個辦法是不斷追問,說謊的人每每最後就會放棄,而沒說謊的人會一直堅持最初的說法。同理,判斷一個客戶的需求是否真的靠譜真的想清楚了,亦是如此~~ 服務客戶若是不去挖需求背後的東西,僅知足於技術方案的應答,就永遠成爲不了行業專家~~」
## 目標是要主動對齊的,連帶問題也是咱們的責任ui
小 A:老大,來看看個人目標和計劃 ?
小 B:我看計劃是依賴了小 C 和小 D 兩個團隊及時提供配合,有跟他們對齊目標麼 ?
小 A:沒有呢,到時候由於他們的延期和問題,致使項目失敗,責任不在咱們吧?只要把本身的本分作好就好了吧 ?
小 B:不要有這種想法,最終一件事要作成,是離不開全部相關同窗齊心合力的,你們目標必定要主動對齊,目標是要你們一塊兒背纔有達成的可能,一樣,責任也同樣要一塊兒背,才能真正並肩做戰。
小 A:嗯嗯,明白了。
## 人們常說 「初心」 易忘,其實 「目標」 又未嘗不是
小 A:客戶這個問題你去跟一下吧 ?
小 B:好的,我以爲這個問題,若是去優化一下 xxx 系統,就能很好地避免
小 A:好的,你去推動吧
小 B:嗯,對了,xxx 系統的優化,須要先解決 ccc 模塊的重構,不然不太好改造
小 A:行,你先重構 ccc 模塊吧
小 B:no problem,開幹了……
小 A:幾周過去了,問題有進展了麼 ?
小 B:抱歉,我重構 ccc 模塊的時候,發現 ddd 模塊和 eee 模塊有一些值得優化的點,因此最近重點投入在這裏了
小 A:天啦,你還記得最初客戶的問題是什麼了嗎 ?
小 B:…………額……………
個人故事就講到這裏了,手頭其實還有不少不少,限於篇幅就不一一展開了,相信你們身邊必定還有更多的變種。
我在職場已經呆了不少年,看到了太多的團隊太多的人,天天都忙忙碌碌,加班加點,看似很辛苦,可是實際上卻走了不少不少的彎路,也多多少少作了不少無效功。最近我一直在思考如何才能讓團隊和我的的工做變得更加 「高效」,總結下來可能也並無什麼特別的方法論,最重要的事情莫過於能喚起全部人(特別是各級 leader)的 「目標感」 和 「批判性思惟」,對本身和團隊作的每一件事,想清楚目標是什麼,想清楚預期的收益和評價標準,而且保持對齊與專一。
這篇總結就先寫到這裏了,固然,知易行難,你們有任何實踐的問題和困難,歡迎隨時來信 lujun.hust@gmail.com 交流,也能夠關注個人微信公衆號 @Jhuster 最新的資訊。