1. 程式人生 > >讀構建之法 第三章:軟件工程師的成長

讀構建之法 第三章:軟件工程師的成長

知識點 可維護 vid -s 評估 不同 fun 可靠 科研

本章理論和知識點:評價軟件工程師水平的主要方法

軟件工程把相關的技術和過程統一到一個體系中,叫“軟件開發流程”,軟件開發流程的目的是為了提高軟件開發、運營、維護的效率,以及提升用戶滿意度、軟件的可靠性和可維護性。

軟件開發流程不光指團隊的流程,還包括個人開發流程,因為軟件團隊是由個人組成的。個人在團隊中也有獨立的流程。把每個人的工作有序地組織起來,就是團隊的流程。“有序”,並不是“無爭論”。在大部分成功的軟件團隊模型中,各個角色有不同意見的沖突在所難免,解決沖突、意見統一是團隊要做的。作者用足球隊來做舉例,足球隊有個人流程,有單個運動員的技術、體能要求,在單個運動員的技術、體能達標的情況下,再去講團隊的陣型和戰略,還有團隊的交流。軟件系統的絕大部分模塊都是由個人開發或維護的

這裏又出現了新名詞IC(Individual Contributor):單個成員。

IC在團隊中的流程是怎麽樣的呢?

1.通過交流、實驗、快速原型等方法,理解問題、需求或任務

2.提出多種解決辦法並估計工作量; 其中包括尋找以前的解決方案,因為很多工作是重復性的

3.與相關角色交流解決問題的提案,決定一個可行的方案執行

4.執行,把想法變成實際中能工作的代碼,同時驗證方案的可行性和其他特性(例如程序的效能等)

5.和團隊的其他角色合作,在測試環境中測試實現方案,修復缺陷(Bug)。如果此方案有嚴重的問題,那麽就考慮其他方案

6.在解決方案發布出去之後,對結果負責每個人的工作質量直接影響最終軟件的質量。

每個人的工作質量直接影響最終軟件的質量。

初級軟件工程師如何成長呢?

1. 積累軟件開發相關的知識,提升技術技能(如對具體技術的掌握,動手能力)。

2. 積累問題領域的知識和經驗。。隨著經驗的增長,一個工程師可以掌握更廣泛、更深入的技術和問題領域的知識。

3. 對通用的軟件設計思想和軟件工程思想的理解。這一方面就比較虛。

4. 提升職業技能(區別於技術技能)。職業技能包括:自我管理的能力,表達和交流的能力,與人合作的能力,按質按量完成任務的執行力。

5. 實際成果。

軟件開發的工作量和質量怎麽衡量呢?

有下列4個因素:

a . 項目/任務有多大?說明項目的大小,一般用代碼行數(Line Of Code,LOC)來表示;也可以用功能點(Function Point)來表示。

b . 花了多少時間?可以用小時、天、月、年來表示。一組人所花費的時間可以用(人數×時間)來表示。

c . 質量如何?交付的代碼中有多少缺陷? 交付有兩個定義:1.在代碼完成時,交付給測試人員 2.在軟件最終發布時,交付給顧客

可以用缺陷的數量來除以項目的大小。

d . 是否按時交付?

在團隊工作中,穩定、一致的交付時間是衡量一個員工能力的重要方面。

一個成熟的軟件工程師應該能夠降低任務交付時間的標準方差。

軟件工程師的職業發展

1.職業發展——考級之路

需要一些行業的和公司的認證,資格證書

2.職業成長——Steve McConnell

一個軟件工程師需要具備一定的知識和能力。

知識:邁克康奈爾把相關的軟件知識分為十大知識領域。

能力:一個工程師對這些知識的掌握分為四個階段。

3.職業成長——大公司版本

不同軟件工程師職業等級對應不同的要求。

4.職業成長——自我評估

工程師應該在實際工作中不斷學習和不斷成長,根據自己的情況選擇在哪個方面追求“專和精”,在哪幾個方面達到“知道就好”的水平。

怎麽提高技能呢?

通過不斷的練習,把那些低層次的問題都解決了,變成不用經過大腦的自動操作,然後才有時間和腦力來解決較高層次的問題。

先練好基本功,再去談高層次的“科研”。

讀構建之法 第三章:軟件工程師的成長