從技術(shù)打磨到產(chǎn)品驗證:讀《程序員修煉之道》的務(wù)實之道

在編程世界里怖亭,技術(shù)的打磨往往像是工匠雕琢作品搀擂,但若無法轉(zhuǎn)化為產(chǎn)品的成功,所有的精致都不過是空中樓閣。讀《程序員修煉之道》時潭千,我深刻意識到国撵,務(wù)實不僅僅是技術(shù)的選擇怀伦,更是產(chǎn)品迭代和商業(yè)模式成功的關(guān)鍵柳琢。

在現(xiàn)代社會,全身心投入之前盅抚,測試想法并得到反饋是至關(guān)重要的漠魏。由用戶參與評判,夠好的軟件就是最好的妄均,而不能過度追求完美柱锹。好改,能適應(yīng)使用者的就是好的設(shè)計丛晦。

貫穿商業(yè)模式奕纫、產(chǎn)品到軟件設(shè)計,有一個原則就是其實誰也沒有標準答案烫沙,盡早交付匹层,通過持續(xù)的收集信息,不斷調(diào)整方向瞄準锌蓄,直到擊中升筏,這是最重要的原則。作者在書中嚴格地區(qū)分了原型和曳光彈這兩種探索正確產(chǎn)品方向的方法瘸爽。

從技藝精進到產(chǎn)品突破:刻意練習(xí)的反思

有幾年的時間您访,我自己對于刻意練習(xí)非常偏執(zhí),在技巧剪决、熟練度和手藝的提升上確實有很大的收獲灵汪,但是當(dāng)時感受到兩個問題。

首先柑潦,光是單純的磨練技藝享言,是無法帶來產(chǎn)品和商業(yè)模式上的成功的。過度的修飾和精煉很多時候反而會消磨前進的動力渗鬼。相比之下览露,使用曳光彈,快速原型譬胎、溝通反饋差牛,數(shù)據(jù)驅(qū)動命锄,才是更好的解決方案。

其次偏化,就是缺乏對前沿知識的關(guān)注脐恩,總是在特定的波段上溫故已有知識,有種停滯的感覺侦讨。這樣會想被盈,大學(xué)時,一個學(xué)期十八門課搭伤,定期考試,用產(chǎn)出來推動的學(xué)習(xí)的模式袜瞬,雖然不那么舒適怜俐,但是這種方式的確更適合學(xué)習(xí)大量新知識。

像專業(yè)投資理財一樣學(xué)習(xí)

對于閱讀技術(shù)書籍邓尤,其實作者的要求不是很高拍鲤,在廣泛閱讀的同時,一個月一本技術(shù)書是基準汞扎。我覺得還可以在一年里季稳,集中性的再抽出一個月時間,大量閱讀技術(shù)書澈魄,效果也會很好景鼠,可以嘗試一下。

作者非常務(wù)實的思想痹扇,還體現(xiàn)在铛漓,對于成功投資原則的理解,完全不亞于專業(yè)書籍和理財專家鲫构。我們對于專業(yè)技術(shù)浓恶,計算機軟件工程和科學(xué)知識,也應(yīng)該這樣投資结笨。

正規(guī)投資者有定期投資的習(xí)慣包晰,多樣化是長線成功的關(guān)鍵,聰明的投資者會平衡保守型和高風(fēng)險高回報型投資組合炕吸,投資者用低買高賣來獲得最大的回報伐憾;同時還應(yīng)該定期審查和重新平衡投資組合。

正交性與DRY原則

務(wù)實的軟件開發(fā)方法中算途,如果說有一條最重要的原則塞耕,我覺得一定是正交性。正交可以帶來低耦合嘴瓤,分離關(guān)注點扫外、單一職責(zé)都是正交的體現(xiàn)莉钙。微服務(wù)同樣也是在部署層面和團隊職能上的正交。

DRY(不要重復(fù)自己)筛谚,也是很重要的原則磁玉。但是我們知道,在軟件開發(fā)中復(fù)用不是最重要的事驾讲,關(guān)鍵是語義清晰蚊伞,知識必須單一、明確吮铭、權(quán)威时迫,看似一樣的代碼未必是重復(fù)。這也正是編程中藝術(shù)的地方谓晌。

可測試性與解耦

