軟件開發(fā)是一項復雜的、創(chuàng)造性的集體活動。 要構(gòu)建一個復雜的、有效的軟件體系,不可能僅僅依賴增加人手,或者延長個體的工作時長來解決問題。 復雜軟件的有效構(gòu)建,更需要依賴的是科學的軟件工程的能力。 提升軟件團隊的工程能力,是解決軟件開發(fā)相關問題的關鍵。 工程能力的致勝之本: 打的準:如果不能做好需求的識別和分析,缺乏產(chǎn)品方面的意識,那么研發(fā)出的軟件就沒有市場和用戶。 打的贏:工程能力會影響軟件研發(fā)的效率、質(zhì)量和成本,一個低效率、低質(zhì)量和成本高的軟件項目是沒有市場競爭力的。 工程能力不是錦上添花、可有可無的東西,而是軟件開發(fā)團隊的核心生存能力。 什么是工程能力 工程能力不僅僅是寫好代碼。代碼確實是軟件研發(fā)的重要產(chǎn)出,但是工程能力的涉及范圍絕不僅僅限于編寫代碼。 軟件研發(fā)是一個需要多人共同參與完成的工作,提升工程能力也不限于“一個人”能力的提升。 工程能力反映的是團隊的綜合素質(zhì)。要提高工程能力,不僅要看單兵素質(zhì),也要看團隊能力;不僅要提升寫代碼的能力,也要提升其他方面的能力。 工程能力: 使用系統(tǒng)化的方法,在保證質(zhì)量的前提下,更高效率地為客戶/用戶持續(xù)交付有價值的軟件或服務的能力。 1、研發(fā)的目的是提供價值 在軟件開發(fā)中,系統(tǒng)設計和代碼編寫等技術只是手段,而不是目的。這些技術都必須為項目的目標服務。即使有很好的技術,如果軟件最終對用戶沒有價值,那么這個項目很可能是失敗的。 單沖的從技術角度來思考問題,而忽視所研發(fā)的軟件對業(yè)務的實際價值,都是不可取的。 在軟件開發(fā)整個生命周期內(nèi),都要從客戶需求、商業(yè)價值和資源成本多方面綜合考慮,這樣才會使軟件的研發(fā)活動更有針對性,從而減少不必要的研發(fā)投入,控制合適的投入產(chǎn)出比。 2、質(zhì)量第一 首先,不能保證軟件質(zhì)量,就會影響用戶的體驗,從而影響軟件的價值。 其次,降低軟件質(zhì)量,事實上不會降低研發(fā)的成本,反而會增加整體的研發(fā)成本。在研發(fā)階段通過降低質(zhì)量所“節(jié)省”的成本,會在軟件維護階段加倍償還。 不同性質(zhì)的軟件,對于質(zhì)量的要求是不同的。要保證軟件的質(zhì)量,首先要針對項目情況,明確定義軟件所應達到的質(zhì)量要求。 考慮項目時間這一因素,可以通過提高技術水平來高效率、低成本、系統(tǒng)性地保證質(zhì)量,這是軟件研發(fā)團隊技術能力的體現(xiàn)。 高質(zhì)量的軟件首先是設計出來的,而不是寫出來或測試出來的。因此,要提高軟件質(zhì)量,首先要提升軟件的設計能力。 3、實現(xiàn)價值持續(xù)交付 首先需要提升對軟件研發(fā)規(guī)律的認識,明確軟件的研發(fā)和維護是長周期的。 在軟件規(guī)劃時,需要綜合考慮軟件在整個生命周期內(nèi)的研發(fā)成本投入,在研發(fā)的早期少欠技術債。 軟件/服務的價值提供是長周期的,要做好長期維護、長期服務、持續(xù)改進優(yōu)化的思想準備。 4、系統(tǒng)化和科學的方法 軟件工程是一個非常專業(yè)的領域。 在過去數(shù)十年中,前人在這個領域已經(jīng)總結(jié)出大量優(yōu)秀的理念、方法和實踐經(jīng)驗。 軟件工程不是由幾個小竅門或小知識組成的,而是由產(chǎn)品設計、需求分析、系統(tǒng)設計、編碼方法、質(zhì)量保證、項目管理、系統(tǒng)運維和產(chǎn)品運營等方向組成的綜合學科,并且在每個方向上都有非常深入的體系。 在軟件研發(fā)方面,是否使用了科學的方法,效果會相差十倍、百倍、千倍,甚至是從0到1的差距。 5、持續(xù)提升研發(fā)效率 在現(xiàn)實中,很多涉及軟件研發(fā)的管理者對業(yè)務目標非常關注,而對提升軟件研發(fā)能力的關注度則不足。 軟件研發(fā)效率可提升的空間很大,且永無止境。 對軟件研發(fā)能力的提升不是一個短期行為,而是一個持續(xù)的過程。在這方面,需要團隊和項目管理者,以及每個軟件工程師持續(xù)關注和投入。 備注:《代碼的藝術》讀書筆記 |
|
來自: 過河卒沖 > 《敏捷開發(fā)》