從軟件開發(fā)的“業(yè)務(wù)負(fù)債”,聊到“身體負(fù)債”

0 評論 1584 瀏覽 7 收藏 27 分鐘

對于業(yè)務(wù)同學(xué),不管是從0到1完成一個項目,還是從1到2 迭代或者維護(hù)老系統(tǒng),多多少少會因為客觀或非客觀因素,產(chǎn)生一些當(dāng)時可控的“負(fù)債”,隨著時間的積累,那些當(dāng)時以為可控的“負(fù)債”,慢慢“長大”,使得在項目隨后發(fā)展的過程中,復(fù)雜度越來越高、潛在的風(fēng)險越來越大。本文將闡述我對于業(yè)務(wù)負(fù)債以及身體負(fù)債的一些思考。

一、負(fù)債的合理性與必然性

這個標(biāo)題乍一看,會讓人感覺有點(diǎn)奇怪,“負(fù)債”合理且必然?這里先拋出一個觀點(diǎn):解決負(fù)債的前提是“認(rèn)可”負(fù)債,看見“不合理”事物的合理性是解決負(fù)債的前提,下來我依次談?wù)勱P(guān)于負(fù)債的合理性和必然性。

1.1 熵增定律引起的必然性趨勢

首先熵增定律的定義是:在孤立系統(tǒng)中總是趨向熵增狀態(tài),最終達(dá)到熵的最大狀態(tài),也就是系統(tǒng)的最混亂無序狀態(tài)。例如房間很久不打掃,就會布滿灰塵;長久不騎的單車會生銹;交通系統(tǒng)臨時癱瘓,車輛很快就會堵死等等。熵增定律同時適用于一個系統(tǒng)的演化規(guī)律。我們?yōu)榱藢埂跋到y(tǒng)”的混亂,為此做出的努力,可以看成了“逆熵”的過程。

想想我們?yōu)槭裁葱枰毩?xí)“正念”、“冥想”?,本質(zhì)也是一種逆熵的行為,如果不加控制,“精神熵”會增大,我們會成為“思維”的奴隸,被思維反噬,我們希望思維是有序的,因此我們?nèi)フ?、去看書,去整理我們的思緒。(思考:想想如何控制自己不去想一些糟糕的事?)

為什么我們要去健身?,本質(zhì)上也是逆熵的過程,身體隨著時間慢慢衰老、身體激素水平、代謝水平開始慢慢降低、會對新鮮事情失去興趣,會覺得沒意思,這不是你的問題,因為我們的身體同樣也遵循熵增定律。去正念是對抗“精神熵”、去健身是對抗“身體熵”。

從熵增定律看軟件系統(tǒng),我們會得到一個結(jié)論:系統(tǒng)的復(fù)雜度(混亂程度)隨著時間的推移,必然越來越高,復(fù)雜度導(dǎo)致了業(yè)務(wù)的開發(fā)、測試、運(yùn)維各個階段負(fù)債增多,對于軟件設(shè)計的目的,可以總結(jié)為“逆熵的過程”。

1.2 因果律引起的合理性結(jié)果

因果率是事物發(fā)展的基本規(guī)律之一,在分析論中,有一個很知名的方法,叫5why分析法,意思是要看清楚一件事的本質(zhì),可以問自己五個為什么。我們舉幾個栗子:

問題:我最近狀態(tài)很不好。

第一個為什么:為什么我狀態(tài)不好?

答:因為我睡得太晚了,睡覺前老是看手機(jī)?

第二個為什么:為什么我老是看手機(jī),到很晚才睡覺?

答:因為我工作了一天,辛苦了一天,還沒有一些自己的娛樂,我想晚上的時間才是真正屬于自己的。(在潛意識里,你不想結(jié)束這一天)

第三個為什么:為什么我不想結(jié)束這一天,直接去睡覺?

答:原因是:我的生活被各種事情“打擾”,我一直處于一個”中斷”的狀態(tài),到了夜晚,我才可以專心做自己的事。

第四個為什么:為什么我的生活總是很凌亂,被很多人牽著走?因為我對于一天的要做的事和時間分配沒有一個清晰的計劃,換句話說,我也不知道今天要做什么,別人讓你做什么做什么。

