快速軟件開(kāi)發(fā) 學(xué)習筆記 之六第9章 Customer-oriented Development(面向客戶(hù)軟件開(kāi)發(fā))
Customer(“客戶(hù)”)這個(gè)詞,是指花錢(qián)購買(mǎi)擬開(kāi)發(fā)軟件產(chǎn)品的人或負責驗收軟件產(chǎn)品的人。我們可以簡(jiǎn)單地把最終用戶(hù)視為“客戶(hù)”。在所有項目中,通過(guò)改善客戶(hù)關(guān)系提高開(kāi)發(fā)速度是一條普遍適用的原則。
9.1 客戶(hù)對于快速開(kāi)發(fā)的重要性
以下是在快速開(kāi)發(fā)軟件項目中需要花費精力經(jīng)營(yíng)客戶(hù)關(guān)系的兩個(gè)主要理由:
l 良好的客戶(hù)關(guān)系能夠提高實(shí)際的開(kāi)發(fā)速度。如果與客戶(hù)具有合作而非敵對的關(guān)系,能夠與之進(jìn)行較好的溝通,實(shí)際上就是消滅了一個(gè)導致開(kāi)發(fā)低效、產(chǎn)生嚴重錯誤的主要來(lái)源。
l 良好的客戶(hù)關(guān)系能夠讓客戶(hù)感覺(jué)開(kāi)發(fā)速度較快。許多客戶(hù)之所以關(guān)心開(kāi)發(fā)速度,是因為他們害怕你根本完不成項目。如果在開(kāi)發(fā)過(guò)程中向客戶(hù)提供較好的進(jìn)度可視性,則會(huì )增加客戶(hù)對開(kāi)發(fā)人員的信任度,其對速度的關(guān)注將相應減少,而把注意力轉向功能、質(zhì)量等方面,從而使開(kāi)發(fā)速度僅成為眾多因素之一。
9.2 面向客戶(hù)的開(kāi)發(fā)實(shí)踐
9.2.1 需求分析
需求分析中最具挑戰性的問(wèn)題是如何獲得真正的需求。一項基于經(jīng)驗的研究表明:若客戶(hù)在制定需求的過(guò)程中有“很高”的參與度,則能將軟件生產(chǎn)率提高50%左右。
在制定需求規格書(shū)時(shí)讓客戶(hù)多參與固然重要,但同時(shí)需說(shuō)明的是:需求規格書(shū)不能完全由客戶(hù)編寫(xiě),否則同樣會(huì )使生產(chǎn)率降低。
最佳實(shí)踐:User-interface Prototyping(用戶(hù)界面原型法)
1. 在開(kāi)始使用用戶(hù)界面原型法之前,應確保每個(gè)人都明白用戶(hù)界面原型的唯一作用是引導用戶(hù)需求,因此是用完即扔的。確保管理層和開(kāi)發(fā)人員都了解這一點(diǎn)。
2. 構建原型的開(kāi)發(fā)人員應該是有開(kāi)發(fā)經(jīng)驗的人員,他/她應該具有良好的開(kāi)發(fā)意識,即使用最小的代價(jià)來(lái)構建原型。因此:
(1) 應選擇適合于快速界面開(kāi)發(fā)的原型語(yǔ)言。
(2) 關(guān)注于用戶(hù)能看到的界面,而對后臺的數據處理、網(wǎng)絡(luò )訪(fǎng)問(wèn)、文件讀寫(xiě)等操作則可以用stub(假象)來(lái)替代。
3. 把構建出的原型交付給最終用戶(hù),由用戶(hù)本人來(lái)測試、使用,并提供反饋意見(jiàn)。確保用戶(hù)不只是被構建的原型所吸引,而是真正考慮了原型是否已包括了所需要的全部功能。設計一個(gè)checklist,以便與用戶(hù)進(jìn)行全面的審核。
4. 根據用戶(hù)的反饋意見(jiàn),修正原型,并向客戶(hù)演示更新后的原型,確保雙方對系統的理解一致。
9.2.2 軟件設計
最佳實(shí)踐:Designing for Change(面向變更的設計)
1. 在軟件開(kāi)發(fā)生命期的早期就應該引入面向變更的設計。
2. 應該在設計階段或更早的階段,識別最有可能發(fā)生需求更改的區域,創(chuàng )建潛在變更的清單。下面是經(jīng)常發(fā)生需求變更的源頭:
l 硬件依賴(lài)性
l 文件格式
l 輸入與輸出
l 非標準的語(yǔ)言特性
l 難以設計和實(shí)現的部分
l 全局變量
l 特定數據結構的實(shí)現
l 抽象數據類(lèi)型的實(shí)現
l Business rules(業(yè)務(wù)規則)
l Sequence in which items will be processed
l 當前版本中好不容易才排除的需求
l 當前版本中很輕易就排除的需求
l 為下一版本規劃的feature
3. 采用Information Hiding(“信息隱藏”)方法將可能發(fā)生變更的設計結果隱藏在它自身的模塊中,常用的方法有:
l 模塊的接口應設計成與模塊內部的變更無(wú)關(guān)。
l 使用數據驅動(dòng)法,并確定好數據是存儲在源文件中還是外部文件中。
l 將為通用功能編寫(xiě)的代碼與為專(zhuān)用功能編寫(xiě)的功能分開(kāi)。
4. 定義程序族,而非一次只考慮一個(gè)程序。設計者應該盡力預測整個(gè)程序族的需要,包括橫向的版本(內部發(fā)布,英文版,歐洲版和遠東版)和后續的版本。
9.3 管理客戶(hù)期望
軟件開(kāi)發(fā)領(lǐng)域的諸多問(wèn)題,尤其是關(guān)于開(kāi)發(fā)速度的爭執,大都源于客戶(hù)對項目持有的不現實(shí)的期望。不現實(shí)的期望常由于進(jìn)度計劃引起。許多項目在需求和資源尚未確定的情況下,便由客戶(hù)制定了進(jìn)度計劃。如果開(kāi)發(fā)人員對一份不現實(shí)的進(jìn)度計劃表示同意,必然會(huì )使客戶(hù)產(chǎn)生不現實(shí)的期望。輕率的許諾在項目初期或許會(huì )令各方滿(mǎn)意,但從長(cháng)遠來(lái)看,這會(huì )損害開(kāi)發(fā)人員的信用,并破壞同客戶(hù)的關(guān)系。
因此,開(kāi)發(fā)人員協(xié)助用戶(hù)在制定進(jìn)度計劃時(shí)建立現實(shí)的期望,是項目成功的關(guān)鍵之一。開(kāi)發(fā)人員可以采取以下的做法:
l 努力弄清客戶(hù)的期望值。這可以減少大量的矛盾和額外的工作量。
l 培訓客戶(hù),使他們更好地理解軟件開(kāi)發(fā)過(guò)程。
l 堅決拒絕客戶(hù)提出的不合理的進(jìn)度計劃,堅持由科學(xué)的估算過(guò)程得到的估算結果。
第10章 激勵機制
毫無(wú)疑問(wèn),激勵是決定工作表現最重要的影響因素。大多數關(guān)于生產(chǎn)率的研究表明,激勵對生產(chǎn)率的影響比任何其它因素都大。盡管激勵因素看不見(jiàn)摸不著(zhù),但怎樣激勵軟件開(kāi)發(fā)人員也并非神秘莫測。本意將詳細闡述激勵開(kāi)發(fā)人員以提高開(kāi)發(fā)速度的方法。
10.1 典型的Developer Motivation
不同的人會(huì )因不同因素而得到激勵。激勵開(kāi)發(fā)人員的因素并不問(wèn)題和激勵管理人員的因素相同。表10-1按開(kāi)發(fā)人員和管理人員將各自激勵因素的重要程度進(jìn)行了排序。
順序
程序員和分析師
軟件經(jīng)理
1
Achievement
Responsibility
2
Possibility of growth
Achievement
3
Work itself(工作樂(lè )趣)
Work itself
4
Personal life
Recognition
5
Technical-supervision opportunity
Possibility of growth
6
Advancement(晉升)
Interpersonal relations, subordinate
7
Interpersonal relations, peers
Interpersonal relations, peers
8
Recognition
Advancement
9
Salary
Salary
10
Responsibility
Interpersonal relations, superior
11
Interpersonal relations, superior
Company policies and administration
12
Job security(工作保障)
Job security
13
Interpersonal relations, subordinate
Technical supervision opportunity
14
Company policies and administration
Status
15
Working conditions
Personal life
16
Status(身份地位)
Working conditions
開(kāi)發(fā)人員與管理人員之間的比較很有意思。與管理人員相比,開(kāi)發(fā)人員較少關(guān)心責任感和受認可程度。若要激勵開(kāi)發(fā)人員,更應強調技術(shù)挑戰性、自主性、學(xué)習并使用新技能的機會(huì )、職業(yè)發(fā)展以及對他們私人生活的尊重等。
應注意:不同的激勵因素對不同的人有不同的效果。一般的激勵因素可能對大部分人都起作用,但若能針對某個(gè)人考慮對他有用的激勵因素,則效果會(huì )更好。
10.2 最重要的5個(gè)激勵因素
10.2.1 Achievement
軟件開(kāi)發(fā)人員喜歡工作。激勵開(kāi)發(fā)人員的最好方式就是為他們提供一個(gè)良好的環(huán)境,讓他們能輕松進(jìn)行喜歡的工作——開(kāi)發(fā)軟件。
10.2.1.1 Ownership
Ownership是achievement motivation的關(guān)鍵。當人們實(shí)現他們自己的目標而非他人的目標時(shí),他們會(huì )更努力地工作。因此,在做以下的決策時(shí),軟件經(jīng)理都必須讓開(kāi)發(fā)人員參與其中:
l 同意按新的進(jìn)度計劃交付
l 同意交付新的feature或feature modification
l 招聘新的團隊成員
l 挑選赴項目外短期任務(wù)的開(kāi)發(fā)人員
l 產(chǎn)品設計
l 技術(shù)方面的權衡決策(例如:是以犧牲Feature B為代價(jià)來(lái)提高Feature A的性能,還是相反)
l 改變辦公室空間
l 改變計算機硬件
l 改變軟件工具
l 同意交付團隊已有規劃或尚未規劃的產(chǎn)品(例如:由客戶(hù)使用的原型或產(chǎn)品的預發(fā)布版本)
l 同意使用新的開(kāi)發(fā)過(guò)程(例如:一種新的變更控制方式,或一種新的需要規格書(shū)樣式)
10.2.1.2 Goal Setting
設定明確的開(kāi)發(fā)速度目標是加速軟件開(kāi)發(fā)的簡(jiǎn)單有效的方法,但卻容易被人忽略。你可能會(huì )問(wèn):如果設定了development-time的目標,開(kāi)發(fā)人員會(huì )為了實(shí)現這一目標努力工作嗎?答案是肯定的,如果他們懂得該目標是如何與其它目標相一致,并且如果這組目標從整體上講是合理的話(huà)。但是,如果這組目標是朝令夕改或者從整體上講完全不可能達到,那么開(kāi)發(fā)人員則會(huì )不予理睬。
最佳實(shí)踐:Goal Setting(目標設定)
1. 產(chǎn)品經(jīng)理或客戶(hù)只需簡(jiǎn)單明確地把自己想要得到什么告訴開(kāi)發(fā)人員:
l 想要最快的進(jìn)度
l 想要最小的項目風(fēng)險
l 想要項目進(jìn)度的可視性程度最大
2. 但是,只設定一個(gè)目標!同時(shí)設定多個(gè)目標反而讓人不知所措。
3. 一旦設定好目標,管理人員就應該同軟件開(kāi)發(fā)人員一親,關(guān)注于該目標。
10.2.2 發(fā)展機遇
一個(gè)企業(yè)可以考慮從以下幾方面鼓勵員工的職業(yè)發(fā)展:
l 提供報銷(xiāo)學(xué)費的進(jìn)修機會(huì )
l 給員工提供參加培訓或自學(xué)的假期
l 報銷(xiāo)購買(mǎi)專(zhuān)業(yè)書(shū)籍的費用
l 安排開(kāi)發(fā)人員到能擴展他們技能的項目上工作
l 為每個(gè)新的開(kāi)發(fā)人員指定mentor(這既向新人也向mentor表明了企業(yè)致力于職業(yè)發(fā)展)
l 避免過(guò)度的進(jìn)度壓力(進(jìn)度壓力過(guò)大會(huì )給開(kāi)發(fā)人員造成企業(yè)的首要任務(wù)是不管任何人力代價(jià)開(kāi)發(fā)新產(chǎn)品的印象)
10.2.3 Work Itself(工作樂(lè )趣)
工作中有5個(gè)方面是激勵的源泉:
l 技能的多樣性
l 任務(wù)的完整性
l 任務(wù)的重要性
l 自主性
l 工作反饋
工作樂(lè )趣也說(shuō)明了為什么對軟件開(kāi)發(fā)人員來(lái)說(shuō),quality比schedule更具激勵作用。能在技術(shù)前沿領(lǐng)域有所創(chuàng )新是技術(shù)型人才最大的動(dòng)力。
10.2.4 私人生活
對一個(gè)公司來(lái)說(shuō),要想用私人生活因素來(lái)激勵員工,就必須做出實(shí)際的計劃使開(kāi)發(fā)人員有時(shí)間享受個(gè)人生活,比如:
l 安排休假和假期
l 彈性工作時(shí)間(允許員工在工作日偶爾外出)
l 不加班
10.2.5 Technical-Supervision Opportunity
Technical-supervision opportunity并不局限于將某人指定為項目的technical lead。你可以更廣泛地運用這種激勵手段:
l 指派每個(gè)人分別作為某個(gè)特定領(lǐng)域的技術(shù)負責人,如user-interface design、database operations、printing、graphics、report formatting、analytics、networking、interfacing with other applications、installation、data conversion,等等。
l 指派每個(gè)人分別作為某個(gè)特定任務(wù)的技術(shù)負責人,如technical review、reuse、integration、tool evaluation、performance evaluation、system testing,等等。
l 除新手外,指定所有的人作為mentor??梢灾概蓅econd-level mentor與first-level mentor一直工作,second-level mentor有助于mentoring activity更好地開(kāi)展,他們也可以為first-level mentor提供更具技術(shù)經(jīng)驗的建議。
10.2.6 利用其它的激勵因素
10.2.6.1 Reward和Incentive
開(kāi)發(fā)人員會(huì )因為公司不進(jìn)行獎賞而變得倦怠,因此獎勵對long-term motivation來(lái)說(shuō)非常重要。但是,現金形式的獎勵必須謹慎處理。開(kāi)發(fā)者一般都善于進(jìn)行數學(xué)計算,他們會(huì )估算出和他們的付出相比,獎金是否值得。糟糕的獎勵制度就是給了最佳表現者6%的獎勵,同時(shí)也給了表現平庸者5%的獎勵。最終,最佳表現者的積極性受到了挫傷并離開(kāi)了公司。
向團隊成員表達出純精神上的感謝態(tài)度也很重要。一個(gè)公司如果想要在本行業(yè)保持20年以上的領(lǐng)先地位,就必須要有卓有成效的非貨幣形式的激勵措施。公司可以考慮以下的一些方式:
l 對取得某個(gè)特定的成績(jì)表達真誠的贊賞。
l 團隊的T恤、polo衫、手表、徽章、招貼畫(huà)、獎杯等。
l 幽默或嚴肅的證書(shū)、紀念品等。
l 重大成果的特別慶?;顒?dòng)。根據小組的喜好,可以是在喜歡的飯店進(jìn)餐,或者是看演出、潛水、滑冰、旅行,也可以是在老板的依據晚宴。
l 為該小組分布特殊政策,如周五可以著(zhù)便裝上班,為該小組添置乒乓球桌,冰箱里放置免費飲料等。
l 專(zhuān)門(mén)的(外地)培訓方案
l 晉升或提拔
l 特殊獎金
10.2.6.2 Performance Review
正確地進(jìn)行業(yè)績(jì)評價(jià)具有很大的激勵作用,而對員工的業(yè)績(jì)評價(jià)不當則會(huì )明顯挫傷積極性。業(yè)績(jì)評價(jià)是管理者所能提供的最重要、最貼切的工作反饋,并會(huì )長(cháng)時(shí)間影響下屬的表現(可能是正面的,也可能是負面的)。因此,業(yè)績(jì)評價(jià)必須是經(jīng)過(guò)高度權衡之后才做出的。
如果一個(gè)組織一年內進(jìn)行1-2次業(yè)績(jì)評價(jià),就可以利用這種高度權衡的方法。必須注意的是:進(jìn)行業(yè)績(jì)評價(jià)應當增加而不是削弱開(kāi)發(fā)人員的工作動(dòng)力。
10.3 士氣殺手
10.3.1 糟糕的工作環(huán)境
良好素養的開(kāi)發(fā)人員更看重公司能夠為他們提供工作條件從而可以高效地工作。如果工作環(huán)境的基本要求都不達標,那么就會(huì )挫傷這些開(kāi)發(fā)人員的積極性。
最佳實(shí)踐:高效工作環(huán)境
1. 努力為開(kāi)發(fā)人員營(yíng)造一個(gè)敞亮、安靜和不易受打擾的工作環(huán)境。以下是一些考慮因素:
l 合適的光照、供暖(最好有窗戶(hù))。
l 足夠大的桌子和相對封閉的工作間隔。
l 比較安靜,可以集中精力工作(如推行電郵或網(wǎng)上即時(shí)通訊)。
l 可方便地使用辦公設備(復印機、打印機、傳真、會(huì )議室)和辦公用品(筆、紙、白板)。
l 能立即或很快修理計算機故障。
l 好用的軟件工具。
2. 開(kāi)發(fā)人員、團隊負責人和低層管理者通常沒(méi)有權力把一個(gè)小組移到一個(gè)高效的辦公環(huán)境中。但如果項目的進(jìn)度壓力很大,并且管理層很關(guān)心提高生產(chǎn)率,那么可以試著(zhù)要求提供更為安靜和私密的辦公空間,并承諾提高生產(chǎn)率來(lái)回報公司。
3. 注意選擇在不緊張的時(shí)間段來(lái)改善辦公室環(huán)境,最好是在兩個(gè)項目之間。
10.3.2 低劣的軟件質(zhì)量
開(kāi)發(fā)人員的成就感是從他們所從事的開(kāi)發(fā)工作中獲得的。大多數開(kāi)發(fā)人員更注重軟件質(zhì)量而不僅僅是數量和進(jìn)度。項目管理者如果堅持為了達到苛刻的進(jìn)度而降低質(zhì)量,那么會(huì )使開(kāi)發(fā)人員的積極性極大受挫。如果意識到開(kāi)發(fā)人員不能在有效時(shí)間內完成高質(zhì)量的軟件產(chǎn)品,那么應當讓他們自己得出這個(gè)結論。他們或許會(huì )選擇降低產(chǎn)品的開(kāi)發(fā)難度,或者他們或許會(huì )用有限的時(shí)間開(kāi)發(fā)出一個(gè)質(zhì)量稍遜的產(chǎn)品。但不管他們怎么選擇,管理人員都不應該強迫開(kāi)發(fā)人員開(kāi)發(fā)一個(gè)質(zhì)量低劣的軟件產(chǎn)品,那樣做不會(huì )產(chǎn)生任何的激勵效果。
綠色通道:
與我聯(lián)系李嘉 (Justin)關(guān)注 - 0粉絲 - 80
0
(請您對文章做出評價(jià))
博主前一篇:
快速軟件開(kāi)發(fā) 學(xué)習筆記 之五 博主后一篇:
快速軟件開(kāi)發(fā) 學(xué)習筆記 之七