戰(zhàn)略決策有助于加速軟件項(xiàng)目利用商業(yè)機(jī)會,但是IT領(lǐng)導(dǎo)必須注意其中的陷阱和權(quán)衡取舍。
當(dāng)然,IT領(lǐng)導(dǎo)和客戶都希望每個(gè)軟件項(xiàng)目都能更快地被交付。但是快速的開發(fā)也可能會導(dǎo)致錯(cuò)誤的代碼、低劣的測試、不完整的解決方案,或者更糟的,不安全的軟件。雖然沒有人想要一個(gè)失敗的軟件項(xiàng)目,但有時(shí)在某些環(huán)境下--包括市場條件、業(yè)務(wù)需求、機(jī)會之窗--可以證明一些有利于速度的權(quán)衡措施是合理的。
軟件開發(fā)不僅僅是一種邏輯上的努力。它也是一門藝術(shù),也是許多組織商業(yè)戰(zhàn)略中不可或缺的一部分。如果能夠高效、公平、簡單和安全地完成,在那些重疊的某個(gè)地方就存在著獲得更高效的開發(fā)流程的可能性。你只需要知道折衷方案,并做出有利于精簡項(xiàng)目而不是開發(fā)完美軟件夢想的決定。
當(dāng)IT領(lǐng)導(dǎo)想要加速一個(gè)需要快速進(jìn)行的特定軟件項(xiàng)目時(shí),這里有11個(gè)戰(zhàn)略決策可供參考。
控制利益相關(guān)者的夢想
每個(gè)人都希望得到反饋,來自營銷團(tuán)隊(duì)、運(yùn)輸部門和會計(jì)部門的利益相關(guān)者都是帶著遠(yuǎn)大的夢想來到會議室的。訣竅在于首先找到最容易實(shí)現(xiàn)的夢想。在一次奇跡般的會議中,我的軟件團(tuán)隊(duì)發(fā)現(xiàn),只需在一個(gè)表單字段中添加預(yù)填充的默認(rèn)值,就可以為數(shù)據(jù)解析器節(jié)省數(shù)百萬小時(shí)的工作。成百上千的銷售代理每天都會從無到有地填寫這張表格。在HTML中多了幾個(gè)字符,我們就像天才一樣被對待。
讓利益相關(guān)者腳踏實(shí)地將有助于控制項(xiàng)目的范圍。如果你能讓利益相關(guān)者關(guān)注那些更小、更有價(jià)值的特性和改進(jìn),那么復(fù)選框的填充速度就會快得多了。
阻止開發(fā)者異想天開
不僅僅是西裝會讓人忘乎所以。開發(fā)人員也需要腳踏實(shí)地。對于項(xiàng)目列表上的每一個(gè)項(xiàng)目,開發(fā)人員都將其視為最終嘗試一些聰明的、新的、非常耗時(shí)的流行術(shù)語的一個(gè)機(jī)會。屏幕上有兩列不對齊嗎?現(xiàn)在是時(shí)候用純函數(shù)重寫整個(gè)堆棧來實(shí)現(xiàn)多梯度功率下降優(yōu)化量子學(xué)習(xí)算法了。
雖然開發(fā)人員的熱情對于實(shí)現(xiàn)一個(gè)加速的時(shí)間表是至關(guān)重要的,但是確保開發(fā)人員的熱情能夠被引導(dǎo)到一個(gè)精簡的目標(biāo)上也是至關(guān)重要的。
削減特性
削減需求似乎是個(gè)懶人的游戲。畢竟,如果你將“一切”都重新定義為一個(gè)更小的集合,自然就能夠很容易更快完成所有事情了。
但有時(shí),讓團(tuán)隊(duì)集中精力也是必要和有用的。巧妙的方法是確保基礎(chǔ)仍然足夠牢固,以便將來能夠重新處理被跳過的特性。例如,確保數(shù)據(jù)庫模式預(yù)期了某些增強(qiáng)功能,而這些功能是有人希望在以后的迭代中能夠添加的。如果這僅僅意味著現(xiàn)在需要稍微調(diào)整一下模式,那么當(dāng)你返回到此過程中被推遲的特性時(shí),也可以節(jié)省時(shí)間。
簡化測試
部署代碼的挑戰(zhàn)之一是在運(yùn)行之前進(jìn)行測試。最近的趨勢是把所有的東西都拆分成可以獨(dú)立運(yùn)作的小項(xiàng)目。如果每個(gè)項(xiàng)目都必須單獨(dú)測試,那也就意味著需要進(jìn)行更多的測試。一些包含大量微項(xiàng)目的新的微服務(wù)體系結(jié)構(gòu)必須經(jīng)過多次測試。
顯然你無法擺脫對測試的需求,但其中的一個(gè)訣竅是可以測試同時(shí)在一起工作的多個(gè)項(xiàng)目。有時(shí),將幾個(gè)部分捆綁在一起可以消除獨(dú)立測試它們的需要。
簡化架構(gòu)
如果你打算去掉一些特性,把一些工作留到以后做,有時(shí)你可以重新考慮架構(gòu)的設(shè)計(jì)。有時(shí)則不是。
如果這些功能可能會在下個(gè)季度甚至明年出現(xiàn),那么你最好把基礎(chǔ)保留好。但如果它們不是必需的,那么清除掉架構(gòu)中的大塊內(nèi)容將會是一種極大的解放。
回?fù)苄阅艿谋WC
當(dāng)時(shí)間充裕時(shí),每個(gè)人都希望在毫秒內(nèi)就得到答案,同時(shí)還能夠確保數(shù)據(jù)被復(fù)制到三個(gè)地理上獨(dú)立的數(shù)據(jù)中心上,以防颶風(fēng)和地震的同時(shí)襲擊。誰不想要完美呢?
但通常,高性能也意味著需要大量額外的緩存層、負(fù)載平衡層和復(fù)制層,而這些額外的層需要花費(fèi)時(shí)間來進(jìn)行構(gòu)建、配置、調(diào)試和維護(hù)。減少開發(fā)時(shí)間的最簡單方法之一是說服利益相關(guān)者,如果屏幕刷新時(shí)間長了一點(diǎn),希望他們可以稍微放松,或者打消這個(gè)想法--他們中的一些人會因?yàn)楣收隙詣酉А2⒉皇敲總€(gè)項(xiàng)目都像腦部手術(shù)那樣需要那么多的精確度和可靠性。
利用現(xiàn)有的代碼
花費(fèi)更多時(shí)間的最簡單的方法就是探索一種新的技術(shù)。是的,從長遠(yuǎn)來看,對下一代進(jìn)行投資是很重要的,但現(xiàn)在不是有人敲桌子要求更快完成的時(shí)候。使用與你在過去幾十個(gè)項(xiàng)目中使用的相同的語言和數(shù)據(jù)庫會更快更簡單。你將移動得更快,而且有時(shí)還可以重用代碼塊。不僅如此,你還將保持一致性,使開發(fā)人員更容易在項(xiàng)目之間移動。
接受技術(shù)債務(wù)
當(dāng)開發(fā)人員想要完成某些事情時(shí),他們喜歡談?wù)摗凹夹g(shù)債務(wù)”。通過現(xiàn)在承諾一個(gè)有限的或快速的解決方案,開發(fā)人員可以把修復(fù)或填補(bǔ)空白的工作留給未來。這是一個(gè)需要認(rèn)真考慮的真實(shí)概念,但有時(shí)人們的確會想要在操縱流程時(shí)調(diào)用它。
一些技術(shù)債務(wù)是可以接受的。使用最新的數(shù)據(jù)庫或最新的語言技術(shù)并不總是必要的。有時(shí)候,我們可以跳過三代或四代的神奇技術(shù),直接進(jìn)入最新的版本。跳躍式的前進(jìn)可以避免很多頭痛和熬夜。
這是一種藝術(shù)的游戲,它不是沒有危險(xiǎn)的。但很多時(shí)候,技術(shù)債務(wù)的幽靈遠(yuǎn)比跳過幾代更新的現(xiàn)實(shí)更加糟糕。
開源
太多的項(xiàng)目中有太多的自定義代碼了。如果你想完成某件事情,而很有可能其他人也有同樣的煩惱。有時(shí)其他人或組織已經(jīng)啟動了一個(gè)開源項(xiàng)目,現(xiàn)在也正是你加入的機(jī)會。
開源不是萬能的。天下也沒有免費(fèi)的午餐。你經(jīng)常需要做出妥協(xié),并與其他團(tuán)隊(duì)一起工作,以匯集一些適合個(gè)人的代碼。當(dāng)這個(gè)流程運(yùn)行良好時(shí),你只需為開源項(xiàng)目貢獻(xiàn)一小部分時(shí)間,那么每個(gè)人就都會成功。
使用基本的工具
許多項(xiàng)目都可以使用現(xiàn)成的工具來完成。使用標(biāo)準(zhǔn)web表單(比如Drupal、Google Forms或是Survey Monkey)可以構(gòu)建的內(nèi)容是令人驚嘆的,這些表單也可以將數(shù)據(jù)轉(zhuǎn)儲到執(zhí)行分析的電子表格中。這不是耍滑頭。它甚至可能不會被程序員防御聯(lián)盟稱為是“編碼”工作。但是,如果它可以以一種可靠和可重用的方式交付答案,那么它就是完成大型開發(fā)項(xiàng)目最快的方式。
實(shí)事求是
我們都夢想建立一個(gè)病毒式的傳播網(wǎng)站,所以我們總是計(jì)劃處理最極端的負(fù)載。我看到過一些細(xì)心的架構(gòu)師描述他們的三層系統(tǒng),其中到處都有負(fù)載平衡器和復(fù)制的數(shù)據(jù)庫,所有這些都可以支持一個(gè)每天可以照顧100人的項(xiàng)目。如果適當(dāng)進(jìn)行擴(kuò)展是容易的,那就不會是問題,但是增加這些層會增加項(xiàng)目的復(fù)雜性,延長構(gòu)建時(shí)間,并使維護(hù)變得更加復(fù)雜。引入新的程序員也會變得困難得多,而解決哪怕是最小的問題也需要長時(shí)間的團(tuán)隊(duì)會議。確實(shí),一些較新的無服務(wù)器工具(如谷歌App Engine)簡化了伸縮性,但在復(fù)雜性和成本方面也需要進(jìn)行權(quán)衡。
優(yōu)秀的工程師能夠預(yù)見未來可能出現(xiàn)的奇怪問題。但是,良好的成本工程需要對可能性有實(shí)事求是的態(tài)度,也許,當(dāng)這些異常值出現(xiàn)時(shí),是可以決定接受糟糕的性能甚至是失敗的。
-
軟件
+關(guān)注
關(guān)注
69文章
4781瀏覽量
87163 -
軟件項(xiàng)目實(shí)施
+關(guān)注
關(guān)注
0文章
3瀏覽量
1080
發(fā)布評論請先 登錄
相關(guān)推薦
評論