1. 程式人生 > >第三章 軟件工程師的成長

第三章 軟件工程師的成長

出發 int 開始 體系 會議 tor 可重復 設計 標準

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

軟件開發流程不光指團隊的流程,還包括個人開發流程,因為軟件團隊是由個人組成的。

軟件系統的絕大部分模塊都是由個人開發或維護的。在軟件工程術語中,我們把這些單個的成員叫做Individual Contributor(IC)。

IC在團隊中的流程:

  • 通過交流、實驗、快速原型等方法,理解問題、需求或任務
  • 提出多種解決辦法並估計工作量(其中包括尋找以前的解決方案,因為很多工作是重復性的)
  • 與相關角色交流解決問題的提案,決定一個可行的方案
  • 執行,把想法變成實際中能工作的代碼,同時驗證方案的可行性和其他特性(例如程序的效能等)
  • 和團隊的其他角色合作,在測試環境中測試實現方案,修復缺陷(Bug)。如果此方案有嚴重的問題,那麽就考慮其他方案
  • 在解決方案發布出去之後,對結果負責

初級軟件工程師的成長:

  1. 積累軟件開發相關的智商,提升技術技能(如對具體技術的掌握,動手能力)。
  2. 積累問題領域的知識和經驗

第一點和第二點在很多簡歷上都可以看到,也可以比較容易地檢測出來。隨著經驗的增長,一個工程師可以掌握更廣泛、更深入的技術和問題領域的知識。

3. 對通用的軟件設計思想和軟件工程思想的理解。

4. 提升職業技能(區別於技術技能)

5. 實際成果

絕大部分軟件工程師的工作成果都是可以公開的,你參與的產品用戶評價如何?市場占有率如何?對用戶有多大價值?你在其中起了什麽作用?行勝於言,這些實際的工作成果,是最重要的評價 標準。

軟件開發的工作量和質量如何衡量。PSP認為有4個因素:

a.項目/任務有多大?

說明項目的大小,一般用代碼行數(Line Of Code,LOC)來表示;也可以用功能點(Function Point)來表示

b.花了多少時間?

可以用小時、天、月、年來表示。一組人所花費的時間可以用(人數X時間)來表示

c.質量如何?

交付的代碼中有多少缺陷?交付有兩個定義:

  • 在代碼完成時,交付給測試人員
  • 在軟件最終發布時,交付給顧客

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

d.是否按時交付?

軟件/任務是否按時交付?在團隊工作中,穩定、一致的交付時間是衡量一個員工能力的重要方面。軟件項目的確需要創造性,需要一些意外,一些驚喜。但是,更多的是常規的、可重復的任務。

TSP(Team Software Process)對團隊成員也有要求:

  1. 交流:能有效地和其他隊員交流,從大的技術方向,到看似微笑的問題。
  2. 說到做到:按時交付
  3. 接受團隊賦予的角色並按角色要求工作:團隊要完成任務,有很多事情要做,是否能接受不同的任務並高質量完成?
  4. 全力投入團隊的活動:就像一些評審會議,代碼復審,都要全力以赴地參加,而不能遊離於團隊之外
  5. 按照團隊流程的要求工作:團隊有自己的流程,個人的能力即使很強,也要按照團隊制定的流程工作,而不要認為自己不受流程約束
  6. 準備:在開會討論之前,開始一個新功能之前,一個新項目之前,都要做好準備工作
  7. 理性地工作:軟件開發有很多個人的、感情驅動的因素,但是應該成熟的團隊成員必須從事實和數據出發,按照流程,理性地工作

第三章 軟件工程師的成長