青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

兔子的技術博客

兔子

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

幾個軟件研發團隊管理的小問題

最近在與一位總經理交流的時候,他談到他們公司的軟件研發管理,說:“我們公司最大的問題是項目不能按時完成,總要一拖再拖。”他問我有什么辦法能改變這個境況。從這樣一個問題開始,在隨后的交談中,又引出他一連串在軟件研發管理中的遇到的問題,包括:

 

. 現有代碼質量不高,新來的開發人員接手時寧愿重寫,也不愿意看別人留下的“爛”代碼,怎么辦?

. 重構會造成回退,怎樣避免?

. 有些開發人員水平相對不高,如何保證他們的代碼質量?

. 軟件研發到底需不需要文檔?

. 要求提交代碼前做Code Review,而開發人員不做,或敷衍了事,怎么辦?

. 當有開發人員在開發過程中遇到難題,工作無法繼續,因而拖延進度,怎么解決?

. 如何提高開發人員的主觀能動性?

 

其實,每個軟件研發團隊的管理者都面臨著或曾經面臨過這些問題,也都有著自己的管理“套路”來應對這些問題。我把我的“套路”再此絮叨絮叨。

 

1. 項目不能按時完成,總要一拖再拖,怎么改變?

 

找解決辦法前,當然要先知道問題為什么會出現。這位總經理說:“總會不斷地有需求要改變和新需求提出來,使原來的開發計劃不得不延長。”原來如此。知道根源,當然解決辦法也就有了,那就是“敏捷”。敏捷開發因其迭代(Iterative)和增量(Incremental)的思想與實踐,正好適合“需求經常變化和增加”的項目和產品。在我講述了敏捷的一些概念,特別是Scrum的框架后,總經理也表示了對“敏捷”的認同。

 

其實仔細想想,這里面還有一個非常普遍的問題。對于產品的交付時間或項目的完成時間,往往由高級管理層根據市場情況決策和確定。在很多軟件企業中,這些決策者在決策時往往忽略了一個重要的參數,那就是團隊的生產率(Velocity)。生產率需要量化,而不是“拍腦門子”感覺出來的。敏捷開發中有關于如何估算生產率的方法。所以使用敏捷,在估算產品交付時間或項目完成時間時,是相對較準確的。Scrum創始人之一的Jeff Sutherland說,他在一個風險投資團隊做敏捷教練時,團隊中的資深合伙人會向所有的待投資企業問同一個問題:“你們是否清楚團隊的生產率?”而這些企業都很難做出明確的答復。軟件企業要想給產品定一個較實際的交付日期,就首先要弄清楚自己的軟件生產率。

 

2. 現有代碼質量不高,新來的開發人員接手時寧愿重寫,也不愿意看別人留下的“爛”代碼,怎么辦?

 

這可能是很多軟件開發工程師都有過的體驗,在接手別人的代碼時,看不懂、無法加新功能,讀代碼讀的頭疼。這說明什么?排除接手人個人水平的因素,這說明舊代碼可讀性、可擴展性比較差。怎么辦?這時,也許重構是一種兩全其美的辦法。接手人重構代碼,既能改善舊代碼的可讀性和可擴展性,又不至于因重寫代碼帶來的時間上的風險。

 

從接手人心理的角度看,重構還有一個好的副作用,就是代碼重構之后,接手人覺得那些原來的“爛”代碼被修改成為自己引以自豪的新成就。《Scrum敏捷軟件開發》的作者Mike Cohn寫到過:“我的女兒們畫了一幅特別令人贊嘆的杰作后,她們會將它從學校帶回家,并想把它展示在一個明顯的位置,也就是冰箱上面。有一天,在工作中,我用C++代碼實現了某個特別有用的策略模式的程序。因為我認定冰箱門適合展示我們引以為豪的任何東西,所以我就將它放上去了。如果我們一直對自己工作的質量特別自豪,可以驕傲地將它和孩子的藝術品一樣展示在冰箱上,那不是很好嗎?”所以這個積極的促進作用,將使得接手人感覺修改的代碼是自己的了,而且期望能夠找到更多的可以重構的東西。

 

3. 重構會造成回退,怎樣避免?

 

重構確實很容易造成回退(Regression)。這時,重構會起到與其初衷相反的作用。所以我們應該盡可能多地增加單元測試。有些老產品,舊代碼,可能沒有或者沒有那么多的單元測試。但我們至少要在重構前,增加對要重構部分代碼的單元測試。基于重構目的的單元測試,應該遵循以下的原則(見《重構》第4章:構筑測試體系):