可測試性和正交解耦是分不開的掠拳,具備良好可測試性的代碼,一定是沒有對全局變量的依賴纸肉,保持不可變性溺欧,確定的輸入產(chǎn)生特定的輸出。還有對外部資源的的引用柏肪,也應(yīng)遵循這一原則姐刁,因為任何可變的外部資源,都是全局數(shù)據(jù)烦味,也就是有副作用聂使,會被共享。

把所有都外部依賴封裝成抽象是一個良好的實踐谬俄,依賴抽象而不是實現(xiàn)岩遗,可以提高整個系統(tǒng)的靈活性。

對此凤瘦,我覺得非常同意作者說的宿礁,保持代碼簡潔,不要打破第一扇窗戶蔬芥。

軟件開發(fā)就像園藝:可測試和重構(gòu)的思考

測試是從代碼中獲取反饋的過程梆靖,而不僅僅是尋找Bug。正如作者所說笔诵,測試的好處更主要來自對測試的思考返吻,什么樣的代碼設(shè)計出來更易于測試,思考可測試性對代碼的影響乎婿,用這樣的方式测僵,設(shè)計出的代碼就是可測試的。

關(guān)鍵在于對代碼的思考和理解,而不是必須真的寫出來的自動測試代碼捍靠。這也是很偏藝術(shù)的地方沐旨。當(dāng)然,如果是時間和成本允許的話榨婆,在遵循測試金字塔原則的情況下磁携,還是盡量應(yīng)該把自動化測試的代碼寫出來。

自動測試同樣面臨邊際收益遞減良风,屬于過度追求完美谊迄,任何對完美和健壯性的追求,都應(yīng)該適可而止烟央,不要超過能看見的范圍统诺,這個可以確定的預(yù)見的范圍,不管對于產(chǎn)品還是開發(fā)疑俭,都應(yīng)該是幾周篙议,最多不超過一兩個月。

在作者看來怠硼,重構(gòu)也應(yīng)該是非常微小步驟的改進,任何大規(guī)模的重寫移怯,都不能算是重構(gòu)香璃,就像裁剪樹枝一樣。所以說軟件開發(fā)更像園藝舟误,軟件并非磚石堆砌葡秒,而是一個有機體,無法得到計劃中結(jié)果的東西都需要刪除或者修剪嵌溢。

我覺得軟件開發(fā)中眯牧,有一個很有用的原則,在決定代碼到底分還是合的時候很有用赖草,可以根據(jù)最小刪除成本來考慮学少。

用文本來存儲知識

此外作者毫不掩飾用可以版本化的純文本來持久化存儲知識的偏愛,只要不是確定為了性能要壓縮信息秧骑,用可以自解釋的文本永遠是最佳選擇版确。這也是我自己非常認同,并且在實踐中采用的原則乎折。

首先是可讀性绒疗,代碼和數(shù)據(jù)不僅僅是機器執(zhí)行的指令,更是開發(fā)者之間溝通和協(xié)作的橋梁骂澄。在沒有足夠的精力吓蘑,維護大量冗余文檔的時候,所見即所得的文本信息坟冲,是最好的文檔磨镶,沒有任何二義性溃蔫,也不需要額外跳轉(zhuǎn)和查詢知識。

然后是關(guān)于建模棋嘲,這是有點類似活文檔的概念酒唉,在我們開發(fā)軟件的時候,第一步沸移,其實是對物理世界痪伦,或者需求的建模,將物理世界的所有概念雹锣,反映到系統(tǒng)中网沾,所有概念一一對應(yīng),是基礎(chǔ)蕊爵,只要有完備的結(jié)構(gòu)化文本辉哥,我們可以通過各種代碼生成器、規(guī)則引擎攒射,自動的生成代碼或者執(zhí)行邏輯醋旦;文檔本身就解釋了程序的行為。

敏捷思維與組織架構(gòu)

敏捷思想關(guān)注的是如何有效地工作会放,是關(guān)于如何做事的饲齐,邁出一小步,評估并根據(jù)反饋調(diào)整下一步行動咧最,持續(xù)針對流程做實驗捂人,改進流程,才是敏捷團隊的核心矢沿,而不是迷信時髦的方法滥搭。

康威定律決定了,任何軟件的架構(gòu)捣鲸,最終都是組織溝通結(jié)構(gòu)的反映瑟匆。應(yīng)用康威定律,可以有意識地按照代碼所期待的樣子栽惶,來組織團隊∨Ч睿現(xiàn)在比較流行說的組織能力,我覺得也是類似的概念媒役。

我覺得需要注意的是祝谚,組織的溝通結(jié)構(gòu),不可避免要受到創(chuàng)始人的性格酣衷、預(yù)算交惯、收入來源和融資結(jié)構(gòu)的影響,而不是空中樓閣。

編程席爽、架構(gòu)意荤、產(chǎn)品設(shè)計和經(jīng)營都是一樣,采取經(jīng)過深思熟慮的小步驟只锻,及時檢查數(shù)據(jù)和用戶反饋玖像,應(yīng)該在推進前不斷調(diào)整,避免過大的步驟和任務(wù)齐饮,用反饋頻率作為節(jié)拍器捐寥。

構(gòu)建軟件的唯一方法是增量式的,逐步構(gòu)建端到端功能的小塊祖驱,一邊工作一邊解決問題握恳,在解決問題的過程中不斷學(xué)習(xí),應(yīng)用過程中學(xué)到的知識充實代碼捺僻,讓客戶參與每一個步驟并讓他們指導(dǎo)這個構(gòu)建的過程乡洼。

結(jié)語:務(wù)實之道

說到具體的軟件開發(fā)實踐,我覺得匕坯,在結(jié)果難以預(yù)測的產(chǎn)品探索過程中束昵,每次迭代都應(yīng)該在整個開發(fā)流水線上避免重復(fù)的工作。每個工序和步驟都應(yīng)該盡快將可用的產(chǎn)出交付到下游葛峻,就像在黑暗中射擊一樣锹雏,不必追求完美主義,關(guān)鍵是盡可能交付可演示且能正常工作的內(nèi)容泞歉,交付的過程就是溝通和學(xué)習(xí)的過程。當(dāng)然匿辩,推進時要牢記約束理論的指導(dǎo)腰耙,及時識別并優(yōu)化瓶頸,并根據(jù)瓶頸調(diào)整節(jié)奏铲球,以確保整個流程的高效進行挺庞。

在《程序員修煉之道》中,務(wù)實的方法論貫穿始終稼病。技術(shù)的打磨是基礎(chǔ)选侨,但只有通過迭代、反饋與不斷適應(yīng)然走,才能成就偉大的產(chǎn)品援制。真正的成功在于打破迷霧,精益求精芍瑞,最終讓產(chǎn)品在市場上成功晨仑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子洪己,更是在濱河造成了極大的恐慌妥凳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件答捕,死亡現(xiàn)場離奇詭異逝钥,居然都是意外死亡,警方通過查閱死者的電腦和手機拱镐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門艘款,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痢站,你說我怎么就攤上這事磷箕。” “怎么了阵难?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵岳枷,是天一觀的道長。 經(jīng)常有香客問我呜叫,道長空繁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任朱庆,我火速辦了婚禮盛泡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娱颊。我一直安慰自己傲诵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布箱硕。 她就那樣靜靜地躺著拴竹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剧罩。 梳的紋絲不亂的頭發(fā)上栓拜,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音惠昔,去河邊找鬼幕与。 笑死,一個胖子當(dāng)著我的面吹牛镇防,可吹牛的內(nèi)容都是我干的啦鸣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼来氧,長吁一口氣:“原來是場噩夢啊……” “哼赏陵!你這毒婦竟也來了饼齿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蝙搔,失蹤者是張志新(化名)和其女友劉穎缕溉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吃型,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡证鸥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了勤晚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枉层。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赐写,靈堂內(nèi)的尸體忽然破棺而出鸟蜡,到底是詐尸還是另有隱情,我是刑警寧澤挺邀,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布揉忘,位于F島的核電站,受9級特大地震影響端铛,放射性物質(zhì)發(fā)生泄漏泣矛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一禾蚕、第九天 我趴在偏房一處隱蔽的房頂上張望您朽。 院中可真熱鬧,春花似錦换淆、人聲如沸哗总。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讯屈。三九已至,卻和暖如春易猫,著一層夾襖步出監(jiān)牢的瞬間耻煤,已是汗流浹背具壮。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工准颓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棺妓。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓攘已,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怜跑。 傳聞我的和親對象是個殘疾皇子样勃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容