第五個為什么:為什么我沒有一個很強(qiáng)的時間管理,總是被事拉著走?

答:…

看看這個demo,對于第一個why,大部分人都會告訴自己,早早睡覺就好啦,少看手機(jī),到這里問題已經(jīng)結(jié)束。事實證明,這很難做到,因為第一個why并沒有找到問題核心的原因。到第五個為什么,我們想到了時間管理。

當(dāng)然這只是一種路徑,大家可以運(yùn)用這種方法,不妨問自己幾個問題,逼迫自己去想一下問題的根源在哪里。在這里我想分享一下我的心得:對于大多數(shù)的問題的解決方案,最后的最后可能都會集中在三個問題上:如何做時間管理、如何做精力管理、如何做情緒管理。

1.2.1. 從具體到抽象

我們現(xiàn)在把上述的例子抽象化,從個性中找共性,嘗試得到一般性規(guī)律。

如下圖所示,我們可以把因果邏輯抽象成最基本的單元,事件A導(dǎo)致事件B,通俗的講,事件A就是時間B的第一個為什么。

如果我們再次追問原因,就可以把這個過程抽象成下圖,我們把它稱為一條因果邏輯鏈,或者思維深度,當(dāng)一件事發(fā)生,往前追溯的事件數(shù)量越大,說明思維邏輯越深。

當(dāng)然,實際的情況可能復(fù)雜的多,因為一件事情的發(fā)生,不能完全歸結(jié)于之前的一件事,而是之前所有事件的加權(quán)和,找到問題本質(zhì)的難點(diǎn)其實是:找到影響因素最大的那個事件,如果判斷失誤,在錯誤的結(jié)論上,越跑越遠(yuǎn),結(jié)果往往會更加糟糕,這就是,方向錯了,越努力,死得越快。

如果以上叫做追憶往昔,那么下來我們想說說展望未來, 如果我們把視野看向未來,會得到以下的圖,事件B會對未來的事件產(chǎn)生加權(quán)后的影響。如果把5why分析法泛化一下,我們可以這樣問自己,今天做的事,會對明天產(chǎn)生什么樣的影響,它會產(chǎn)生什么連鎖反應(yīng)。

現(xiàn)在我們把過去的因果和未來的因果放在一起看看就得到了如下圖。

因果邏輯鏈?zhǔn)且粋€很好的工具,它逼迫我們?nèi)ニ伎紡那埃菜伎嘉磥?,找到事情的本源,分析未來的趨勢?/p>

面對軟件工程中的種種負(fù)債,需要用一種辯證且開放的心態(tài)看待,看到負(fù)債發(fā)生的必然性,通過深度思考,找到邏輯鏈條上那個最大的影響因素,肯定“負(fù)債”的合理性,是有效解決負(fù)債的前提。

1.3 康威定律帶來的溝通負(fù)債

康威定律揭示了組織架構(gòu)溝通方式和系統(tǒng)設(shè)計之間的密切聯(lián)系,對于復(fù)雜的系統(tǒng),系統(tǒng)設(shè)計離不開人與人之間的溝通,解決好了人與人的溝通問題,很大程度上就解決了系統(tǒng)設(shè)計問題。下面我們來論述溝通帶來的負(fù)債。

1.3.1 一對一溝通

針對一對一的溝通模式,我們可以借助通信系統(tǒng)中的通信模型很好地抽象這個過程。

從這個圖中,我們可以看到,如果想讓信息100%的無損傳遞,需要控制二件事:

  1. 編碼系統(tǒng)和解碼系統(tǒng)需要用一套。這就可以解釋不同背景和成長環(huán)境下的人對于同一句話有著不同的理解,因為他們有著不同的編碼和解碼系統(tǒng)!
  2. 信息在傳遞過程中,需要有一種對抗噪聲的算法,防止”壞人”篡改信息。

