軟體開發中業務知識的啟用 - Feathers
使用系統不僅僅是編寫程式碼,它是主動知識的生成。 在這篇文章中,Michael Feathers描述了這個概念,以及如何使用它來影響組織決策:
就其核心而言,軟體開發是一個知識生成過程。當我們思考這到底意味著什麼時會發生什麼?
關於軟體開發,有許多不同的觀點。我們的觀點往往取決於我們的角色和有利位置。通常情況下,開發人員專注於程式碼和架構。經理和團隊領導關注的是專案和人員。對於其他角色來說,過程和產品的觀點是主要的。
這種觀點的多樣性似乎沒有什麼問題。我們完成了我們的工作,透過軟體傳遞價值。
然而,由於我們沒有一個統一的視角,管理大型複雜系統的許多方面都被忽視了。
我想提供一個我把它稱為知識啟用的觀點。
我將透過一個例子輕鬆地進行解釋:
想象一下,你是一個有五個人的開發團隊。你的一個團隊成員去度假了幾個星期。這個假期的影響取決於團隊如何組織其工作。如果團隊中的人實行結對或聚眾程式設計,可能不會有太大的影響。現有系統的知識和即將到來的工作是在整個團隊中共享的。
敏捷軟體開發中最重要的舉措之一是找到處理經典上被稱為匯流排因素的做法。它解決的問題是:一個團隊可以失去多少人而不使工作陷入停頓?結對程式設計和暴徒程式設計是處理這個問題的兩種方法,但還有許多其他的方法:回顧、文件、共享工作空間,等等。所有這些做法都是有效的,但值得考慮的是,我們是否已經足夠仔細地研究了問題背後的現象。我們是否對軟體開發中的知識進行了研究,並對它是什麼以及它的品質建立了一個模型?
知識是一種東西
非常寬泛地說,我們可以把知識想象成一個數量。我們可能無法測量它,但我們知道一些關於它的事情。其一是,除非我們採取行動,否則它將隨著時間的推移而惡化。
在團隊編寫程式碼時,業務知識掌握有一個快速的上升過程,而之後的下降過程要長得多。坡度下降只是由於記憶的原因。隨著時間的推移,我們會忘記這些工作的細節。我們繼續做其他事情;也許一個團隊成員離開了。
當團隊不得不透過重構或額外的功能工作觸及舊程式碼時時,我們對該領域的知識量就會增加。圍繞該類的知識被啟用。
關於這個過程,有幾種思考方式。一種是,團隊正在重新發現關於該類的知識。另一種是再生知識;我更喜歡這種說法。我們從程式碼和其他系統工件以及彼此之間的對話和調查中再生出知識。
同樣,我們不能精確地確定在這個過程中啟用的知識量,但它比我們開始在那個階段工作之前的知識量要多。密切的工作在社會技術系統中啟用併產生了知識。
主動知識的特質
當我們認真對待主動知識的概念時,我們可以看到它有一些影響我們如何管理它和圍繞它發展實踐的特質。
主動知識是在與一個系統的互動中產生的。我們透過閱讀或討論獲得知識,但與之合作是理解某種事物的最佳方式。工作能調動閱讀和討論所不能觸及的思維部分。它能增強記憶和注意力。
知識會隨著時間的推移而消逝。
當我們轉向其他工作時,我們對舊工作的知識就會逐漸消失。有時我們有清晰的記憶,但當我們在工作環境中沒有被提醒時,重要的細節就會從我們的記憶中消失。這種消退不僅發生在個人層面,也發生在團隊和組織層面。如果一個人離開了一個團隊,那麼這個人所擁有的那部分積極的知識,如果不是透過分享工作產生的,那麼實際上已經消失了。
知識會變質。
主動知識是準確的知識。如果你一週前在系統的一部分工作過,後來人們在你不知道的情況下對其進行了修改,那麼團隊中的活躍知識就會減少。你所擁有的知識已經變質了。是的,你團隊中的一些人有了當前的理解,但這種理解並沒有完全分佈在團隊中。陳舊的知識在一個組織中是有問題的--使用不準確的資訊工作的人往往會重複工作或以適得其反的方式改變系統。
如果工件是清晰易懂的,那麼知識就更容易再生了。
程式碼、構建指令碼和文件是外部化的知識。它們是不存在於我們頭腦中的部分。我們很容易高估這些人工製品的價值。它們很少是完整的,而且可能變得陳舊,但它們常常構成知識再生的基礎。當我們想學習更多的東西時,我們就會回到這些東西上。
被發現的知識可以提高決策水平。
只要我們在一個系統中工作,知識就會被啟用。當我們意識到這一點時,我們可以選擇在一個系統的不同領域工作,以獲得背景並更全面地瞭解它。通常情況下,我們學到的東西會讓我們意識到新功能的潛力,或者讓我們意識到增加我們計劃中的功能的更簡單方法。
當我們把所有這些品質放在一起看時,最重要的是要意識到,知識管理不應該集中在儲存和儲存上。相反,它應該專注於生成和流動。隨著時間的推移,知識會消散,人們也會從一個地方轉移到另一個地方。我們需要專注於發展幫助我們快速獲取和按需生成知識的實踐,以支援我們在系統中所做的寶貴工作。
相關文章
- web開發知識體系中必要的知識點Web
- 學會Zynq(3)Zynq的軟體開發基礎知識
- 軟體Bug、耦合以及因果推理 - Michael Feathers
- 程式設計或者軟體開發到底算不算知識?程式設計
- 具體的知識 && 知識在專案中的應用(以指標和記憶體的知識引出)指標記憶體
- 探討敏捷開發在軟體開發中的應用敏捷
- KGB知識圖譜完善保險行業的知識應用體系行業
- 直播軟體原始碼開發千萬不能忘的一個知識點原始碼
- 線上教你開發直播軟體app時需要掌握的小知識APP
- 相比傳統軟體服務,KGB知識圖譜的進階應用體現在哪裡
- 軟體開發中的10大不為人知的真相
- 軟體開發正確開啟方式:低程式碼+微服務微服務
- 軟體開發,java基礎知識,想學習的小白來看看吧Java
- ONES 全球化啟航,用軟體服務全球企業
- 軟體開發中的DevOpsdev
- Android短視訊開發業務中視訊編解碼的相關知識閱讀Android
- JProfiler for Mac 14.0.0啟用碼(Java開發分析軟體)MacJava
- 軟考中級軟體設計師【結構化開發】知識點+題目
- 網路安全中,Web中介軟體/服務埠有哪些相關知識?Web
- 敏捷開發大家談(三)--敏捷開發技術在電子商務軟體中的應用(2)敏捷
- 信管知識梳理(三)軟體工程相關知識軟體工程
- 小知識:軟體開發的許可權控制和許可權驗證
- 直播軟體開發:不知道這些知識太吃虧了?
- 誰負責業務知識的管理?
- 分享一個冷門知識——文字框的選擇文字在業務中的應用
- 軟體開發中會遇到的幾種實用圖例
- 軟體設計師:軟體工程基礎知識軟體工程
- 前端開發中需要搞懂的字元編碼知識前端字元
- erp軟體在日常業務中的價值
- 軟體測試基礎知識
- 騰訊位置服務開發應用-使用教程,案例分享,知識總結
- 如何建立良好的軟體?軟體不僅僅是編寫程式碼而更是開發知識! - csc.gov.sgGo
- 電站鍋爐行業PLM的可定製知識管理軟體行業
- 一文詳解啟發式對話中的知識管理
- Hybrid App 應用開發中 5 個必備知識點複習APP
- 知識分享:Air780E軟體之UDP應用示例AIUDP
- 軟體工程方法論對軟體開發有多大的用處?軟體工程
- PHP整合開發軟體 PhpStorm 2023 for Mac 中文啟用版下載PHPORMMac