- 編寫未臻完善的測試并實際運行,好過對完美測試的無盡等待。測試應該是一種風險驅動行為,所以不要去測試那些僅僅讀寫一個值域的訪問函數,應為它們太簡單了,不大可能出錯。

- 考慮可能出錯的邊界條件,把測試火力集中在哪兒。扮演“程序公敵”,縱容你心智中比較促狹的那一部分,積極思考如何破壞代碼。

- 當事情被公認應該會出錯時,別忘了檢查是否有異常如期被拋出。

- 不要因為“測試無法捕捉所有Bug”,就不撰寫測試代碼,因為測試的確可以捕捉到大多數Bug。

- “花合理時間抓出大多數Bug”要好過“窮盡一生抓出所有Bug”。因為當測試數量達到一定程度之后,測試效益就會呈現遞減態勢,而非持續遞增。

說到《重構》這本書,其實在每個重構方法中都有“作法(Mechanics)”一段,在重構的實踐中按照上面所述的步驟進行是比較穩妥的,同時也能避免很多不經意間制造的回退出現。

 

4. 要求提交代碼前做Code Review,而開發人員不做,或敷衍了事,怎么辦?

 

如果每個開發人員都是積極主動的,Code Review的作用能落到實處。但如果不是呢?團隊管理者需要一些手段促使其有效地進行Code Review。首先,我們采用的Code Review有2種形式,一是Over-the-shoulder,也就是2個人座在一起,一個人講,另一個人審查。二是用工具Code Collaborator來進行。無論哪種形式,在提交代碼時,必須注明關于審查的信息,比如:審查者(Reviewer)的名字或審查號(Review ID,Code Collaborator自動生成),每天由一名專職人員來檢查Checklist中的每一條,看是否有人漏寫這些信息,如果發現會提醒提交的人補上。另外,某段提交的代碼出問題,提交者和審查者都要一起來解決出現的問題,以最大限度避免審查過程敷衍了事。

 

博主Inovy在某個評論說的很形象:“木(沒)有賞罰的制度,就是帶到廁所的報紙,看完就可以用來擦屁股了。”沒有獎懲制度作保證,當然上面的要求沒有什么效力。所以,當有人經常不審查就提交,或審查時不負責任,它的績效評定就會因此低一點,而績效的評分是跟每年工資漲落掛鉤的。說白了,可能某個人會因為多次被查出沒有做Code Review就提交代碼,而到年底加薪時比別人少漲500塊錢。

 

5. 軟件研發到底需不需要文檔?

 

軟件研發需要文檔的起原可能有2種,一是比較原始的,需要文檔是為了當開發人員離職后,企業需要接手的人能根據文檔了解他所接手的代碼或模塊的設計。二是較高層次的,企業遵從ISO9001質量管理體系或CMMI。

 

對于第一種,根源可能來自于兩個方面:

- 原開發人員設計編碼水平不高,其代碼可讀性較差。

- 設計思想和代碼只有一個人了解,此人一旦離職,無人知道其細節。

在編碼前寫一些簡單的設計文檔,有助于理清思路,尤其是輔以一些UML圖,在交流時也是有好處的。但同時,我們也應該提高開發人員的編碼水平增加其代碼的可讀性,比如增強其變量命名的可讀性、用一些被大家所了解的設計模式來替代按自己某些獨特思路編寫的代碼、增加和改進注釋等等,以減少不必要的文檔。另外推行代碼的集體所有權(Collective Ownership),避免某些代碼只被一個人了解,這樣可以減少以此為目的而編寫的文檔。

 

對于第二種,情況有些復雜。接觸過敏捷開發的人都知道《敏捷宣言》中的“可以工作的軟件勝于面面俱到的文檔”。接觸過CMMI開發或者ISO9001質量管理體系的人知道它們對文檔的要求是多么的高。它們看起來水火不相容。但是,它們的宗旨是一致的,即:構建高質量的產品。

 

對于敏捷,使用手寫用戶故事來記錄需求和優先級的方法,以及在白板上寫畫的非正式設計,是不能通過ISO9001的審核的,但當把它們復印、拍照、增加序號、保存后,可以通過審核。每次都是成功的Daily Build和Auto Test報告無法證明它們是否真正被執行并真正成功,所以不能通過ISO9001的審核。但添加一個斷言失敗(類似assert(false)的斷言)的測試后,則可以通過審核。

 

