1. 程式人生 > >《構建之法》第四&十七章讀書筆記

《構建之法》第四&十七章讀書筆記

人員 水平 相關 事情 全面 讀書筆記 提高效率 OS 自身

《構建之法》第四&十七章讀書筆記

一. 前言

再次閱讀《構建之法》,愈發被其中生動有趣的舉例吸引。作為一本給予軟件工程學生的書籍,其不以枯燥的理論知識為核心,而是基於對知識和方法的引導。本次研讀的這兩章內容主要涉及了代碼規範,兩人結對與多人合作的團隊方面等相關知識,從其中逐漸明白與人相處作業等方面的技巧與藝術。以下是我對這兩章節的思考與疑惑。

二. 第四章《兩人合作》。

本章主要涉及代碼規範,極限編程,結對編程,兩人合作不同階段,影響他人技巧幾方面的知識點。以下是我的問題:
1. 原文:註釋(包括所有源代碼)應該只用ASCII字符,不要用中文或特殊字符,否則會極大的影響程序的可移植性。

根據對註釋的解釋,註釋就是對代碼的解釋和說明,其目的是讓人們能夠更加輕松地了解代碼。註釋是編寫程序時,寫程序的人給一個語句、程序段、函數等的解釋或提示,能提高程序代碼的可讀性。註釋是為了讓人們了解代碼,為什麽只能用ASCII字符,對於使用別的語言的人來說,強制使用ASCII註釋會不會增加對註釋的理解難度。對於中文註釋的問題,是不是應該適度放寬,畢竟註釋就是為了能讓簡單直白的明白代碼而存在的。

根據知乎上的“大型公司代碼註釋是怎樣?”這個問題有以下評論。

技術分享圖片

技術分享圖片

技術分享圖片

在我看來,ASCII註釋可能在國際的運用率和廣泛度比較高,因而導致的此種註釋規範。但是根據實際情況,結合平常習慣和以上評論,我認為因地制宜的代碼註釋可能會比固定的代碼規範在一定程度上效率更高。對於內部而言,只要能使團隊人員理解,代碼註釋風格可以隨自己決定,但在交流學習方面,可能ASCII註釋的廣泛度會更高

關於編程註釋規範方面的博客:https://blog.csdn.net/xiaoxiaopengbo/article/details/51583631

2.原文:

“軟件工程中最基本的復審手段,就是同伴復審。

誰來做代碼復審?即最有經驗,熟悉這一代碼的人。對於至關重要的代碼,我們要請不止一個人來做代碼復審。”

“在代碼復審中發現的問題,絕大多數都可以有開發者獨立發現。從這一點說,復審這是在替開發者幹開發者本該幹的事情。”

既然絕大多數問題都可以有開發者自己發現,那麽代碼復審的基本不應該是自我復審階段嗎?為什麽會說同伴復審是最基本的?對於最有經驗,熟悉這一代碼的人來做代碼復審,如何保證復審者對代碼的熟悉?對於新人而言,經驗可能不足,為什麽通過復審來學習先進的代碼?

對於開發者而言,自我復審可能會因為自己的過度自信而導致復審效率不高的問題出現。所以請不止一人做代碼復審是有必要的。即使是很完美的代碼,也具有教育和學習的功效,對於復審者而言也是一種成長。因此可以在有經驗審查者審查後再次復審以期得到學習。

但對於如何保證對代碼的熟悉?熟悉到何種程度才能作為復審者有衡量標準嗎?

3.為什麽結對編程?結對編程能否大幅度提高效率?

“結對編程讓兩個人所寫的代碼不斷的處於“復審”的過程,程序員們能夠不斷的審核,提高設計和編程質量,可以及時發現並解決問題,避免把問題拖到後面的階段”這樣對效率的提高有好處,但會不會出現兩人在磨合階段導致效率低下,共同編程真的會比個人編程效率高嗎?1+1>2並不適用於每個結對編程。

技術分享圖片

技術分享圖片

技術分享圖片

以上評論來自於“工程師結對編程能否大規模提高效率?”,由此可見,絕大多數工程師對此種結對編程的評價都很好,但在具體實踐過程中卻出現問題。問題並不是處在效率上,而是在工程師工作方面的前提要求很多。很多評論都提到了高強度長時間的工作,以及水平相當的程序員能更好的完成。如果兩個人在水平方面相差很多或者磨合期間出現問題,會不會導致結對效率還不如個人效率高的情況發生?在無法保證結對雙方都滿意對方,或者兩人水平相差懸殊的情況下,又該如何調整和改變呢?

參考評論:https://www.zhihu.com/question/20188422

三. 十七章《人,績效和職業道德

本章節是對分配,績效,團隊成長階段和職業道德等方面的分析,首先先以豬,雞與鸚鵡的動物體系反映真實的工作體系以及對於工作分配績效調整方面的理解。然後再展示團隊成長的不同階段和處理分歧的方法。最後點明軟件道德規範。

對於這個章節,我有以下的思考和想法。關於如何作為一名優秀的領導者? 怎樣的豬,雞和鸚鵡的分配比例更有利於團隊長效發展,在績效方面他們的評定方式又該如何?對於道德規範的要求,是否該隨著客戶需求而進行適當轉變?
在我看來,在軟件團隊的中的領導力有幾個要素:
* 設定目標
* 知人善任
* 帶領團隊解決問題
* 績效管理
工作分配的重要性。對於工作分配,作為一個團隊的領導者,更是這個團隊的靈魂。領導不單是管理方面,更應該側重於領導的作用。它不僅需要了解隨時掌握成員的動向,更重要的是,他需要了解各組員的能力,然後根據個人的能力,然後再去分配相應的任務,只要這樣才能做到“物盡其用”,才能更好的完成我們的項目,達到更完美的狀態。這不僅是領導的能力的體現,也體現著整個團隊的團結力和創造力。作為一個集體,為了共同的目標而努力奮鬥是必要的,這個過程就是團隊成長的不同階段,在磨合期也許會有不同的想法和思維導致矛盾,這是就要體現領導的作用。不是一概而論或者唯我獨尊,而是傾聽成員聲音找到一個更好的權衡方法,在盡可能使大家滿意的基礎上去完成,這才是一個領導的作用。
一定比例上的三者協調在提高效率方面是有益處的。在實際的工作中,這些存在都是有一定作用和必要性的。遵循“重大決定由“豬”負責”的原則是現實的。所以這三種不同的存在是合理的。但對於如何協調之間比例的問題上,可能還是需要各自根據自己項目的要求進行調整。但這三者的績效管理問題,如何分配和權衡還是一個需要考量的問題。書上所述的區別對待,根據完成任務維度和團隊貢獻維度形成的二位評價體系,可能是區別對待的一個較好的解決方式。那麽豬,雞和鸚鵡都充斥的團隊,也適合這種區別對待的績效評定嗎?

關於道德規範問題,“這並不是一個簡單的道德算法,並不能產生所有道德上的決定”,所以“解決道德沖突最好的方法是對基本原則進行全面的思考,而不是盲目某些具體條目。”由於軟件工程的多變性和苛刻性,應對新情況發生的道德規範在很大程度上還是需要工程師的自我約束和道德規範。面對紛亂復雜的市場和競爭,保持職業操守是很重要的事。面對不合理的客戶需求,不能一味追求經濟利益,更要考慮長遠發展和社會影響。因此“軟件工程師應當終生學習以提高自身的專業水平,並在工作實踐中推動落實道德準則”。

《構建之法》第四&十七章讀書筆記