高質高效軟件開發組織能力模型

背景
至今,我在Motorola網絡部工作超過了5年,所在的產品線也是采用統一軟件開發過程和敏捷思想(但不是SCRUM)來組織軟件開發活動的,但這5年多的工作經歷從未引起我象微博上對于SCRUM話題的激烈討論這樣的思考。原因之一可能是,公司的流程已經很成熟了且形成了一種文化,不論怎樣的新人進入公司,都只需按照流程按步就班的工作就行了。另外,公司的開發流程并不包含象SCRUM所要求的形式化內容,使得我在工作中沒有機會體會和思考各種行為的利與弊。
?
與周圍的同事相比,我自認為自己的工作質量和效率都很突出,這歸功于我所掌握的知識、工具、方法和形成的思想。這四大塊內容也是將要出版的《專業嵌入式軟件開發 — 全面走向高質高效編程》一書的骨架。然而,最近微博上對于SCRUM的討論使我意識到,我的焦點更多地放在了工程師身上,而忽視了從組織的角度思考如何高質高效地從事軟件開發工作。即使這樣,我仍持這樣一種觀點:不論是怎樣的開發方法,一定要最終從基層工程師身上找到著力點,因為軟件產品的最終質量是他們“碼”出來的。一個方法論是否真的有效,得看方法論能多大程度地幫助工程師高效地開發出高質代碼,且該方法論被工程師所接受。注意,是“幫助”他們而不是“規范”他們。
?
對于SCRUM我還是一個門外漢(注:Motorola網絡部被NSN收購后也要求使用SCRUM,希望到時能寫些文章與大家分享所得與體會),但這并不妨礙我思考從事高質高效軟件開發我們到底需要什么。
SCRUM是銀彈嗎?絕對不是,因為她只是一個很粗的開發流程框架,仍無法消除開發活動中的人為因素(但可以減緩)。如果SCRUM不是銀彈,那將SCRUM引入到團隊中時我們應如何本地化呢?
?
模型
縱觀軟件行業開發方法論的發展,大多關注于開發過程。這一點從瀑布模型、統一軟件開發過程、CMMI和現在的敏捷軟件開發方法無一例外。開發工程化的思想深深地影響著軟件行業對開發方法論的探討,但業內也以意識到了軟件開發不只是工程,它更包含個體心理、行為等難以工程化的內容。在這里,我想拋磚引玉地提出自己的一個能力模型,來幫助思考我們到底需要什么、走向哪。該模型存在抽象與具體兩大層次。讓我們先從抽象模型開始,如圖1所示。?
圖1
?
從面象對象的角度來看,抽象模型是基類,而具體模型則是其派生類。高質高效的軟件開發工作需要涉及多個部門的各種崗位,各崗位的能力模型應在抽象模型的基礎上進行具體化。為了便于理解,圖2所示了我所認為的軟件開發部門的能力模型。

圖2
意義
引入這一能力模型的意義在于:
? ??1) 讓我始終牢記實現高質高效的軟件開發是所有活動的根本目的。
? ??2) 幫助我們在探索軟件開發方法論的道路上時刻關注我們需要什么,并以此了解軟件開發方法論解決了什么問題,哪些問題又是開發方法論不能解決的。
? ??3)為人力資源管理提供一定的框架。引導組織思考:我們需要招聘什么樣的人?人員培養的著力點是什么?

結束語
這個模型是我花了不到一天的時間想出來的,所以一定很粗糙。個人認為,這個模型不應只是一種文字游戲的玩法,更應包含一定的實證研究。比如,模型中的關鍵要素又是什么?各要素的比重是多少?但無論如何,我希望這樣的模型不會讓我們在諸如SCRUM這樣的探討中迷失軟件開發活動的本原,這是我寫這篇文章的根本出發點。
?
最后,歡迎讀者提出自己的見解和參與討論。我的微博是@杭州李云(新浪)或@杭州李云(51CTO)。
?
Q&A
1. 軟件設計是質量之本,為什么在軟件開發工程師模型中沒有體現?
答:設計能力應體現在工程師的抽象與概括能力上,這兩者在模型中已涵蓋。

2. 在軟件開發工程師模型中為什么沒有體現建模的重要性?
答:建模應是軟件架構師的工作內容。建模在模型中可分解為“抽象 + 概括 + 工具”,它其實是設計的一種表達形式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python并發編程之多線程

多線程 線程 1.什么是線程 進程是一個執行空間 , 線程就是其中真正工作的單位 , 每一個進程至少有一個線程(如果我們把操作系統比喻為一個工廠 , 進程就是車間 , 線程就是流水線) 進程包含了運行該程序所需要所有資源 , 進程是一個資源單位 , 線程是CPU的最小執行單位 每一個進…

JavaScript幾個難點