CMMI與敏捷也是互補的,前者告訴組織在總體條款上做什么,但是沒有說如何去做,后者是一套最佳實踐。SCRUM之類的敏捷方法也被引入過那些已通過CMMI5級評估的組織。很多企業忘記了最終目標是改進他們構建軟件及遞交產品的方式,相反,它們關注于填寫按照CMMI文檔描述的假想的缺陷,卻不關心這些變化是否能改進過程或產品。

 

所以敏捷開發在過程中只編寫夠用的文檔,和以“信息的溝通、符合性的證據以及知識共享”作為主要目標的質量體系文檔要求并不矛盾。在實踐中,我們可以按以下方法做,在實現SCRUM的同時,符合審核和評估的要求:

 

- 制作格式良好的、被細化的、被保存的和能跟蹤的Backlog。復印和照片同樣有效。

- 將監管需要的文檔工作也放入Backlog。除了可以確保它們不被忘記,還能使監管要求的成本是可見的。

- 使用檢查列表,以向審核員或評估員證明活動已執行。團隊對“完成”的定義(Definition of “Done”)可以很容易轉變為一份檢查列表。

- 使用敏捷項目管理工具。它其實就是開發程序和記錄的電子呈現方式。

 

總而言之,軟件研發需要文檔(但文檔的形式可以是多種多樣的,用Word寫的文字式的文件是文檔,用Visio畫的UML圖也是文檔,保存在Quality Center中的測試用例也是文檔),同時我們只需寫夠用的文檔。

 

6. 當有開發人員在開發過程中遇到難題,工作無法繼續,因而拖延進度,怎么解決?

 

這也是個常遇到的問題。如果管理者對于某個工程師的具體問題進行指導,就會陷入過度微觀管理的境地。我們需要找到宏觀解決辦法。一,我們基于Scrum的“團隊有共同的目標”這一規則,利用前面提到的集體所有權,當出現這些問題時,用團隊中所有可以使用的力量來幫助其擺脫困境,而不是任其他人袖手旁觀。當然這里會牽扯到績效評定的問題,比如:提供幫助的人會覺得,他的幫助無助于自己績效評定的提高,為什么要提供幫助。這需要人力資源部門在使用Scrum開發的團隊的績效評估中,盡量消除那些傾向個人的因素,還要包含團隊協作的因素,廣泛聽取個方面的意見,更頻繁地評估績效等等。

 

二,即使動用所有可以使用的力量,如果某個難題真的無法逾越,為了減少不能按時交付的風險,產品負責人應當站出來,并有所作為。要么重新評估Backlog的優先級,使無法繼續的Backlog遲一點交付,先做一些相對較低優先級的Backlog,以保證整體交付時間不至于延長;要么減少部分功能,給出更多的時間去攻克難題。總之逾越技術上難關會使團隊的生產率下降,產品負責人必須作出取舍。

 

7. 有些開發人員水平相對不高,如何保證他們的代碼質量?

 

當然首先讓較有經驗的人Review其要提交的代碼,這幾乎是所有管理者會做的事。除此之外,管理者有責任幫助這些人(也包括水平較高的人)提高水平,他們可以看一些書,上網看資料,讀別人的代碼等等,途經還是很多的。但問題是你如何去衡量其是否真正有所收獲。我們的經驗是,在每年大約3月份為每個工程師制定整個年度的目標,每個人的目標包括產品上的,技術上的,個人能力上的等4到5項。半年后和一年后,要做兩次Performance Review,目標是否實現,也會跟績效評定掛鉤。我們在制定目標時,遵循SMART原則,即:

 

Specific(明確的):目標應該按照明確的結果和成效表述。

Measurable(可衡量的):目標的完成情況應該可以衡量和驗證。

Aligned(結盟的):目標應該與公司的商業策略保持一致。

Realistic(現實的):目標雖然應具挑戰性,但更應該能在給定的條件和環境下實現。

Time-Bound(有時限的):目標應該包括一個實現的具體時間。

 

