《軟件開發(fā)本質(zhì)論》讀后感

這本書講的不是技術(shù),主要講的是開發(fā)過程,屬于軟技能。

image.png

我先說一下這本書說了些什么,以上這個(gè)金字塔式的圖就是貫穿全文的邏輯,書中并沒有正面解釋這個(gè)金字塔模型的意思(我估計(jì)是翻譯的問題),我按自己的理解解釋(瞎扯)一下。

首先看金字塔內(nèi)的幾點(diǎn),從上至下是「價(jià)值」一直到「指導(dǎo)」,就是每個(gè)軟件項(xiàng)目或者版本從計(jì)劃一直到落地實(shí)施的思考過程;而下面每一項(xiàng)左右都有一個(gè)描述,左邊稱之為愿景,右邊就是我們?yōu)榱诉_(dá)到愿景需要具體輸出一些什么,下面我的解釋:

  • 「價(jià)值」,每個(gè)項(xiàng)目肯定都會(huì)有目標(biāo),甚至是愿景,就是需求方想要的東西,這個(gè)稱之為價(jià)值。軟件發(fā)布后看是否成功,其實(shí)就是看結(jié)果跟價(jià)值的匹配度有多少。
  • 「質(zhì)量」,這個(gè)是每個(gè)軟件的基礎(chǔ),如果軟件的質(zhì)量達(dá)到及格線以上,才有評(píng)判價(jià)值的可能;否則一個(gè)質(zhì)量欠佳的軟件,平時(shí)日常就陷于救火狀態(tài),那就沒有時(shí)間追求所謂的價(jià)值。高質(zhì)量的愿景就是「零缺陷」,為了盡可能每一個(gè)發(fā)布的版本都要無(wú)限靠近「零缺陷」,那就需要「設(shè)計(jì)良好」來(lái)支撐。
  • 「劃分」,保證每次輸出的質(zhì)量要好的話,那每次輸出版本的功能劃分就必須要「小」,將功能特性劃分為小塊,使每一塊盡可能小,前提是它們?nèi)匀弧竿暾沟男」δ?,而且這個(gè)小功能是按價(jià)值優(yōu)先排序的。這樣就能夠盡早地構(gòu)建出有用的產(chǎn)品,并在交付日期到來(lái)之前對(duì)產(chǎn)品進(jìn)行優(yōu)化與提升。
  • 「構(gòu)建」,通過逐個(gè)實(shí)現(xiàn)功能特性來(lái)構(gòu)建產(chǎn)品,這樣就能夠頻繁地進(jìn)行價(jià)值的交付,這個(gè)構(gòu)建出來(lái)的產(chǎn)品功能是以「價(jià)值優(yōu)先」作為依托;同時(shí)能夠盡早、經(jīng)常地看到項(xiàng)目的進(jìn)展,看得見才能真正「逐漸完善產(chǎn)品」。
  • 「計(jì)劃」,計(jì)劃重點(diǎn)在于「持續(xù)」計(jì)劃,因?yàn)槲覀儼讶蝿?wù)切成小的,所以我們的計(jì)劃只能把當(dāng)前的版本做詳細(xì),后續(xù)的我們需要「持續(xù)」做計(jì)劃,有了計(jì)劃我們就知道「接下來(lái)做什么」。
  • 「組織」,為了更好地完成工作,需要對(duì)「團(tuán)隊(duì)」進(jìn)行組織。而團(tuán)隊(duì)分工,就是對(duì)人員與技能的分工。
  • 「指導(dǎo)」,通過組建以創(chuàng)造價(jià)值為己任的團(tuán)隊(duì)來(lái)實(shí)現(xiàn)價(jià)值的創(chuàng)造,因此需要確保團(tuán)隊(duì)成員知道客戶需要什么,以及客戶留給我們的開發(fā)時(shí)間。我們通過觀察實(shí)際構(gòu)建出的產(chǎn)品來(lái)對(duì)團(tuán)隊(duì)的工作進(jìn)行指導(dǎo)。

看上面的圖金字塔,「價(jià)值」在頂端,從視覺上也感覺到這個(gè)概念的重要性,是所有事情的起源。其實(shí)估計(jì)大家都知道價(jià)值的作用,但我們經(jīng)常在執(zhí)行的過程中,特別是過程時(shí)間比較長(zhǎng)的時(shí)候,就容易會(huì)忘記了價(jià)值的初衷,導(dǎo)致方向的偏移。

價(jià)值肯定跟用戶是有相關(guān)性的,如果做事發(fā)生偏移,肯定是價(jià)值目的有所偏差,原因可能是目的跟用戶無(wú)關(guān),可能甚至是用戶都是錯(cuò)的。

我們搞技術(shù)的肯定一般會(huì)更容易遇到偏移價(jià)值這個(gè)問題,我認(rèn)為有一些原因:

  • 技術(shù)人員通常離真實(shí)用戶都有點(diǎn)距離,甚至很少直接接觸到用戶,需求在傳遞可能已經(jīng)被轉(zhuǎn)了幾手,甚至已經(jīng)面目全非。技術(shù)人員遇到一些技術(shù)困難或者不合理的要求時(shí),就很容易聚焦到已經(jīng)設(shè)定眼前的問題中,也就是鉆牛角尖。
  • 技術(shù)人員在實(shí)現(xiàn)方案上本來(lái)就已經(jīng)要花費(fèi)大量精力,相應(yīng)考慮價(jià)值的精力就會(huì)變少。所以技術(shù)人員通常會(huì)把方案落地、需求實(shí)現(xiàn)作為目標(biāo),而容易忽略人的因素。
  • 我們it人員其實(shí)屬于服務(wù)業(yè),其實(shí)跟去餐廳的服務(wù)員類似的,只是工種不同罷了。服務(wù)對(duì)象是「人」,我們的產(chǎn)出實(shí)際都是跟人用的,有人用起來(lái)有數(shù)據(jù)才彰顯it人員的服務(wù)價(jià)值,但干it的都以為自己干的高科技,都覺得出了問題都是用戶“不會(huì)用”、“用戶不懂”,沒意識(shí)到其實(shí)自己也是服務(wù)行業(yè),不管是“不會(huì)用”還是“不懂”,其實(shí)就是價(jià)值沒有體現(xiàn)出來(lái)的癥狀。

