知識論(一): 知識傳遞
做近一在一些和知識傳遞(knowledge transfer)相關的事,只是這種是因為是每個人一直都在做的事,不同的是要從一個接收者變成一個傳送者。在重新看了看《認識設計》一書,加之之前的Coaching培訓,算是在這方面有了點小小的經驗。
不幸的是,在有了這些瞭解之後,在這周裡有幸Review了Manning出版社的一本關於物聯網的草稿的目錄,作者是一個PhD,看裡面的內容很有深度。然而目錄看上去不讓人滿意,學習曲線陡得有點異常,又少了點實踐。這不像是給看些搞IT的人玩的書,更像是寫給資深的人看的,但是資深的人又不需要這樣的書了。對於知識傳遞這一事來說,不像是一個好的目錄。
於是,就重新思考了一下,知識傳遞到底應該是怎樣的?
知識傳遞
將某種情形下的知識從一個單位(可以是個人、團隊、部門、組織)傳遞到另一個單位,這就是知識傳遞。^knowledge
對於傳統軟體開發團隊來說,知識會存在於三個地方:
- 文件
- 少數人
- 程式碼
對於敏捷軟體開發團隊來說,知識會存在於三個地方:
- 團隊
- 測試
- 程式碼
合併一下上面知識,我們可以將其歸併為人
與文件
。傳統軟體開發與敏捷軟體開發的很大的不同在於——知識的傳遞方式:
傳統軟體開發流程中,知識傳遞的方式主要在於文件,而我相信在網上已經有足夠的證據可以表明,程式設計師既討厭看文件,又討厭寫文件。
敏捷軟體開發流程中,知識儲存的地方在於團隊中的人以及程式碼中。一個好的測試用例會覆蓋到軟體的一個功能,那麼相應地如果軟體的功能都到測試到了,那麼我們就知道軟體的所有功能。敏捷開發流程的兩個優勢在於結對程式設計與Code Review,這樣會讓團隊中的所有人都具有同等的知識。
程式碼
如果你不知道一坨程式碼的功能、沒有文件、沒有測試,也沒有人知道它的功能,那麼我想這程式碼是完了。這也說明了在這個專案中,知識的傳遞是有問題的,接著這個專案就變成了遺留專案,在這樣的專案中程式設計是極大的挑戰。
故而程式碼整潔的實質便是更好的達到知識傳遞的目的,那些傳遞不了知識的程式碼就是那些魔法數字、過長的函式、過大的類等等。有意思的是如果團隊成員整體水平不高,那麼設計模式也是一種傳遞不了知識的程式碼。畢竟,不在同一個水平上的程式設計師很難相互之間交流。
還有一個便是測試用例,好的測試用例會告訴我們該往何處走。
團隊
團隊在某種程度上是知識的擁有者,在團隊中傳遞知識的最好方式便是結對程式設計。在結對程式設計的過程中,我們可以對新人進行指導。無疑這樣的成長方式是最快的,我們直接將所有的知識傳遞給另外一個人。除此之外,還有我們工作的方式。
ps: 最近比較忙 + 比較熱,靜不下心好好寫。
相關文章
- AI 知識概論AI
- 概率論知識總結
- Vuejs基本知識(八)【頁面間的引數傳遞】VueJS
- 01 知識圖譜概論
- 資料庫理論知識資料庫
- 知識圖譜入門——知識表示與知識建模
- 知識圖譜之知識表示
- Python知識點(一)Python
- Vagrant (一) - 基本知識
- react 知識梳理(一)React
- 領域綜述 | 知識圖譜概論(一)
- 需要了解的Data Guard理論知識(一)
- 華為 組播理論知識
- Go知識圖譜討論帖Go
- 鑑權理論知識學習
- 1.測試理論知識
- KGB知識圖譜,利用科技解決傳統知識圖譜問題
- 圖片上傳知識點梳理
- 論基礎理論知識的重要性
- 軟體測試之理論知識_1.3
- 【知識點】圖與圖論入門圖論
- NLP知識總結和論文整理
- 影片基礎知識(一)
- React基礎知識(一)React
- py基礎知識(一)
- 架構知識點(一)架構
- 人工智慧(二、知識表示)——1.知識表示與知識表示的概念人工智慧
- HTTP知識HTTP
- IPsec知識
- Owin知識
- VBA 知識
- PPT知識
- PHP 知識PHP
- MySQL 知識MySql
- Thread知識thread
- 知識點
- linux 知識Linux
- 知識集合
- 【知識分享】