比如:某個人制定了“初步掌握本地化技術”的目標,他要確定實現時間,要描述學習的途經和步驟,要通過將技術施加到公司現有的產品中,為公司產品的本地化/國際化/全球化作一些探索,并制作Presentation給團隊演示他的成果,并準備回答其他人提出的問題。團隊還為了配合其實現目標,組織Tech Talk的活動,供大家分享每個人的學習成果。通過這些手段,提高開發人員的自學興趣,并逐步提高開發人員的技術水平。

 

8. 如何提高開發人員的主觀能動性?

 

提高開發人員的主觀能動性,少不了激勵機制。不能讓開發人員感到,5年以后的他和現在比不會有什么進步。你要讓他感到他所從事的是一個職業(Career),而不只是一份工作(Job)。否則,他們是不會主動投入到工作中的。我們的經驗是提供一套職業發展的框架。框架制定了2類發展道路,管理類(Managerial Path)和技術類(Technical Path),6個職業級別(1-3級是Entry/Associate,Intermediate,Senior。4級管理類是Manager/Senior Manager,技術類是Principal/Senior Principal。5級管理類是Director/Senior Director,技術類是Fellow/Architect。6級是Executive Management)。每個級別都有13個方面的具體要求,包括:范圍(Scope)、跨職能(Cross Functional)、層次(Level)、知識(Knowledge)、指導(Guidance)、問題解決(Problem Solving)、遞交成果(Delivering Result)、責任感(Responsbility)、導師(Mentoring)、交流(Communication)、自學(Self-Learning),運作監督(Operational Oversight),客戶響應(Customer Responsiveness)。每年有2次提高級別的機會,開發人員一旦具備了升級的條件,他的Supervisor將會提出申請,一旦批準,他的頭銜隨之提高,薪水也會有相對較大提高。從而使每個開發人員覺得“有奔頭”,自然他們的主觀能動性也就提高了。

 

上面的“套路”涉及了軟件研發團隊管理中的研發過程、技術實踐、文檔管理、激勵機制等一些方面。但只是九牛一毛,研發團隊管理涵蓋的內容還有很多很多,還需要管理者在不斷探索和實踐的道路上學習和掌握。

