高质高效软件开发组织能力模型
生活随笔
收集整理的這篇文章主要介紹了
高质高效软件开发组织能力模型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
背景
至今,我在Motorola網(wǎng)絡(luò)部工作超過(guò)了5年,所在的產(chǎn)品線也是采用統(tǒng)一軟件開(kāi)發(fā)過(guò)程和敏捷思想(但不是SCRUM)來(lái)組織軟件開(kāi)發(fā)活動(dòng)的,但這5年多的工作經(jīng)歷從未引起我象微博上對(duì)于SCRUM話題的激烈討論這樣的思考。原因之一可能是,公司的流程已經(jīng)很成熟了且形成了一種文化,不論怎樣的新人進(jìn)入公司,都只需按照流程按步就班的工作就行了。另外,公司的開(kāi)發(fā)流程并不包含象SCRUM所要求的形式化內(nèi)容,使得我在工作中沒(méi)有機(jī)會(huì)體會(huì)和思考各種行為的利與弊。
?
與周?chē)耐孪啾?#xff0c;我自認(rèn)為自己的工作質(zhì)量和效率都很突出,這歸功于我所掌握的知識(shí)、工具、方法和形成的思想。這四大塊內(nèi)容也是將要出版的《專(zhuān)業(yè)嵌入式軟件開(kāi)發(fā) — 全面走向高質(zhì)高效編程》一書(shū)的骨架。然而,最近微博上對(duì)于SCRUM的討論使我意識(shí)到,我的焦點(diǎn)更多地放在了工程師身上,而忽視了從組織的角度思考如何高質(zhì)高效地從事軟件開(kāi)發(fā)工作。即使這樣,我仍持這樣一種觀點(diǎn):不論是怎樣的開(kāi)發(fā)方法,一定要最終從基層工程師身上找到著力點(diǎn),因?yàn)檐浖a(chǎn)品的最終質(zhì)量是他們“碼”出來(lái)的。一個(gè)方法論是否真的有效,得看方法論能多大程度地幫助工程師高效地開(kāi)發(fā)出高質(zhì)代碼,且該方法論被工程師所接受。注意,是“幫助”他們而不是“規(guī)范”他們。
?
對(duì)于SCRUM我還是一個(gè)門(mén)外漢(注:Motorola網(wǎng)絡(luò)部被NSN收購(gòu)后也要求使用SCRUM,希望到時(shí)能寫(xiě)些文章與大家分享所得與體會(huì)),但這并不妨礙我思考從事高質(zhì)高效軟件開(kāi)發(fā)我們到底需要什么。
SCRUM是銀彈嗎?絕對(duì)不是,因?yàn)樗皇且粋€(gè)很粗的開(kāi)發(fā)流程框架,仍無(wú)法消除開(kāi)發(fā)活動(dòng)中的人為因素(但可以減緩)。如果SCRUM不是銀彈,那將SCRUM引入到團(tuán)隊(duì)中時(shí)我們應(yīng)如何本地化呢?
?
模型
縱觀軟件行業(yè)開(kāi)發(fā)方法論的發(fā)展,大多關(guān)注于開(kāi)發(fā)過(guò)程。這一點(diǎn)從瀑布模型、統(tǒng)一軟件開(kāi)發(fā)過(guò)程、CMMI和現(xiàn)在的敏捷軟件開(kāi)發(fā)方法無(wú)一例外。開(kāi)發(fā)工程化的思想深深地影響著軟件行業(yè)對(duì)開(kāi)發(fā)方法論的探討,但業(yè)內(nèi)也以意識(shí)到了軟件開(kāi)發(fā)不只是工程,它更包含個(gè)體心理、行為等難以工程化的內(nèi)容。在這里,我想拋磚引玉地提出自己的一個(gè)能力模型,來(lái)幫助思考我們到底需要什么、走向哪。該模型存在抽象與具體兩大層次。讓我們先從抽象模型開(kāi)始,如圖1所示。?
圖1
?
從面象對(duì)象的角度來(lái)看,抽象模型是基類(lèi),而具體模型則是其派生類(lèi)。高質(zhì)高效的軟件開(kāi)發(fā)工作需要涉及多個(gè)部門(mén)的各種崗位,各崗位的能力模型應(yīng)在抽象模型的基礎(chǔ)上進(jìn)行具體化。為了便于理解,圖2所示了我所認(rèn)為的軟件開(kāi)發(fā)部門(mén)的能力模型。
結(jié)束語(yǔ) 這個(gè)模型是我花了不到一天的時(shí)間想出來(lái)的,所以一定很粗糙。個(gè)人認(rèn)為,這個(gè)模型不應(yīng)只是一種文字游戲的玩法,更應(yīng)包含一定的實(shí)證研究。比如,模型中的關(guān)鍵要素又是什么?各要素的比重是多少?但無(wú)論如何,我希望這樣的模型不會(huì)讓我們?cè)谥T如SCRUM這樣的探討中迷失軟件開(kāi)發(fā)活動(dòng)的本原,這是我寫(xiě)這篇文章的根本出發(fā)點(diǎn)。 ? 最后,歡迎讀者提出自己的見(jiàn)解和參與討論。我的微博是@杭州李云(新浪)或@杭州李云(51CTO)。 ? Q&A 1. 軟件設(shè)計(jì)是質(zhì)量之本,為什么在軟件開(kāi)發(fā)工程師模型中沒(méi)有體現(xiàn)? 答:設(shè)計(jì)能力應(yīng)體現(xiàn)在工程師的抽象與概括能力上,這兩者在模型中已涵蓋。
2. 在軟件開(kāi)發(fā)工程師模型中為什么沒(méi)有體現(xiàn)建模的重要性? 答:建模應(yīng)是軟件架構(gòu)師的工作內(nèi)容。建模在模型中可分解為“抽象 + 概括 + 工具”,它其實(shí)是設(shè)計(jì)的一種表達(dá)形式。
圖2 意義 引入這一能力模型的意義在于: ? ??1) 讓我始終牢記實(shí)現(xiàn)高質(zhì)高效的軟件開(kāi)發(fā)是所有活動(dòng)的根本目的。 ? ??2) 幫助我們?cè)谔剿鬈浖_(kāi)發(fā)方法論的道路上時(shí)刻關(guān)注我們需要什么,并以此了解軟件開(kāi)發(fā)方法論解決了什么問(wèn)題,哪些問(wèn)題又是開(kāi)發(fā)方法論不能解決的。 ? ??3)為人力資源管理提供一定的框架。引導(dǎo)組織思考:我們需要招聘什么樣的人?人員培養(yǎng)的著力點(diǎn)是什么?
結(jié)束語(yǔ) 這個(gè)模型是我花了不到一天的時(shí)間想出來(lái)的,所以一定很粗糙。個(gè)人認(rèn)為,這個(gè)模型不應(yīng)只是一種文字游戲的玩法,更應(yīng)包含一定的實(shí)證研究。比如,模型中的關(guān)鍵要素又是什么?各要素的比重是多少?但無(wú)論如何,我希望這樣的模型不會(huì)讓我們?cè)谥T如SCRUM這樣的探討中迷失軟件開(kāi)發(fā)活動(dòng)的本原,這是我寫(xiě)這篇文章的根本出發(fā)點(diǎn)。 ? 最后,歡迎讀者提出自己的見(jiàn)解和參與討論。我的微博是@杭州李云(新浪)或@杭州李云(51CTO)。 ? Q&A 1. 軟件設(shè)計(jì)是質(zhì)量之本,為什么在軟件開(kāi)發(fā)工程師模型中沒(méi)有體現(xiàn)? 答:設(shè)計(jì)能力應(yīng)體現(xiàn)在工程師的抽象與概括能力上,這兩者在模型中已涵蓋。
2. 在軟件開(kāi)發(fā)工程師模型中為什么沒(méi)有體現(xiàn)建模的重要性? 答:建模應(yīng)是軟件架構(gòu)師的工作內(nèi)容。建模在模型中可分解為“抽象 + 概括 + 工具”,它其實(shí)是設(shè)計(jì)的一種表達(dá)形式。
總結(jié)
以上是生活随笔為你收集整理的高质高效软件开发组织能力模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基础概念笔记
- 下一篇: 我们真的需要统一的编程规范?