以上兩點(diǎn),在通信工程實踐中是有最優(yōu)解的,但是把信息源和接收源換成人,這件事就變得異常的困難,我們沒法用一套標(biāo)準(zhǔn)的“規(guī)則”要求人。從中我們可以得到一個結(jié)論:溝通是有損的,這是業(yè)務(wù)負(fù)債的一大來源。

1.3.2 多對多溝通

多對多溝通是一個更加復(fù)雜的場景,在多系統(tǒng)中如何讓信息有效的傳遞?(這像不像分布式一致性問題,推薦閱讀paxos、raft算法),大家都經(jīng)歷過這種場景:開會中,我們希望對一個問題的答案或者解法得到一個共識,如下圖所示:

  • 當(dāng)開會人數(shù)是3時,溝通次數(shù)最少是3*(3-1)/2=3
  • 當(dāng)開會人數(shù)是4時,溝通次數(shù)最少是4*(4-1)/2=6
  • 當(dāng)開會人數(shù)是5時,溝通次數(shù)最少是5*(5-1)/2=15

當(dāng)開會人數(shù)是n時,溝通次數(shù)最少是n*(n-1)/2,這是可以得到一個炸裂的結(jié)論:溝通的復(fù)雜度是O(n2),也就是溝通的復(fù)雜度會隨著人數(shù)的增加,呈現(xiàn)指數(shù)增長趨勢。這個結(jié)論是悲傷的,悲傷的點(diǎn)在于:

  • 當(dāng)你試圖通過人員增多解決問題時,你可能會把問題更加復(fù)雜化!
  • 項目的復(fù)雜度比項目的體量增長要快!

如上圖所示:直線代表著通過增加人數(shù)而帶來的勞動力,曲線代表著增加人數(shù)帶來的復(fù)雜度,在[0,臨界點(diǎn)]區(qū)間內(nèi),問題整體可控,在[臨界點(diǎn),+∞]區(qū)間內(nèi),復(fù)雜度變高,債務(wù)出現(xiàn)。(問題:如何找到臨界點(diǎn)呢?)

以上的情況還是在信息可靠傳輸?shù)那闆r下進(jìn)行,如果加上損耗因子,我們會得到溝通帶來的損耗也是指數(shù)級的:如果損耗因子為k(0<k<1),損耗量:k*n*(n-1)/2,為了彌補(bǔ)這種損耗,往往還有加入更多的溝通才可以解決。這個案例很好地解釋了,小團(tuán)隊相比大團(tuán)隊的優(yōu)勢。