轉自:http://www.cnblogs.com/wanghui9072229/archive/2011/03/18/1988477.html
posted on 2013-08-22 14:21 會飛的兔子 閱讀(479) 評論(0)  編輯 收藏 引用 所屬分類: 開發過程管理
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美有码在线视频| 久久亚洲影音av资源网| 国产日韩欧美一区二区三区四区| 欧美v亚洲v综合ⅴ国产v| 久久天天躁狠狠躁夜夜av| 久久综合色婷婷| 老牛嫩草一区二区三区日本 | 午夜在线a亚洲v天堂网2018| 亚洲自拍偷拍色片视频| 久久激情视频久久| 欧美黑人在线播放| 国产精品人人做人人爽人人添| 国产欧美精品国产国产专区| 一区二区在线免费观看| 亚洲精品日韩久久| 国产一区二区欧美| 国产精品国产三级国产专播精品人| 午夜亚洲激情| 亚洲日韩中文字幕在线播放| 亚洲黄色精品| 亚洲综合精品四区| 男男成人高潮片免费网站| 国产精品99免费看| 亚洲国语精品自产拍在线观看| 亚洲视频一区二区| 免费不卡在线观看| 亚洲特级毛片| 欧美大学生性色视频| 国产精品视频精品视频| 亚洲欧洲日产国产网站| 欧美呦呦网站| 日韩视频免费观看| 免费观看欧美在线视频的网站| 国产精品久久久久av| 亚洲福利专区| 久久久蜜桃精品| 在线天堂一区av电影| 蜜桃精品久久久久久久免费影院| 国产精品久久久久久影视| 亚洲三级观看| 免费成人高清| 久久国产夜色精品鲁鲁99| 国产精品久久久久久久久久久久久久 | 久久这里只精品最新地址| 欧美午夜视频在线| 亚洲精品视频免费观看| 老牛嫩草一区二区三区日本| 亚洲综合色自拍一区| 欧美日韩一区在线播放| 日韩视频一区二区三区在线播放| 久久伊伊香蕉| 欧美淫片网站| 国产一区二区中文字幕免费看| 亚洲欧美日本在线| 一区二区三区视频在线观看| 欧美另类一区| 在线亚洲美日韩| 亚洲美女视频网| 欧美日韩 国产精品| 亚洲另类在线视频| 亚洲日本乱码在线观看| 欧美搞黄网站| 亚洲神马久久| 亚洲一区二区三区精品在线观看| 欧美电影免费观看大全| 欧美日韩亚洲网| 9人人澡人人爽人人精品| 欧美xx69| 欧美大片网址| 日韩一级欧洲| 亚洲国产精品免费| 欧美经典一区二区| 亚洲视频欧美视频| 亚洲一区在线视频| 国产模特精品视频久久久久| 欧美综合国产精品久久丁香| 欧美一级免费视频| 激情综合在线| 亚洲激情在线播放| 国产精品久久久对白| 狠狠色伊人亚洲综合成人| 国产欧美日韩在线观看| 久久gogo国模啪啪人体图| 午夜亚洲福利| 又紧又大又爽精品一区二区| 欧美黑人一区二区三区| 欧美欧美天天天天操| 亚洲欧美日韩精品久久| 亚洲免费影视第一页| 国产一区二区成人| 蜜臀99久久精品久久久久久软件 | av成人免费在线| 亚洲小视频在线| 黑丝一区二区| 亚洲欧洲三级| 国产日韩一区二区三区| 欧美黄色片免费观看| 欧美日韩亚洲一区二区三区在线观看| 亚洲——在线| 久久综合色一综合色88| 亚洲免费中文| 欧美成年人视频| 久久国产精品第一页| 欧美激情亚洲| 久久免费观看视频| 欧美手机在线| 欧美国产亚洲精品久久久8v| 国产精品爱啪在线线免费观看| 久久综合给合| 国产精品欧美日韩久久| 欧美黄色一级视频| 国产伊人精品| 亚洲图片你懂的| 99国内精品久久| 久久人人爽爽爽人久久久| 午夜精品久久久久久久99樱桃| 美日韩丰满少妇在线观看| 久久黄色小说| 国产精品美女久久久久久久| 亚洲精华国产欧美| 激情欧美日韩| 亚洲欧美一区二区激情| 亚洲性感美女99在线| 亚洲日本乱码在线观看| 欧美一区二区三区免费大片| 一本色道久久综合一区| 乱码第一页成人| 久久综合狠狠综合久久综青草| 国产精品高清在线观看| 亚洲人成网站777色婷婷| 精品动漫一区| 亚洲免费一级电影| 香蕉成人伊视频在线观看| 欧美日韩一区二区在线观看| 亚洲区一区二| 99在线热播精品免费99热| 欧美精品免费播放| 91久久精品国产| 日韩写真视频在线观看| 欧美www视频在线观看| 亚洲国产高清一区| 亚洲美女中文字幕| 欧美日韩国产精品| 亚洲激情在线观看| 亚洲视频一起| 国产精品久久一级| 亚洲欧美精品suv| 久久久久久亚洲精品杨幂换脸| 国产日韩欧美二区| 久久久久久久91| 欧美激情在线狂野欧美精品| 亚洲人成人一区二区在线观看| 久久综合综合久久综合| 亚洲福利在线观看| 中文亚洲欧美| 国产欧美日韩一区二区三区在线 | 国产资源精品在线观看| 欧美在线高清| 你懂的视频一区二区| 亚洲国产你懂的| 欧美日韩国产一区二区三区地区| 99视频精品免费观看| 欧美一级一区| 影视先锋久久| 欧美日本一道本在线视频| 中文在线资源观看视频网站免费不卡| 亚洲欧美精品suv| 在线日韩中文| 欧美日韩黄色大片| 欧美一级久久| 欧美高清在线一区| 午夜欧美视频| 亚洲电影激情视频网站| 欧美视频在线观看一区| 久久久久久穴| 亚洲视频在线看| 久久中文字幕一区二区三区| 一本到12不卡视频在线dvd| 国产女人精品视频| 欧美激情综合五月色丁香小说| 亚洲伊人伊色伊影伊综合网| 欧美jjzz| 久久精品国产2020观看福利| 亚洲日本电影| 狠狠爱综合网| 国产精品日韩欧美综合| 欧美激情久久久久| 久久成人18免费观看| 一本色道**综合亚洲精品蜜桃冫 | 亚洲综合日韩| 亚洲成在人线av| 久久婷婷综合激情| 久久―日本道色综合久久| 亚洲免费观看高清完整版在线观看熊 | 欧美日韩国产精品一卡| 久久xxxx| 亚洲欧美日韩精品久久久| 亚洲精品日韩在线| 欧美jjzz| 久久躁狠狠躁夜夜爽|