人性化的軟件開發(fā)
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
只要有了優(yōu)秀的編程工具、高級的編程語言、豐富的構(gòu)件庫和輔助程序建立系統(tǒng),就能解決所有問題?并及時地在預(yù)算范圍內(nèi)交付良好的軟件系統(tǒng)嗎? 一個軟件開發(fā)團隊如果想要在項目中獲得最大限度的成功,離不開人的因素。 軟件開發(fā)團隊中的意見 一個軟件開發(fā)團隊如果想要在項目中獲得最大限度的成功,取決于團隊中的成員能否形成技術(shù)性一致意見。但為什么這點如此重要呢?是不是團隊成員只要在諸如目錄表格的布局上達成一致,或者建立一個很好的錯誤匯報機制就行了呢?技術(shù)性一致意見指的并不是與同事打成一片就可以了(當(dāng)然,這也不是說在同事之間建立良好的關(guān)系有什么錯誤)。技術(shù)性一致意見是指充分吸取團隊中每個成員的技巧和經(jīng)驗,其目的是為了開發(fā)出更好的軟件。 職業(yè)軟件人員也許能夠迅速理解一款好的軟件,至少當(dāng)他們看見一個好的軟件時會宣稱自己能夠理解它,但是,在軟件開發(fā)者中,很少有人能理解技術(shù)性一致意見??赡茉S多軟件開發(fā)者會說,我們以前使用過一致意見的方法來解決問題,但是效果非常差,他們還會舉出許多例子,比如,一些很棒的構(gòu)想就是在不斷的討論中葬送了,最后為了所謂的整體性只得做出妥協(xié);本來6個月可以完成的項目最后拖了1年:團隊的能力也沒有完全發(fā)揮出來。但如果仔細地聽聽他們的意見,你就會意識到他們所說的解決問題的方式根本就不是技術(shù)性一致意見,而是折衷。那么,二者之間有什么差異呢? 折衷是沒有前途的 折衷意味著所做出的選擇是一種似是而非的東西。既不是甲,也不是乙,而是一個介于二者之間的東西。我們可以通過一個典型的例子來說明。如你的團隊正在開發(fā)一個圖形用戶界面的項目,一部分人強烈建議直接將控制按鈕放在屏幕底部,而另一部分人建議在屏幕的左側(cè)放置一個控制窗體。在這兩種意見中,一種是水平放置,一種是垂直放置,形成了兩個極端。那么,一個最具有代表性的折衷方案就是,將控制按鈕沿著對角線放置在屏幕的中央。 就像上面的例子所描述的,由折衷所產(chǎn)生的解決方案常常要比任何一個原有的方案都要差勁。但是技術(shù)性一致意見就恰恰相反,它所產(chǎn)生的解決方案要比任何一個原有的方案都要好。如果不使用技術(shù)性一致意見,往往會由于顧忌到每種備選方案的優(yōu)點,而采用優(yōu)點均衡的方式,但實際上每種備選方案的優(yōu)點也就喪失了。真正的一致意見不是基于那種讓每個個體都做出讓步的折衷,而是基于綜合的,新的綜合體要比原有的任何一個個體都要好。最后的結(jié)局就是,開發(fā)出了更好的軟件。 一個綜合體是一種具有新穎性的新個體,是集成了原有的每個建議和方案的本質(zhì)特征的個體。在上面所說的界面設(shè)計例子中,可以明顯地看出,一個具有創(chuàng)造性的綜合方案是給控制按鈕窗體加上選項,由用戶來決定是采用水平放置還是采用垂直放置。一致意見的方法不僅僅是將各種選擇方案的優(yōu)點集中起來,而且綜合方案還體現(xiàn)了新的特性和功能。通過集成水平放置和垂直放置這兩種方案,我們可以實現(xiàn)終端用戶定制。這樣,最后的軟件產(chǎn)品就集成了各種方案的好的方面,而不是壞的方面。 形成真正的一致意見并不是一件容易的事情,那些政客和工人談判代表們對此深有感觸。達成一個技術(shù)性的一致意見與達成一個政策性的一致意見是有所不同的,但是有些本質(zhì)特征是基本相似的:二者都需要制定一些約束條件以達成共識,參與者在討論過程中都需要保持一種信念。 真正的信徒 團隊成員必須堅信,從每個人的意見中提取出最好的方面并將其綜合起來,就此形成一個技術(shù)性的綜合體是完全可能的。只有堅信這點,成員們才有可能堅定不移地尋找最好的解決方案,而不是輕易地折衷或者固執(zhí)己見。每個成員發(fā)表自己對問題的看法,講述方案的優(yōu)缺點,通過堅持不懈地努力,成員們可以提高形成具有創(chuàng)造性方案的可能性,而這種創(chuàng)造性的方案會比原有的任何方案都更好。 當(dāng)每個成員都相信開發(fā)一個好的軟件要比在軟件中使用自己所喜愛的方案更重要時,一致意見式的設(shè)計會發(fā)揮更大的作用。如果我們注重最終軟件產(chǎn)品的質(zhì)量,在團隊討論過程中會更容易發(fā)現(xiàn)每種意見的優(yōu)點。 如果團隊中的成員不是獨自炫耀個人能力,而是認同聯(lián)合協(xié)作的工作方式,那么對于軟件開發(fā)會更有幫助。有些公司愿意獎勵杰出的個人,而不是獎勵團隊;或者晉升那些慣于單打獨斗,特別是那些不會也不可能與他人共事,常常一個人解決問題的程序員,而不是表彰整個團隊。這樣的公司會做出如下論斷:最好的軟件是他們的天才程序員開發(fā)出來的。這些公司意識不到,除了這種方法以外,其實還有其他的方法可以達到更好的效果。 在建立技術(shù)性一致意見時,一個必須遵循的原則就是:絕不能以貨易貨!對于政客們來說,采用以貨易貨的貿(mào)易方式是一種獲得成功的經(jīng)典策略,但對于技術(shù)性一致意見而言,這是有害無益的。舉例來說,在上面的界面設(shè)計例子中我們可以采用以貨易貨的方式,如果讓我同意你的愚蠢方案,將控制按鈕窗體放在屏幕底部,那么你就要同意我聰明的設(shè)計思想,加上沒有標簽的圖標。最終的結(jié)果就是,界面不是最好,而只是一個具有兩個普通特性的界面。這種以貨易貨的策略其實是另一種形式的折衷,而折衷之所以糟糕,是因為在不同方面所做的決策會相互影響。好的技術(shù)性一致意見必須將問題分別對待,對于不同的問題分別采用最好的解決方案,而絕不能因為某個方面固執(zhí)己見,致使另一個方面讓步。 尊重事實 一般來說,大家都認為技術(shù)決策所依據(jù)的都是技術(shù)性因素,諸如事實、可測量的數(shù)值、應(yīng)用中需要考慮的事項等。但實際情況是,諸如感覺、意見、直覺、偏見等,都會對決策的制定或者問題的解決產(chǎn)生影響,這些都是人在做事情時所不可避免的因素。盡管有些人試圖否認、控制、壓制這些非理性的因素,但這些都是絕不可能完全避免的。 對于那些希望采用技術(shù)性一致意見方式來解決問題的團隊,有一個基本的技巧是必須掌握的:將事實和意見分開。對于一個協(xié)同工作的團隊來說,如果期望創(chuàng)造性地解決問題并獲得最好的結(jié)論,他們必須知道他們已經(jīng)掌握了哪些信息,并能夠隨時獲得最好的信息。發(fā)表意見并不是錯誤,團隊成員應(yīng)該能夠自由地表達他們的意見。意見是有用的,特別是那些經(jīng)過深思熟慮的意見,但是成員在表達意見時必須能夠保證他們的意見不要和事實、數(shù)據(jù)、分析混在一起。就算是事實,也是具有局限性的。例如,在美學(xué)或者行銷領(lǐng)域中,事實所起的作用可能就會不太顯著。遺憾的是,有些團隊成員一旦形成自己的意見,他們往往就對事情的真實程度視而不見了。 有時候,把某些東西稱為事實并不意味著它就是真正的事實,因此,團隊必須學(xué)會如何單刀直入地解決問題,而且大家還需達成一致——不玩文字游戲。我的第一任妻子在我們共同生活的早期就學(xué)會了這一點,只要我說出以“事實很清楚地表明……”開頭的一段話,她就會對我所講的東西表示懷疑,因為這意味著隨后所講的話極有可能只是我個人的看法,而不是基于任何數(shù)據(jù)或證據(jù)所得到的結(jié)論。除了這個尷尬的話題外,我有時還會掉入另一個語言陷阱中,那就是眾所周知的“95%的科學(xué)家都認為……”。有些人可能意識到了,在軟件業(yè)中,有一句同樣著名的話:“你知道的,絕大多數(shù)的職業(yè)軟件工程師,至少95%以上,都會采用這個方法?!碑?dāng)然,如果你還想繼續(xù)使用這個小技巧,你必須改變百分數(shù),例如:“將近78%的WordPerfect用戶都知道最好的方法是……”,“如果我們做個調(diào)查,2/3以上的C程序員都會同意……”。有時候,看上去好像真的有那么多的科學(xué)家、軟件工程師、終端用戶站在你的背后支持你的意見。 但是,這僅僅是我的看法。 本文節(jié)選自《人件集:人性化的軟件開發(fā)》,Larry L. Constantine著,謝超等譯,由機械工業(yè)出版社發(fā)行。 該文章在 2012/5/7 14:24:35 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |