ゞ沉默是金ゞ

          魚離不開水,但是沒(méi)有說(shuō)不離開哪滴水.
          posts - 98,comments - 104,trackbacks - 0
           
          作者 Paritosh Ranjan 譯者 胡鍵

          敏捷項(xiàng)目通常持續(xù)的周期都很短。因此,在如此短的時(shí)間段里引入新技術(shù)總是充滿風(fēng)險(xiǎn)的。假若你準(zhǔn)備引入任何新技術(shù),并且最終完全失敗,那么搭建基礎(chǔ)設(shè)施所花的時(shí)間和成本,加上沖刺的失敗,將會(huì)把你打倒。

          適宜性

          在給應(yīng)用選擇技術(shù)時(shí),有一件重要的事情得記住:要看這項(xiàng)技術(shù)本身是否適合這個(gè)應(yīng)用,而不是去考慮它在市面上的流行程度。在制定決策時(shí),技術(shù)針對(duì)所需解決方案的適宜性應(yīng)該要比市場(chǎng)趨勢(shì)得到的關(guān)注程度要多得多。

          我們?cè)?jīng)有一個(gè)項(xiàng)目,它需要非結(jié)構(gòu)化的文本分析;UIMA似乎是理想之選。但UIMA使用的是外部序列化,而不是一個(gè)序列化接口(那會(huì)讓它的對(duì)象變得臃腫),這就需要在序列化數(shù)據(jù)方面做大量的工作。結(jié)果,這個(gè)功能是自行開發(fā)的,沒(méi)有使用UIMA。

          知道如何不選擇某種技術(shù)也非常重要。期望得到某種技術(shù)僅僅是因?yàn)樗牧餍谐潭取⒁子谑褂没騼r(jià)格,那你可能無(wú)法得到最佳的技術(shù)選型。

          Ellyssa Kroski談到了選擇/不選擇某種技術(shù)的五個(gè)原因

          “團(tuán)隊(duì)會(huì)傾向于他們覺(jué)得用起來(lái)順手的技術(shù),因?yàn)槊總€(gè)團(tuán)隊(duì)已經(jīng)建立起了一系列的技能。首要的關(guān)注點(diǎn)應(yīng)該是特性和功能,而非技能集。一定要跟你的技術(shù)專家合作,好讓他們理解他們要擴(kuò)充他們的技能集,而且得到他們需要的培訓(xùn)。

          你的老板會(huì)從雜志上讀到它,在培訓(xùn)時(shí)聽到它,在夢(mèng)里夢(mèng)到它。如何告訴你的老板其他選擇,而又不致于顯得是在貶損他們的發(fā)現(xiàn)?這得把握住分寸,小心翼翼地試探。通過(guò)把手頭做的調(diào)研工作擴(kuò)展至其他選項(xiàng),自愿地讓他更全面的掌握信息 - 當(dāng)然,應(yīng)他的請(qǐng)求!

          你的朋友告訴你“它是重大創(chuàng)新!”。接受熟人生動(dòng)地轉(zhuǎn)述來(lái)自客觀源頭的原始數(shù)據(jù)是我們的天性。但要是選擇技術(shù)解決方案也如此的話,這種道聽途說(shuō)的證據(jù)并不能給我們提供一個(gè)對(duì)于該軟件、其特性、功能或公司可行性的全面評(píng)審。

          它是昂貴的,是便宜的,還是不要錢的。很容易假設(shè),因?yàn)楫a(chǎn)品最貴,所以它就一定比它的競(jìng)爭(zhēng)對(duì)手要好。類似的,我們大多數(shù)有預(yù)算壓力的人總是斤斤計(jì)較。評(píng)估某項(xiàng)技術(shù)解決方案時(shí)有非常多的因素要考慮,不要孤立的把價(jià)格作為衡量?jī)r(jià)值的指標(biāo)。”

          能力

          另一件重要的事情是團(tuán)隊(duì)掌控被引入的新技術(shù)的能力。要是你發(fā)現(xiàn)有人在一個(gè)問(wèn)題上糾纏了好幾天,大可不必感到驚訝。

          在引入新事物時(shí),這是司空見慣的情形。因此,在使用新技術(shù)時(shí)進(jìn)行結(jié)對(duì)是必要的。對(duì)于某些問(wèn)題,所需的腦力超出了單個(gè)開發(fā)者的水平,因此,結(jié)對(duì)肯定能對(duì)此有所促進(jìn)。

          在敏捷里,團(tuán)隊(duì)規(guī)模相當(dāng)小,因此,假若某人一直在從事新技術(shù),那么團(tuán)隊(duì)就會(huì)對(duì)他產(chǎn)生依賴。在結(jié)對(duì)編程時(shí),關(guān)于新技術(shù)的知識(shí)隨之分散到了整個(gè)團(tuán)隊(duì)里,團(tuán)隊(duì)就有了一個(gè)平衡的“車號(hào)”(Truck Number,譯注:車號(hào)是評(píng)估軟件項(xiàng)目長(zhǎng)期存活力的非正式度量,它指的是對(duì)于項(xiàng)目成敗非常關(guān)鍵的開發(fā)者個(gè)數(shù),該數(shù)值越低越好。更多的描述請(qǐng)參見這里)。

          在新技術(shù)上結(jié)對(duì)編程的一個(gè)附加好處是團(tuán)隊(duì)的學(xué)習(xí)。

          個(gè)人學(xué)習(xí)是必須的。要想變得高效,程序員必須用最新的技術(shù)武裝和增強(qiáng)自己。這不僅對(duì)項(xiàng)目有益,而且可以滿足程序員對(duì)于知識(shí)的渴求。學(xué)習(xí)將讓他們對(duì)自己的工作滿意,進(jìn)而增加個(gè)人和團(tuán)隊(duì)的生產(chǎn)力。

          Andrew談到了學(xué)習(xí)對(duì)于工作的重要性

          “為了找到正確的平衡,所有工程師都了解他們整個(gè)沖刺過(guò)程中在做的事情很重要。假如出現(xiàn)一個(gè)癥狀,如你發(fā)現(xiàn)有個(gè)工程師在角落里埋頭苦干了幾個(gè)小時(shí),一兩個(gè)Scrum中他們都說(shuō)只剩下一兩個(gè)鐘頭就可以搞定了,然而時(shí)間流逝了,卻還是一事無(wú)成,那么你就清楚你遇到麻煩了。

          有時(shí),這可以通過(guò)結(jié)對(duì)解決,但它還可能是團(tuán)隊(duì)準(zhǔn)備工作做得不充分的跡象。”

          穩(wěn)定性、支持和文檔

          另一件需要注意的事情是該技術(shù)可以得到支持和文檔。我曾經(jīng)遇到過(guò)有些API完全沒(méi)有或者只有寥寥幾個(gè)甚至是錯(cuò)誤的文檔,搞清楚它們非常難。要是你是該技術(shù)的早期采用者之一,那么情形會(huì)變得更糟,因?yàn)楹苌儆兄С挚梢砸圆┛?文章/論壇的形式找到。然而,某些沒(méi)有非常完善文檔的工具幾乎沒(méi)法用,除非你愿意花大量的時(shí)間對(duì)其進(jìn)行徹底的探索。

          我曾試著在一個(gè)項(xiàng)目中使用Apache Batik,關(guān)于它的文檔和支持并沒(méi)有太多。我經(jīng)常會(huì)遇到問(wèn)題,在互聯(lián)網(wǎng)上找不到關(guān)于這項(xiàng)技術(shù)使用的太多資料。相反,JavaFX也解決同一問(wèn)題,但它有很好的文檔和支持。

          有一個(gè)項(xiàng)目需要一種用戶界面,它既可以作為桌面應(yīng)用運(yùn)行,也可以在Web瀏覽器里運(yùn)行。我們選擇了可伸縮向量圖(利用Apache Batik)來(lái)解決這一問(wèn)題。

          使用Apache Batik的時(shí)間很快就因?yàn)橛龅降膯?wèn)題而到頭了。但是,Apache Batik曾經(jīng)在團(tuán)隊(duì)里討論過(guò)、探索過(guò),然后甚至在作為解決方案搭建基礎(chǔ)設(shè)施之前就被拋棄了。接著開始去尋找其他技術(shù),JavaFX脫穎而出。JavaFX看起來(lái)前途遠(yuǎn)大,易于使用而且是新興技術(shù)。在一個(gè)沖刺內(nèi),它的基礎(chǔ)設(shè)施被建立起來(lái),其中創(chuàng)建了一個(gè)簡(jiǎn)陋的UI,之后進(jìn)一步的開發(fā)就采用了 JavaFX。

          新技術(shù)與項(xiàng)目里已經(jīng)實(shí)現(xiàn)的技術(shù)之間的兼容性也非常重要。就像前面提到的項(xiàng)目,有些Swing組件已經(jīng)開發(fā)了出來(lái),JavaFX提供了一個(gè)特性可以嵌入Swing組件,這使得那些Swing組件得到了重用,避免了返工。

          對(duì)于特殊技術(shù)的支持也相當(dāng)重要,因?yàn)槟憧赡軙?huì)碰壁,需要找到條出路。開源產(chǎn)品在此會(huì)得到加分,即便你沒(méi)有任何關(guān)于這個(gè)技術(shù)的支持,你還可以看看代碼,然后修改它。要是它是閉源的,如果無(wú)法得到對(duì)于這項(xiàng)技術(shù)的充足支持,你就可能會(huì)發(fā)現(xiàn)自己在某個(gè)地方被卡住了。對(duì)于開源技術(shù),如果你本身沒(méi)有能力去完成,還可以找到公司為你修改和定制產(chǎn)品。

          很多流行的開源解決項(xiàng)目都有絕佳的文檔以及一大票免費(fèi)和商業(yè)的支持選擇可以找到。由于社區(qū)發(fā)展的天性,文檔和說(shuō)明往往從不同角度來(lái)闡述——造就了非常全面的信息、說(shuō)明和教程。此外,開源項(xiàng)目無(wú)法隱藏使用信息,這得歸因于免費(fèi)可以獲得的代碼。免費(fèi)的技術(shù)支持也可以以郵件列表或新聞?dòng)懻摻M的形式得到。然而,某種形式的背景研究、知識(shí)或經(jīng)驗(yàn)常常是需要的。

          Jesus M. Gonzalez-Barahona談到了利用開源技術(shù)的優(yōu)勢(shì)

          "可以獲得源代碼和有權(quán)進(jìn)行修改是非常重要的。它促進(jìn)了軟件產(chǎn)品的無(wú)限優(yōu)化和改進(jìn)。

          有權(quán)以任何形式使用軟件。這進(jìn)而幫助我們搭建起一個(gè)軟件支持和定制的市場(chǎng),可以吸引越來(lái)越多的開發(fā)者參與項(xiàng)目。

          軟件的未來(lái)不會(huì)依賴于某個(gè)實(shí)體。如果某個(gè)最初創(chuàng)建該代碼的組織或公司打算停止開發(fā),總是有可能找到另一家軟件組織繼續(xù)維護(hù)和改進(jìn),沒(méi)有任何法律條文的限制。

          修改軟件不需要按拷貝付費(fèi)。嘗試新技術(shù)的人們可以立即的集成和采用它們,沒(méi)有商業(yè)門檻或保密協(xié)議許可。"

          算算從它出現(xiàn)在市面上和預(yù)計(jì)生命長(zhǎng)度之間的時(shí)間間距。使用一項(xiàng)馬上就要過(guò)時(shí)的技術(shù)毫無(wú)意義。如今,技術(shù)都以閃電般的速度發(fā)展,因此,總是看看技術(shù)的競(jìng)爭(zhēng)者,你可能會(huì)得到些驚喜。

          迭代引入技術(shù)

          要想引入新技術(shù)/框架,一次一小步是個(gè)好習(xí)慣。一種好的做法就是探索該項(xiàng)技術(shù)一點(diǎn),然后就分析它是否適合作為解決方案。然后嘗試使用這個(gè)新技術(shù)/框架解決最簡(jiǎn)單的業(yè)務(wù)問(wèn)題。不要一開始就全面依賴它,只讓項(xiàng)目的一小部分使用這項(xiàng)技術(shù)然后再觀察它的效果。

          這有助于熟悉這個(gè)技術(shù)/框架的語(yǔ)法和其他特性。這種方式的另一個(gè)巨大優(yōu)勢(shì)在于你無(wú)需花時(shí)間單獨(dú)的搭建使用所有新事物的基礎(chǔ)設(shè)施。

          我有一個(gè)項(xiàng)目選擇Drools 5來(lái)作為解決某個(gè)問(wèn)題的方案。但是,關(guān)于Drools 5的應(yīng)用能力和特性還不知道。除此之外,Drools 5對(duì)團(tuán)隊(duì)成員來(lái)說(shuō)還是新事物。因此,有一個(gè)沖刺專門來(lái)使用Drools 5。一個(gè)被設(shè)想出來(lái)的簡(jiǎn)單問(wèn)題在Drools的幫助下得到了解決。這肯定了Drools將作為本次沖刺的基礎(chǔ)設(shè)施被搭建。而且,團(tuán)隊(duì)成員也有時(shí)間去了解它。

          使用Drools解決簡(jiǎn)單問(wèn)題使得有機(jī)會(huì)親手實(shí)驗(yàn),這增強(qiáng)了對(duì)于技術(shù)的信心。

          作為一個(gè)Java項(xiàng)目,對(duì)Drools 5的依賴被加到了POM中。Spring Bean被定義出來(lái)創(chuàng)建會(huì)話,簡(jiǎn)單的drl文件也被書寫了出來(lái)。每個(gè)drl文件都有一個(gè)Drools特定的規(guī)則書寫語(yǔ)法。使用Session Bean把對(duì)象傳給代碼,代碼在這些對(duì)象上執(zhí)行規(guī)則。這個(gè)沖刺之后,Drools的基礎(chǔ)設(shè)施就位了,團(tuán)隊(duì)了解了它的語(yǔ)法和其他技術(shù)。更重要的是,有了一個(gè) 使用Drools 5的解決方案。因此,對(duì)于技術(shù)的信心增強(qiáng)了。

          Robert McIlree談到了迭代引入技術(shù)

          “隨著時(shí)間的推移,通過(guò)足夠的成功遞增引入一項(xiàng)新技術(shù),對(duì)于技術(shù)來(lái)講,可以獲得切入組織其余部分的牽引力。萬(wàn)一引入因?yàn)槠渌裁丛蚴×耍M織整體的風(fēng)險(xiǎn)和成本很低。”

          在這個(gè)階段,解決方案要實(shí)現(xiàn)的問(wèn)題不應(yīng)該非常重要。其主要目標(biāo)是搭建新技術(shù)的基礎(chǔ)設(shè)施。一旦項(xiàng)目基礎(chǔ)設(shè)施創(chuàng)建完成,并且看起來(lái)讓人賞心悅目,足以繼續(xù)下去,這樣,實(shí)現(xiàn)它的風(fēng)險(xiǎn)就會(huì)小一些。

          性能

          一旦應(yīng)用采納/接受新技術(shù),那么預(yù)期結(jié)果和它的功能接受標(biāo)準(zhǔn)就都要完成。然而,在你開始深入更復(fù)雜的例子且技術(shù)成為應(yīng)用的一部分之前,功能的卓越程度不是你唯一要考慮的東西。性能相關(guān)的問(wèn)題可能會(huì)開始讓你煩心。

          如果從一開始接觸新技術(shù)你沒(méi)有關(guān)注其性能,那么它很有可能成為當(dāng)下的負(fù)擔(dān),最終喪失采用新技術(shù)時(shí)投入的所有努力。因此,在引入技術(shù)時(shí)就得嚴(yán)肅地對(duì)待性能問(wèn)題。如果技術(shù)可能會(huì)成為瓶頸,那么就把它找出來(lái),盡早丟棄它。

          風(fēng)險(xiǎn)承受能力

          團(tuán)隊(duì)在項(xiàng)目當(dāng)前狀態(tài)下的風(fēng)險(xiǎn)承受能力是決定引入新技術(shù)與否的另一個(gè)考慮因素。如果項(xiàng)目不那么穩(wěn)定,團(tuán)隊(duì)甚至還在陷于當(dāng)前的實(shí)現(xiàn)技術(shù)和其他問(wèn)題,那么再增加需要用新技術(shù)完成的新任務(wù)就不理智了。在這種情況下引入新技術(shù)會(huì)使團(tuán)隊(duì)遭受重創(chuàng)。他們將在錯(cuò)誤的時(shí)間處理掌握新技術(shù)的額外任務(wù)。然而,如果團(tuán)隊(duì)表現(xiàn) 良好,產(chǎn)品也很穩(wěn)定,那么大可大干一番。

          Dave Nicolette撰寫了關(guān)于管理和計(jì)算風(fēng)險(xiǎn)的因素

          “如果提議的解決方案涉及到IT組織支持的標(biāo)準(zhǔn)技術(shù)基礎(chǔ)設(shè)施中還沒(méi)有建立起來(lái)的技術(shù)或產(chǎn)品,高可覺(jué)察風(fēng)險(xiǎn)和低實(shí)際風(fēng)險(xiǎn)就會(huì)出現(xiàn)。看看是否有機(jī)會(huì)引入沒(méi)有技術(shù)實(shí)現(xiàn)難度,但你的公司之前沒(méi)有使用過(guò)的新技術(shù)。.

          這將推動(dòng)傳統(tǒng)項(xiàng)目的估算增高,而又不增加項(xiàng)目的實(shí)際難度。“

          信任

          最后,在已經(jīng)接受技術(shù)之后,你所需要做的全部事情就是“信任”它。它是一種個(gè)人現(xiàn)象。然而,你對(duì)所接受技術(shù)的信任程度將導(dǎo)致你跟它相處的難易程度。就像Bahmanziari說(shuō)的,它完全因人而異,Tammy在計(jì)算機(jī)信息系統(tǒng)刊物上撰寫的文章談到了信任

          “個(gè)人采納者的性格在對(duì)信任不熟悉事物的習(xí)性上扮演了重要角色。這種性格特征通常被稱為信任度。某些人在毫無(wú)任何理由這樣做的時(shí)候表現(xiàn)出高度信任,而另一些人則在有理由給予高度信任的時(shí)候表現(xiàn)出信任程度很低。”

          技術(shù)采納者必須完成前文提到的分析以形成對(duì)技術(shù)的理解。利用分析中收集到的信息,可以加強(qiáng)對(duì)技術(shù)的信任。你需要信任,因?yàn)榧夹g(shù)還沒(méi)有被嘗試和測(cè)試。假使它們被嘗試和測(cè)試過(guò)了,那就沒(méi)有信任的必要了,因?yàn)槟阋呀?jīng)對(duì)它了如指掌。

          計(jì)算機(jī)信息系統(tǒng)刊物也談到了信任在技術(shù)采納過(guò)程中的重要性

          “絕大多數(shù)信任理論者可能都同意,盡管沒(méi)有人可以給信任下個(gè)定論,它在所有情形下都是有用的,但是不確定性和某種程度的漏 洞必需因?yàn)樾湃味嬖凇.吘梗瑢?duì)完全確定的事物而言,信任是不必要的。正是由于這種不確定性的存在,造就了漏洞。技術(shù)采納者在不確定的環(huán)境中穿行;因此,他們的評(píng)估必然包括對(duì)于該技術(shù)以及其提供者的個(gè)人看法和不完全知識(shí)。"

          總結(jié)

          引入的技術(shù)應(yīng)該能夠解決業(yè)務(wù)問(wèn)題。它的流行程度不應(yīng)該作為選擇的基礎(chǔ)。技術(shù)的早期采納不應(yīng)該在項(xiàng)目處于逆境的時(shí)候進(jìn)行。開發(fā)者不應(yīng)該懼怕學(xué)習(xí)曲線,因?yàn)樗鼘⒃鰪?qiáng)他們的知識(shí)。技術(shù)應(yīng)該迭代引入。每個(gè)迭代取得的成功/失敗應(yīng)該決定下一個(gè)迭代的步驟。結(jié)對(duì)編程應(yīng)該在新技術(shù)上實(shí)行,好讓知識(shí)在團(tuán)隊(duì)內(nèi)傳遞。在完全接受它之前需對(duì)它留心。一旦信任技術(shù)之后,你將化蛹成蝶。


          posted on 2010-11-16 09:06 ゞ沉默是金ゞ 閱讀(1461) 評(píng)論(0)  編輯  收藏 所屬分類: 其他收集
          主站蜘蛛池模板: 湘阴县| 万州区| 陆良县| 江孜县| 蛟河市| 庐江县| 长阳| 称多县| 鄂伦春自治旗| 锦屏县| 山东| 黔江区| 衡山县| 安陆市| 襄城县| 启东市| 大厂| 十堰市| 阿克苏市| 丹江口市| 如东县| 布尔津县| 福鼎市| 基隆市| 忻州市| 兴仁县| 林西县| 会同县| 隆子县| 汉阴县| 灌南县| 泰顺县| 陕西省| 天津市| 东丽区| 三河市| 白玉县| 上思县| 防城港市| 普格县| 禹州市|