這是軟體工程課程最後的小結。在這個軟體工程課程中,我參與了 judy: a julia debugger 的課程專案,中間遇到了許多困難,也收穫了許多。
在開課前,給自己的能力評分是:
comprehension
design
implementation
personal software process
分數(0-9)43
34在課程結束後,希望每一項都能達到5分以上。
那麼現在課程結束,我認為基本都能達到:
對開發人員自身來說,結對工作能帶來更多的信心,高質量的產出能帶來更高的滿足感。我對這一點有疑惑,首先我覺得結對程式設計很取決於雙方的實力和雙方的性格。如果雙方實力差距懸殊,並且實力強勁的一方性格還刻薄,這樣會對程式設計能力較弱的一方造成程式設計上的心理壓力,反而拖慢整個工作的進度, 甚至影響團隊的和諧。
關於這一點,鄒老師已經給了我解答,實力強勁的一方對於實力弱的一方來說,是乙個機遇,在這個過程中,能夠對自己的程式設計技能有很大的提高。所以應當以學習的心態來進行整個專案的結對程式設計,同時對於實力強勁同學的來說,也是磨礪自己性格的乙個方式。所以只要這麼想,雙方都是獲利方,那麼合作起來壓力也就不大了。
在企業管理層次上,結對能更有效地交流,相互學習和傳遞經驗,分享知識,能更好地應對人員流動。首先我很認可傳遞經驗、應對人員流動。但是我認為,當在程式設計過程中,乙個任務往往有不同方式的實現,如果兩個人都各執己見,往往很難協商乙個共同一致的實現方案,從而導致專案停滯。同時如果有一些創新的想法也很難在交流過程中形成,因為個人感覺獨立思考往往能帶來更多的創新性。
這個問題其實我現在仍然存在。拿 judy the debugger 來說,後端 debugger 的實現上因為每個模組之間耦合度很高,如果兩個人同時來對原始碼進行修改,就很難進行 merge(會出現大量的衝突)。一種辦法是將模組的耦合度變得更鬆,但這需要更高的架構能力,或者有些專案根本做不到松耦合的架構,那麼這種情況下,乙個人程式設計的時候另乙個只能等這個人完成程式設計 merge 進主分支後才能進一步修改,極大得降低了效率。那麼這種情況有什麼辦法呢?
第二步:決定當前的衝刺需要解決的事情我覺得乙個專案被分解到小時為單位非常困難,首先能夠做到這樣的分解,必須對架構有非常清晰的認識,並且對實現的難易程度也有充分的了解。這一部分我覺得很難在現實中把控好,因為稍有不慎,這個產品的進度被拖慢從而導致後面的產品進度都被拖慢,造成連鎖反應,這種情況要怎麼解決呢?整個產品的實現被劃分為幾個互相聯絡的衝刺。產品訂單上的人物被進一步細化了,被分解為以小時為單位。
解決這樣的困難首先必須有很多的程式設計經驗。同時,在軟體的設計之初,功能應當已經確定。所以按照功能先對任務進行劃分,再對打的功能按照小的實現步驟進行劃分,就能較好的把握專案的進度。
軟體工程,唯一不變的是變化。所以乾脆別幻想客戶的需求會在第一時刻很明顯,然後保持不變。但要注意,我們是預期變化,不是期望變化 。在這個過程中,如果我們預期了變化,並對預期的變化做出了相應的調整。但隨後發現預期出現了錯誤,使用者的需求是往另乙個方向走的,那麼在對於正在做調整的軟體該如何處理?
這個過程中如果沒有重大偏差,我認為應當按照既定的路線堅決的前進。如果再在這個時候進行軟體架構上的調整,會挫傷整個專案團隊的資訊。
要帶著感情去討論問題麼?有專家建議開會應該盡量不帶感情,但是別的資料又要求大家帶著感情去體會使用者的通電,還要帶著浪漫的幻想去做頭腦風暴。我覺得因為每個人專業的領域可能有細微的差異,很多人對乙個想法褒貶不一,同時一方面認為著不可能行,另一方面又認為這是乙個很好的點,如果在這樣的環境下權衡乙個想法的好壞呢?
首先我認為在對待產品功能和預計的使用者體驗上,應當適當帶上一點感情,因為這樣能更加契合使用者自身的體驗。但是同樣需要更多的統計資料來進行客觀的分析,這樣才能從兩個方面同時把握使用者的需求。在實現過程中,應當帶著理性去思考實現的問題,而不是感性。
有乙個問題,這個問題就在上乙個部分的第二個問題,沒有被解決。
回過頭來看我們的"事後諸葛亮", 實際上都是對每個階段的總結。正是因為這些總結才能對我們下一階段的任務有了乙個更明確的方向。因此,我認為在提高軟體工程專案效率方面,適時的"暫停"是更好的"快進」。
提公升大部分已經在第一部分中寫明,還有些提公升也很多,如團隊間交流的能力。
因為我以後讀博的方向是系統方向,以後參與的專案也很大概率都是多人合作的大規模專案,而不是像 ml 這種一人就可以單幹的專案。就像我們這次 judy 一樣,很多技術路線在後續的科研工作中不會特別的清晰,有時甚至到了開始寫**了還沒確定好正確的技術路線和實現方式。所以,針對這樣技術路線不明朗的情況,我希望能夠得到乙個更系統的方式,來更高效的完成專案的合作。
web程式設計課程小結
本學期學習了網路程式設計課程,但是並沒有涉及到socket等內容,所以準確來說應該算是web程式設計課,以下是對本學期課程學習要點的一些總結 html css 1 學習了常用的一些簡單標籤,然後製作了單列布局 僅使用了html 的網頁。2 學習css,引入了dom的概念,學習設定元素的屬性。3 在前...
php課程小結,PHP基礎學習小結
name yutuo 單引號字串 echo my name is name 單引號字串 echo my name is name echo my name is here文件字串 echo end my name is name my name is end 其結果為 輸出沒有任何換行,為了容易理解...
伺服器課程小結
本人是某雙非一本大學的學生,本學期專業選修課之一,課程的主要內容是學習在linux系統上部署伺服器,進行一些簡單的伺服器配置。這門課程學習的前半段是學習簡單的linux命令,課程使用的虛擬機器為centos6.6,學習的內容可以簡單列舉如下 1.檔案目錄管理 2.檔案許可權設定 3.使用者管理 4....