舉一個(gè)常見的例子,大家可以對(duì)號(hào)入座感受一下,我自己也經(jīng)常犯這些毛病。

  • 程序員看到了某個(gè)流行的架構(gòu)或者語(yǔ)言,就很想有沖動(dòng)在項(xiàng)目中應(yīng)用,繼而大刀闊斧重構(gòu)一番。我是過來(lái)人非常明白這種心情,但實(shí)際卻不是那么容易的事。新技術(shù)不單只考慮是否適合實(shí)現(xiàn)方案,還要考慮維護(hù)成本、生態(tài)成熟度、能不能招到人、跟公司內(nèi)部契合度、配套工具是否成熟等等,這些每一個(gè)的考慮項(xiàng),在需求方那里稱為「風(fēng)險(xiǎn)」,風(fēng)險(xiǎn)就是實(shí)現(xiàn)不了用戶價(jià)值的可能性。不是說不能用新技術(shù),但我們要以風(fēng)險(xiǎn)的概念去考慮新技術(shù)使用的可行性,并不是純粹自己的練手,讓用戶為風(fēng)險(xiǎn)買單,練手也需要講「武德」。
  • 產(chǎn)品經(jīng)理做需求的時(shí)候,通常畫的第一個(gè)圖就是“用例圖”,用例圖上面主要有2個(gè)標(biāo)識(shí):用戶是誰(shuí)、用什么功能,其實(shí)這就是一個(gè)項(xiàng)目的可視化的核心價(jià)值。我們做小項(xiàng)目或者臨時(shí)需求的時(shí)候很可能沒這張圖,有時(shí)候就會(huì)出現(xiàn)功能和用戶理解脫節(jié),我們技術(shù)人員一個(gè)勁討論功能怎么實(shí)現(xiàn),結(jié)果連這個(gè)功能給誰(shuí)用的都可能不清楚。
  • 項(xiàng)目需求來(lái)了,我們需要設(shè)計(jì)方案和估時(shí),但花了很多時(shí)間排期用戶都不滿意,想要的東西都太慢了;我們技術(shù)也很無(wú)奈,就幾桿槍又不可能隨意加人也不能隨意承諾,做計(jì)劃也不能把加班就計(jì)劃進(jìn)去,這都是緩沖時(shí)間呢,也不能無(wú)中生有一些生產(chǎn)力吧,就這樣進(jìn)了一個(gè)死胡同。這個(gè)時(shí)候我們可以回到原點(diǎn),看看用戶其實(shí)最在意的是什么,究竟最優(yōu)先的要解決什么問題,技術(shù)人員跟用戶在一條戰(zhàn)線而不是對(duì)立面,才可能把問題化解。

我們?cè)陂_發(fā)過程中,如果遇到任何異樣的時(shí)候,其實(shí)可以嘗試回到原點(diǎn),看看自己是否清楚自己做的事情價(jià)值在哪里,究竟為了什么而做;特別是對(duì)用戶的價(jià)值,可以多跟用戶確認(rèn)一下大家對(duì)這個(gè)項(xiàng)目的價(jià)值是否有共識(shí)。有時(shí)候用戶自己也不知道怎么表達(dá)這個(gè)價(jià)值表達(dá)有誤、表達(dá)得不專業(yè),甚至?xí)锌赡芤驗(yàn)槟承┰蜓谏w了一些真實(shí)的價(jià)值,所以需要多問幾層“為什么”來(lái)挖掘才能找到真正的價(jià)值所在。

最后說一下,看得見的事情才能管理得到,看不見說不明白的事情就容易放飛自我脫離軌道。

價(jià)值是要通過事實(shí)來(lái)證明和呈現(xiàn),而通常事實(shí)的痕跡就是數(shù)據(jù)。所以我們做項(xiàng)目的時(shí)候,要考慮如何從數(shù)據(jù)上證明自己帶來(lái)了價(jià)值。

  • 業(yè)務(wù)系統(tǒng)做一個(gè)功能,我們需要埋點(diǎn)統(tǒng)計(jì)用戶行為,有人用的嗎。
  • 優(yōu)化做性能對(duì)比,優(yōu)化前后數(shù)值都是多少,效果好不好。
  • 有一些量化不出來(lái)的,就需要進(jìn)一步細(xì)化可以量化的目的,比如重構(gòu)就不好量化,但重構(gòu)是為了減少運(yùn)維時(shí)間,那我們就有意識(shí)統(tǒng)計(jì)故障維護(hù)時(shí)間,來(lái)對(duì)比重構(gòu)前后的效果。

我看過羅翔老師的視頻和書,他多次提的一句話是“人是目的,不是手段”。

對(duì)應(yīng)技術(shù)而言,技術(shù)都不是目的,而是手段,用戶價(jià)值才是目的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容