背景
至今,我在motorola網路部工作超過了5年,所在的產品線也是採用統一軟體開發過程和敏捷思想(但不是scrum)來組織軟體開發活動的,但這5年多的工作經歷從未引起我象微博上對於scrum話題的激烈討論這樣的思考。原因之一可能是,公司的流程已經很成熟了且形成了一種文化,不論怎樣的新人進入公司,都只需按照流程按步就班的工作就行了。另外,公司的開發流程並不包含象scrum所要求的形式化內容,使得我在工作中沒有機會體會和思考各種行為的利與弊。
與周圍的同事相比,我自認為自己的工作質量和效率都很突出,這歸功於我所掌握的知識、工具、方法和形成的思想。這四大塊內容也是將要出版的《專業嵌入式軟體開發 — 全面走向高質高效程式設計》一書的骨架。然而,最近微博上對於scrum的討論使我意識到,我的焦點更多地放在了工程師身上,而忽視了從組織的角度思考如何高質高效地從事軟體開發工作。即使這樣,我仍持這樣一種觀點:不論是怎樣的開發方法,一定要最終從基層工程師身上找到著力點,因為軟體產品的最終質量是他們「碼」出來的。乙個方**是否真的有效,得看方**能多大程度地幫助工程師高效地開發出高質**,且該方**被工程師所接受。注意,是「幫助」他們而不是「規範」他們。
對於scrum我還是乙個門外漢(注:motorola網路部被nsn收購後也要求使用scrum,希望到時能寫些文章與大家分享所得與體會),但這並不妨礙我思考從事高質高效軟體開發我們到底需要什麼。
scrum是銀彈嗎?絕對不是,因為她只是乙個很粗的開發流程框架,仍無法消除開發活動中的人為因素(但可以減緩)。如果scrum不是銀彈,那將scrum引入到團隊中時我們應如何本地化呢?
模型
縱觀軟體行業開發方**的發展,大多關注於開發過程。這一點從瀑布模型、統一軟體開發過程、cmmi和現在的敏捷軟體開發方法無一例外。開發工程化的思想深深地影響著軟體行業對開發方**的**,但業內也以意識到了軟體開發不只是工程,它更包含個體心理、行為等難以工程化的內容。在這裡,我想拋磚引玉地提出自己的乙個能力模型,來幫助思考我們到底需要什麼、走向哪。該模型存在抽象與具體兩大層次。讓我們先從抽象模型開始,如圖1所示。
圖1
從面象物件的角度來看,抽象模型是基類,而具體模型則是其派生類。高質高效的軟體開發工作需要涉及多個部門的各種崗位,各崗位的能力模型應在抽象模型的基礎上進行具體化。為了便於理解,圖2所示了我所認為的軟體開發部門的能力模型。
圖2
意義引入這一能力模型的意義在於:
結束語這個模型是我花了不到一天的時間想出來的,所以一定很粗糙。個人認為,這個模型不應只是一種文字遊戲的玩法,更應包含一定的實證研究。比如,模型中的關鍵要素又是什麼?各要素的比重是多少?但無論如何,我希望這樣的模型不會讓我們在諸如scrum這樣的**中迷失軟體開發活動的本原,這是我寫這篇文章的根本出發點。
@杭州李雲
1. 軟體設計是質量之本,為什麼在軟體開發工程師模型中沒有體現?
答:設計能力應體現在工程師的抽象與概括能力上,這兩者在模型中已涵蓋。
2. 在軟體開發工程師模型中為什麼沒有體現建模的重要性?
答:建模應是軟體架構師的工作內容。建模在模型中可分解為「抽象 + 概括 + 工具」,它其實是設計的一種表達形式。
高質高效軟體開發組織能力模型
背景 至今,我在motorola網路部工作超過了5年,所在的產品線也是採用統一軟體開發過程和敏捷思想 但不是scrum 來組織軟體開發活動的,但這5年多的工作經歷從未引起我象微博上對於scrum話題的激烈討論這樣的思考。原因之一可能是,公司的流程已經很成熟了且形成了一種文化,不論怎樣的新人進入公司,...
高效軟體開發團隊
高效的軟體開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰 有效的計畫 協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特徵 1 具有明確且有挑戰性的共同目標 乙個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通...
軟體開發模型
軟體開發模型 software development model 是指軟體開發全部過程 活動和任務的結構框架。軟體開發包括需求 設計 編碼和測試等階段,有時也包括維護階段。軟體開發模型能清晰 直觀地表達軟體開發全過程,明確規定了要完成的主要活動和任務,用來作為軟體專案工作的基礎。對於不同的軟體系統...