如果把人換成系統(tǒng),這不就是微服務(wù)分布式系統(tǒng)的通信問題,在中臺設(shè)計思路上,偏向于使用領(lǐng)域建模的方式把微服務(wù)拆分成邊界明確的小模塊,提高服用能力,但是這也帶來了服務(wù)數(shù)量爆炸、運(yùn)維困難的問題。(這真是一種trade off?。?/p>

總結(jié):溝通有損和組織成員溝通帶來的復(fù)雜度,是引起業(yè)務(wù)負(fù)債的另一大原因。

二、如何有序地消除負(fù)債 – 結(jié)構(gòu)化思考

當(dāng)我們需要解決一個復(fù)雜問題時,不妨從一個具體且相似的問題回答,找找相似點(diǎn)。

比如:如何減脂?說實話,這個問題也困擾了我很久,在減脂的路上反反復(fù)復(fù),相愛相殺??偨Y(jié)一下,有這么幾點(diǎn)困難:

減脂的流派很多,網(wǎng)上的知識很零碎,對于小白來說,壓根不知道聽誰的,很難找到適合自己的方法(結(jié)構(gòu)化思考)

減脂并非一朝一夕,你找不到一種固定的方法,一招吃遍天。不同的階段需要使用不同的方法。

大部分同學(xué)減脂,是為了瘦,但是瘦不是目的,健康才是。(目標(biāo)一開始就錯了,一開始就背道而馳)

對于以上三個問題,不難聯(lián)想到:結(jié)構(gòu)化思考,系統(tǒng)化思考。

問題會變化,解決問題的方式也需要變化,需要建立一個良好的反饋機(jī)制。

搞清楚為什么做,比怎么做更重要。

2.1. 結(jié)構(gòu)化思考

2.1.1 結(jié)構(gòu)化表達(dá)

結(jié)構(gòu)化思考最重要的就是:把問題、知識、方法、靈感、或者步驟 …結(jié)構(gòu)化的表達(dá)出來、變成你心中的一棵樹。

比如針對業(yè)務(wù)開發(fā)流程中可能引起的負(fù)債這一問題,可以把問題聚攏在下圖中:

針對不同時期,不同階段的問題,進(jìn)行分類!進(jìn)行分類!進(jìn)行分類!重要的事說三遍,如果把不同的問題,看成是一類問題,會出事!

當(dāng)歸類完成后,就需要針對性的,有主次地解決。在“資源”一定的情況下,需要先抓住主要矛盾,抓大放小,比如現(xiàn)網(wǎng)安全問題要比代碼規(guī)范問題優(yōu)先級更高。

2.1.2 透過現(xiàn)象看本質(zhì)

在思考《思考,快與慢》一書中,作者清晰的描述了,人的兩套系統(tǒng),即系統(tǒng)1、和系統(tǒng)2,系統(tǒng)1的運(yùn)作是無意識且快速的,不需要去消耗注意力,如判斷兩個蘋果的大小?回答1+1=幾?回家的路該怎么走?而系統(tǒng)2則是高度多樣化的,并且需要消耗大量的注意力,如,判斷股票的買賣時機(jī)、在嘈雜的環(huán)境中聽清某個人說了什么、一篇文章作者的意圖……

作者還提到了幾個比較有意思的點(diǎn):

  • 系統(tǒng)1是不善于質(zhì)疑的,人們會更傾向于憑借直覺解決生活中的問題(非理性思考)
  • 人們更愿意用一個簡單易懂的道理來解釋一個復(fù)雜問題。
  • 當(dāng)系統(tǒng)1遇到困難時,才會激活系統(tǒng)2運(yùn)行。

結(jié)合書中作者提到的點(diǎn),針對解決業(yè)務(wù)負(fù)債的問題,我們需要摒棄系統(tǒng)1的常態(tài)化、慣性化思維模式、激發(fā)系統(tǒng)2的思維模式,這需要克服自身的惰性,并需要大量的時間進(jìn)行深度思考,找到事情的“真相”。

2.2. 學(xué)習(xí)生物的智慧

人的一生的三分之一都用在睡眠上,有很長一段時間我在想人為什么要睡覺呢?不睡覺是不是就可以做更多的事,是不是就可以跑在前頭,直到一個無意的機(jī)會讀完了《睡眠革命》,才理解了睡眠的意義。

人的身體很像一個計算機(jī)系統(tǒng),每個器官各司其職,協(xié)同完成一天的工作。日常生活中,大腦是一個極其活躍的器官,在運(yùn)行期間,會產(chǎn)生大量的垃圾:淀粉樣β蛋白,在大腦緊張工作時,大腦會將清理工作推遲,只有到了睡眠時,尤其是深度睡眠時,大腦才會切換到清理模式。

換句話說:睡眠實際上是大腦的一種消除“負(fù)債”的有效手段(身體對抗熵的過程),這里還隱含了一個很重要的點(diǎn):定期清理。身體不會一直累積負(fù)債,而是在合適的周期內(nèi)定期處理。這也可以回答如何長期睡眠不足,身體沒辦法消除負(fù)債,時間久了,人會生病,系統(tǒng)也會“生病”。

下圖左邊是抽象了身體通過睡眠對抗負(fù)債的一個過程,右圖是業(yè)務(wù)償還負(fù)債的一個對應(yīng)過程,這對于我們的啟發(fā)是:定期對業(yè)務(wù)進(jìn)行復(fù)盤,找到負(fù)債,在可控的情況下解決負(fù)債,是一個不錯的選擇。(在問題沒有發(fā)生的時候,解決問題,代價最?。?/p>

2.3. 先扛住,再優(yōu)化,抗住了,優(yōu)化呢?

你有沒有遇到過這種場景:

產(chǎn)品側(cè)同學(xué):業(yè)務(wù)同學(xué)緊急提出了一個需求,需要馬上支持,在下周三前上線。

技術(shù)側(cè)同學(xué):按常規(guī)的做法需要a 、b、c,但是時間可能來不及,有一個快速的短期方案可以支持,但這種方案會產(chǎn)生a、b、c目前可以”容忍”的問題。經(jīng)過了一番討論,決定先采取短期快速的方案優(yōu)支持業(yè)務(wù),等支持完業(yè)務(wù)后,再優(yōu)化解決。

問題往往就出現(xiàn)在業(yè)務(wù)成功支持以后,我們還能不能想起當(dāng)時“妥協(xié)”而產(chǎn)生的負(fù)債?及時優(yōu)化,而不是讓“負(fù)債”長大。

這是困難的,在基因里,人們會對“壞”的事情,更加敏感,需要活下去,經(jīng)歷了“事故”、經(jīng)歷了“失敗”,人們往往更愿意去復(fù)盤,去優(yōu)化。但是面對“成功”,人們往往會沉靜在喜悅中,這個時候“劈”你的雷可能已經(jīng)上路了。面對成功的項目,需要慶幸,需要感謝,感謝供電局沒有停電。

三、從業(yè)務(wù)負(fù)債看身體負(fù)債

如果說業(yè)務(wù)負(fù)債,帶來的“痛苦”還可以“容忍”,那身體上的負(fù)債呢?系統(tǒng)掛了,可以修復(fù)bug、重新上線,身體掛了,什么都沒了。這一章我會闡述對于身體負(fù)債的一些思考。

3.1 身體系統(tǒng)與計算機(jī)系統(tǒng)的相似性

身體和系統(tǒng)有很多的相似性,每個人的身體好似一個分布式系統(tǒng),每個器官各司其職,大腦類似cpu、眼睛、耳朵就像是io設(shè)備、食物類似于電…所以我在思考,能不能使用管理計算機(jī)的方式管理我們自己的身體,使身體也“高可靠”、“高可用”。

3.1.1 從運(yùn)維方法看身體管理

在我看來:如何讓身體保持良好的“狀態(tài)”和如何運(yùn)維好一個系統(tǒng)?是同一個問題。身體這個“系統(tǒng)”,在我們出生的時候就已經(jīng)被創(chuàng)造,在出生到死亡之間,可以說一直處于一個運(yùn)行維護(hù)的狀態(tài)。

有的人維護(hù)的好,可以和所處的環(huán)境達(dá)到一個“和”的狀態(tài),愉快且充實的生活著,相反有的人維護(hù)的不好,生活質(zhì)量變差,“精神熵”增大,負(fù)面情緒將控制你的生活?;谙到y(tǒng)的相似性,那我們能不能借鑒常用的運(yùn)維手段管理身體這個大系統(tǒng)?答案是:完全可以!

3.1.2. 身體也需要一個監(jiān)控系統(tǒng)

對于運(yùn)維,要去了解一個系統(tǒng)的好壞,最直接的就是看整個系統(tǒng)的關(guān)鍵監(jiān)控曲線,比如整體服務(wù)的 SLA、關(guān)鍵接口的成功率、超時率等等,身體也是如此,我們?nèi)ヅ袛嘧约旱纳眢w狀態(tài)不應(yīng)該是靠感覺,而是靠數(shù)據(jù)、對比一個周期與上個周期的數(shù)據(jù)、才可以說,ok我身體變好了、我身體不如以前了。

之前有一則新聞:Kernel和OS Fund的CEO,布萊恩現(xiàn)在每年至少花費(fèi)200萬美元,聘請30多名醫(yī)生和健康專家監(jiān)測他身體的每一個機(jī)能,對于普通人,我們不可能做到這種地步,但是還是有很多可以操作的方法,比如以下三點(diǎn)即使每個人都可以輕松做到的。

定期體檢:

使用睡眠監(jiān)測軟件,監(jiān)控心率、血氧、睡眠周期(這里推薦autosleep)

定期記錄體脂和體重:

定期通過監(jiān)控的數(shù)據(jù)去review,你會發(fā)現(xiàn)很多神奇的事情,這讓你會更加了解你的身體?;跀?shù)據(jù),而不是基于感覺。

3.1.3. 身體也需要一個日志系統(tǒng)

日志系統(tǒng)會幫助收集系統(tǒng)的運(yùn)作過程,方便我們?nèi)ザ▎柡团挪閱栴},身體也一樣!

小的時候應(yīng)該都有寫日記的習(xí)慣,在一個風(fēng)和日麗的下午….,ok,這里當(dāng)然說的不是這種日記,而是記錄你身體狀態(tài)的日記。我們每天可以自己去記錄一些身體的關(guān)鍵數(shù)據(jù),用來定期的復(fù)盤。我打個樣,如下圖:

剛開始我們可以降低難度,每天就記錄睡眠的時間和體重,主要是培養(yǎng)一個記錄的習(xí)慣,可能一天兩天你感覺不到變化,但是一個月兩個月,你就可以在一個長時間維度上,感受到你身體的變化。你會感受到,因為你每天健康飲食,給你自己帶來的好處。

3.2 如何有序的消除身體負(fù)債?

這里我分兩個方面去回答這個問題。

3.2.1 反饋機(jī)制

每個人的身體狀態(tài)和精神狀態(tài)是不同的,沒有一個固定的公式告訴你應(yīng)該怎么去做,你需要自己去優(yōu)化、去迭代,沒有只要做了什么就成功的案例,網(wǎng)上的方法也是零碎的,有的人講你要有氧、有的人講你要吃水煮、有的人說是你“濕氣”大….這些都是在一個小范圍內(nèi)去討論問題,身體是一個系統(tǒng)工程,需要系統(tǒng)的方法論解決。

