1. 程式人生 > >提高軟件開發的理解力和掌控力

提高軟件開發的理解力和掌控力

基礎 一個人 要求 入口 優先級 產品經理 系統 範圍 開發

力之源泉在於理解。

理解的重要性

  • 從與主管、客戶、產品經理和項目經理溝通的角度來說,需要能夠理解他們說話的語境和背景,從而推敲其真正的意圖;需要理解他人的需要和意圖;表達只有在理解的基礎上進行才是有效和有份量的;這裏的理解指“自然語言層面的”。

  • 從熟悉業務和產品的角度來說,需要能夠理解現實中的事物、事務以及相互的關聯,並簡明扼要地繪制出來;這裏的理解指“分析語言層面的”。

  • 從開發程序的角度而言,需要對所要處理的事物的性質和規則有深入的了解,能夠理解抽象的概念、模型和設計思路。這裏的理解是“計算語言層面的”。

  • 在實際工作中,需要在有限的時間內處理潮湧而來的大量事務,理解不斷湧現的各種新的思想和技術以及新的發現,在必要時作出恰當的反應和行動,包括優先處理重要緊要的事情、需求和項目,適當的忽略和放棄。這即對一個人的理解和表達能力提出了“速度”和“敏捷度”的高要求。

軟件開發的核心基本能力是理解和表達事物的能力。 縱觀軟件開發活動,無非是在持續不斷地理解話語、理解事物、理解事務、理解軟件設計與實現、表達自己的觀點、完成所學所能中完成的。

對於初級工程師來說,執行力和具體做事情會很重要;對於高級工程師,設計規劃和把事情想清楚更為重要。

理解軟件

  • 分而治之。復雜任務往往是由簡單任務通過多層次組合而形成的;將復雜任務進行分解,分解到每個子任務都在能力掌控範圍內。
  • 系統思考。 僅僅理解復雜事物的子部分還不夠,需要以系統思考的視角,去理解事物組成部分的關聯,事物存在的支撐機制。見樹亦見林。
  • 抽象模型。 將事物賦予概念,對事物關聯建立簡要的模型進行處理。對事物的理解從具象的形式到抽象的意義。比如圓形意味著阻抗低;鎖意味著隱私;房子意味著庇護;門意味著可授權的入口;盆意味著開放性容納等。
  • 科學規律:學習和探索事物的性質和運行規則集合。比如數學性質;物理學定律;適當的緩存能提升效率。

分而治之 - 系統思考 - 抽象模型 - 科學規律 , 是逐步往上,從部分看到全景,從具體深入抽象,從理論到實際的方法總論。

日常工作

軟件開發

軟件開發的首要任務是深入理解業務。從用戶角度來看,是場景、需求、功能與體驗;從系統設計角度來看,是模塊、接口與交互; 從底層實現角度來看,是流程、規則、數據、影響範圍。

軟件開發講究模塊化、分而治之,很多開發者可能只管理一小部分,但用系統思考的視角看到各模塊交互的全景圖是非常重要的。

項目掌控

通常是指互聯網企業中存在的多項目並行情況。比如一個項目在提測中,一個在預發中,兩個在開發中,涉及的點也比較多,還有兩個正在全力趕過來。如何提升多項目的掌控力呢?

從項目經理的角度來看,每個模塊的職責在於: 1. 完成預先評估的任務和工作,為整體流程和功能質量提供保障; 2. 在適當可接受的時間範圍內完成,保障項目進度,減少延期時間。

  • 優先級與預先評估。仔細查看各項目的聯調、提測、預發、上線時間,確定優先級,錯開時間;留出緩沖余地。此時,並不涉及實際開發,而是涉及到評估。 評估意味著:1. 需求理解; 2. 現有實現; 3. 改動點評估; 4. 任務拆分與工作量評估; 5. 時間評估。 評估性的活動,與編程是同等有挑戰的事情。

  • 充分開發自測。 要提升聯調效率,要充分評估到改動點和開發自測,否則聯調和提測的問題找上門來,一樣讓人吃不消。比較理想的情況是,自己的改動點都在掌控之中,只要部署好了,關註項目進度即可。

  • 時間管理。 為改動點比較大的項目安排整段的時間,專註地解決問題。減少不必要的任務間切換。

  • 申請資源。 再能幹的人,多個項目同時擠壓過來,也是很可能扛不住的。要及時申請資源,並說明充足理由。 很多事情,需要在做之前就想好。


交流溝通

  • 深入理解事理,下足功夫,準備充分,有說服力;

  • 語氣和方式委婉柔和。

  • 換位思考。從對方的處境考慮問題,理解對方的立場和視角。


心境

  • 適當地運動、休息和飲食,保證健康的身體狀況; 
  • 放開心靈,觀察和探索整個的世界,深入細致地去理解和分析事物。
  • 克服急於求成的心理,把事情想清楚再行動。

提高軟件開發的理解力和掌控力