對於軟體開發哲學的經驗談

來源:互聯網
上載者:User
對於軟體開發哲學的經驗談

  "確認你已經理解問題, 由小型的有才乾的團隊來實現解決方案, 並且讓你的客戶告訴你如何改進它. 這就是全部; 其他的都是註解."(軟體開發哲學,摘自<<Clouds to Code中文版>>)

做了這麽久的開發,看到這個開發哲學,真是很貼切,軟體開發的幾大要點概括的淋漓盡致.

"確認你已經理解問題" 即需求問題,宏觀上為軟體的商業目的,微觀上為每個功能需求的理解與分析,根據我的開發經驗,就是要擷取需求並且正確的理解它,我們往往對需求的問題不能夠達到全面的理解,大多數情況都是處在一知半解的狀態,各種情況導致擷取的需求並非真實有效,分析其原因主要有3點:

1.客戶對需求也不能完全解釋的清楚
2.商務邏輯確實很複雜,相關聯絡繁多,造成理解上會達到理解問題的限制(5~7個關聯複雜性,超過就不易理解)
3.需求的擷取,設計到實現的各個階段出現了偏差,更嚴重的情況是無法追溯到原來提出的真實需求而造成的缺陷.
4.需求在軟體開發過程中,客戶實際情況已經變更,或是客戶改變了原先的想法而造成的需求變更
解決這些矛盾的方法很多,主要在於需求開發的經驗,設計開發的經驗,團隊的合做,有效全面及規範的需求記錄與追蹤,以及各階段追溯到需求的評審等來保證我們對需求的理解.

"由小型的有才乾的團隊來實現解決方案" 即團隊合做與開發技能的問題.
高品質的團隊一直是成功的軟體開發的保證.否則軟體開發很容易陷入絕境.
至於團隊,以我的經驗主要提出幾點看法.

1.保證的團隊穩定性
團隊的核心成員要穩定,例如一個團隊一定要確認哪幾個是團隊的核心,在軟體的開發週期內一定要保證這些核心人員的穩定性,最好是不只是在一個項目周期,而是在組織面上也保證此團隊核心成員的穩定性,這樣才能夠使得團隊不斷進步,積累經驗,更重要的是合作的有效性,要知道一個人員更新頻繁,或是剛剛組建的團隊效率與合作性都是非常差的,需要很長時間的磨合與鍛煉,但往往會導致軟體開發的失敗,因為在你為建立新團隊的有效合作與開發過程的同時,軟體的開發已經錯誤百出,種下了失敗的種子,後面再想補救的代價就太高了.所以建立穩定的Team Dev是軟體開發的有效保證.

2.合理有效團隊發展規劃.

1).明確有效團隊目標.為團隊設立一個明確有效目標,讓團隊中的核心成員都能夠一致的認同這個目標,並且將此目標與其自身的發展相互聯絡,給每個人前進的動力與希望.這也是團隊穩定性的重要保證,沒有一個一致目標和奮鬥方向的團隊,很難有凝聚力,也更不會成為一個高品質的團隊.

2).團隊成員合理的互補性.
我們要設定團隊成員各方面能力的基準線,每個成員不能低於這基準,否則會影響團隊的整體實力.
在此基準線上我們並不要求每個成員在各方面都優秀(這也是很難做到的),但一定會要求每個成員在某一個方面能力高於基準線,這樣才能根據特殊能力來建立互補性的團隊.
例如:Team Dev管理者要達到分析,設計,編碼,等工作能力的一個基準線, 在此之上他的管理能力一定是高於基準線之上,具備優秀管理能力的人.而不是讓一個各方面平庸或是其他能力(如他的編碼能力優秀)的人來充當管理者的角色. 這樣讓在各個方面的工作,都能夠找到在此方面優秀的人來執行,以達到建立互補性的團隊的目的.
同時團隊成員在此基礎上又能夠在各方面得到向他人學習提高的機會,以提高團隊能力的基準線,達到團隊發展的目的.

3).其他輔助性的策略與制度也不容忽視.
首先,團隊內部要有一個公平,公正的氛圍,每個人的能力,業績與其獲得的回報和在團隊中的位置要相互一致,形成一個良好的團隊發展環境.
第二,在保證核心成員穩定的同時,合理的團隊流動性也是必要的,因為不能保證團隊每個成員都能夠達到團隊的發展要求,所以將不適合的人員替換出去,再吸收新的成員,發展優秀的成員成為核心人員,以發展壯大團隊,並形成良好的團隊新陳代謝的模式.
第三,獲得管理層對此團隊的認同,鼓勵團隊的變革,鼓勵創新,願意承擔相應的風險,也是關係到團隊是否能夠發展的一個非常重要的因素,這也要求團隊要不斷的獲得成功,創造業績,及良好的溝通來獲得管理層的支援.

"並且讓你的客戶告訴你如何改進它" 這裡我的理解不僅僅是客戶,而且也包括市場
開發好的軟體,最重要的目的是達到客戶的需要,以及市場的需要.讓客戶與市場來引導我們軟體的開發方向是軟體獲得豐厚收益的重要保證,也是軟體開發的重要目標.當然這也是建立在我們能夠正確的理解客戶的需求與市場的需求的基礎之上的.

"這就是全部; 其他的都是註解." 這裡我的理解是軟體開發要以上面所提到的需求,團隊,客戶與市場為主要關注點,而對於其他輔助性的方面,如流程改善,檢查與監測等都是實現主要關注點的有效工具與過程,要分清主次,不要一味的盯在這些輔助性的工作方面,而忽視了軟體開發成功的真正關鍵. 根據經驗,如果軟體開發時在還未理解需求,又沒有良好的Team Dev,客戶與市場也模糊不清時,而相反卻去注重檔案表單規範,流程改善,ISO或CMMI等等相關的事務,這樣試問就算這些做的再好,我們的軟體開發能夠成功嗎.要分的清主次,合理應用其他輔助性事務,才是正道.

綜上所述,我對軟體開發的經驗之總結, 軟體開發需要以客戶與市場為導向理解軟體真正的需求,利用高品質優秀的團隊進行開發,以達到擷取最大商業利益的目的.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.