1. 立即執行函數 立即執行函數,即Immediately Invoked Function Expression (IIFE),正如它的名字,就是創建函數的同時立即執行。它沒有綁定任何事件,也無需等待任何異步操作: (function() { // 代碼 // ...})(); f…

真格量化學習

真格量化學習使用 期權的量化回測 引入必須的庫: from PoboAPI import * import datetime import time import numpy as np初始化參數設定 以50為例 def OnStart(context) :print("I\m starting...")#設定一個全局變量品種,本策略交易50ETF期權g

智能小程序檔案館——如何給“包”瘦身

上傳小程序代碼的時候包體積太大不知如何是好?小程序打開速度慢,流量耗費大不知如何優化?在今天的文章里,我們一起來討論一下如何給“包”瘦身。 為什么要限制包的大小? 我們都知道小程序作為一種 Hybrid 的解決方案&a…

軟件架構師的能力與特質

軟件開發工程師的職業發展無非兩大類:一是做“官”,從事管理工作;二則繼續從事技術工作。對于后者,軟件架構師(software architect)是很多軟件開發工程師追求的理想崗位。在這我想談一談軟件架構師所需的幾…

IntelliJ IDEA編碼設置

見:https://www.cnblogs.com/winner-0715/p/6364306.html項目中為了避免亂碼等問題應該使用UTF-8編碼方式,其實把編碼方式設置成UTF-8是創建完項目后就要做的事,按照如圖所示進行設置:這里要將Transparent native-to-ascii conversion選項勾選, 否則項目…

C#實現像微信PC版一樣的掃碼登錄功能

現在好些網站都支持掃碼登錄,感覺上安全了很多,但是本地程序掃碼登錄的不多,就用C#實現了一下,需要作如下準備 在官網上申請一個企業微信,有條件的話做個企業認證吧,我們的是認證過的,所以賬號和本地其他系統的賬號是統一的.在應用中創建一個應用,這個是關鍵,我們掃碼就是和它有…

JVM(一)史上最佳入門指南

2019獨角獸企業重金招聘Python工程師標準>>> 提到Java虛擬機(JVM),可能大部分人的第一印象是“難”,但當讓我們真正走入“JVM世界”的時候,會發現其實問題并不像我們想象中的那么復雜。唯一真正令我們恐懼的…

如何成為一個技術“牛人”

今天給浙江大學過來的幾個還沒有畢業的研究生做面試,這些研究生是想來公司實習的。在面試的過程中,一個學生問我“我們有C/C、JAVA等等多種語言,我如何才能成為某一方面的一個技術牛人呢?這一問題一直困擾著我”,對于這…

python量化數據處理小細節(以后還會不斷補充)

使用tushare數據源獲取數據后處理 以下都是本人在獲得數據后,進行量化回測時,處理數據遇到的各種坑以及解決方案,有些甚至都很幼稚,切勿嘲笑 獲取數據 導包 import tushare as ts import pandas as pd import matplotlib #(ju…

Linux find和grep的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 grep是查找文件中匹配條件的行,find是搜索匹配條件的文件。 1.find:查找文件或目錄語法: find 查找位置 文件名或目錄名如:在…

Mysql 忘記密碼重置教程

https://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html 百度經驗轉載于:https://www.cnblogs.com/leaf-cq/p/10410694.html

067:【Django數據庫】ORM查詢條件詳解-range

【Django數據庫】ORM查詢條件詳解-range range:判斷某個 field 的值是否在給定的區間中。示例代碼如下: # views.py文件內容:from datetime import datetime from django.utils.timezone import make_awaredef index(request):start_time ma…

貼吧爬蟲

import requests import re#根據url獲取網頁html內容 def getHtmlContent(url):page requests.get(url)return page.texthtml getHtmlContent(https://tieba.baidu.com/p/4840106397)#以html中使用re模塊解析出所有jpg圖片的url #百度貼吧html中jpg圖片的url格式:…

別把自己變成了“二等公民”

上周參加一個代碼審查會,在會上發現了設計上的一個很嚴重的錯誤。于是,我提了好幾個問題,想知道為什么會出現這一錯誤。但是,我的同事告訴我這都是印度團隊做的設計。需要提供的一個背景信息是,這個項目是我所在的研發…

jquery函數加載及生成隨機數

$(document).ready(function () {var code ; //在全局定義驗證碼  1.將函數寫好 function createCode(){code "";var codeLength 4;//驗證碼的長度var checkCode document.getElementById("code");var random new Array(0,1,2,3,4,5,6,7,8,9,A,B,C…

rsync解說

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、簡介1、認識Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間…

關于java中getClass()和getSuperClass()的講解

為了講解這個問題,我們先來看一下下面的代碼: package com.yonyou.test;import java.util.Date;class Test extends Date{private static final long serialVersionUID 1L;public static void main(String[] args) {new Test().print();}public void print(){Syste…

期權回測框架設計思路

期權回測,博主已經研究了很長時間,也接觸了不少平臺,如真格,以及這位博主提供的思路(https://blog.csdn.net/luoqingyong/article/details/107523930),利用backtrader進行期權回測。確實國內做期…

UVA815

這道題主要學到的就是數據結構的組織,一些需要從小到大排列的東西,這些東西還有對應的東西。這個時候使用map可以解決 下面貼出代碼。其中所使用的思想,估計這個東西是沒法學的,這就只能是靈感 //這是什么吉爾題,題意都…