解決的前提是建立良好的反饋機(jī)制,良好的反饋機(jī)制又建立在數(shù)據(jù)和復(fù)盤上,我們需要通過數(shù)據(jù),而非感覺去判斷一個身體的健康走向。數(shù)據(jù)又建立在一個習(xí)慣上,記錄身體在某個點(diǎn)的狀態(tài),如,睡眠、體重、飲食等等等…

如果你是小白,你可以把記錄的數(shù)據(jù)定期拿給醫(yī)生,或者專業(yè)的運(yùn)動營養(yǎng)師看,讓他們給你一些專業(yè)的意見、計劃上的調(diào)整。當(dāng)你了解自己以后,你就可以自己去微調(diào)你的計劃。切記不要走極端,類似不吃飯了、突然去運(yùn)動..物極必反,每個人自己最佳的平衡點(diǎn)需要自己去找,沒人可以幫助你。

3.2.2 心理健康更加重要

情緒對人的影響非常大,中醫(yī)上講大喜、大悲都是有害的,情緒化很容易讓人的心被困住,沒有強(qiáng)大的能量很難走出來,原生家庭可能會是人的情緒的很大的一個影響因素、這里推薦大家閱讀《被討厭的勇氣》、《當(dāng)下的力量》,里面有一些可操作的方法去加強(qiáng)你的心理建設(shè)。

優(yōu)化心態(tài)是一個很難的課題,這里我的一些建議是去看書,尤其是心理學(xué)和歷史學(xué),世上都是重復(fù)的事,你的問題,別人已經(jīng)總結(jié)好了方法,你拿來用就好。在一個長時間維度下,你去看事件,可能會給你一些不同的感受。

去正念,和鍛煉身體一樣,正念是鍛煉思維,人是很難控制自己的思維的,人創(chuàng)造了思維,又被思維困在其中。

總結(jié)

負(fù)債不可怕、擁抱負(fù)債吧,積極的解決可能是唯一的方法,最后希望大家都可以有序的、有節(jié)奏的解決自己的身體負(fù)債,業(yè)務(wù)負(fù)債。

作者:blithelv,騰訊后臺開發(fā)工程師

來源公眾號:騰訊大講堂(ID:TX_DJT ),聚焦前沿,打造互聯(lián)網(wǎng)人的高光時刻

本文由人人都是產(chǎn)品經(jīng)理合作媒體 @騰訊大講堂 授權(quán)發(fā)布,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!