1. 程式人生 > 實用技巧 >個人作業——軟體工程實踐總結&個人技術部落格

個人作業——軟體工程實踐總結&個人技術部落格

一. 回望

(1)對比開篇部落格你對課程目標和期待,“希望通過實踐鍛鍊,增強軟體工程專業的能力和就業競爭力”,對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還存在哪些不足,為什麼?

在幾次作業的實踐當中,確實學到了很多,包括需求分析、PSP表格、單元測試、其他各種測試等等,深刻意識到了40% 20% 40%的精髓,以前都把大部分時間花在編碼上了,輕視了分析和測試的重要性,在稍微大一點的專案當中,這樣做容易到專案中後期才發現致命性的問題而導致專案夭折。不足的方面感覺自己在工程管理和進度把控上沒有太大的長進,主要原因是因為在最後的團隊作業中,對團隊所做的小程式開發方面不熟悉,現學的話當時在學其他東西也抽不出時間,錯失了一個做專案的機會,比較可惜,不過後面也還有很多實踐的機會,相信在本門課程的所學能為我後面的專案帶來一定的理論指導。

(2)你在第一次作業的個人簡歷中描述了這門課程結束後,你預期你將增長的能力、技術、技能,並繪製了學習路線圖。對比當前你的所學所得,你達到了當時的預期值嗎?

預期值:

工程能力: 能更好的解析需求,分配需求,實現需求

技術技能: 更好地使用Unity引擎,學習更多的AI演演算法,達到就業要求

通過這幾個月的學習算是基本滿足了預期,Unity方面學習了GOAP演演算法的一個框架,還學習了一個FSM的外掛PlayMaker,專案方面還有待提升。

(3)哪一次作業讓你印象最深刻?為什麼?

第二次和結對作業我印象都挺深刻的,最深刻的話應該是第二次作業-疫情統計,因為算是這門課第一次的程式作業,學到了很多東西,第一次提前設計了PSP表格,第一次理解規範的單元測試,也是第一次在寫程式碼之前做如此多的分析,而且那次的作業要求,我一開始並不理解命令列的那個操作,花了一些功夫研究,最後程式碼寫完了還因為環境問題引發了一系列的bug,好在最後都解決了,花費的時間沒有結對作業多,但是感覺更累,也因此學到的更多。

(4)在課程問卷中,我們統計了你在課程上花費的精力和提升;現在請你再次將這些資料羅列出來,作為個人的記錄。包括以下內容:

作業名稱 花費時間/h
第一次寒假作業 2h
第二次寒假作業 25h
結對第一次作業(原型設計) 10h
團隊作業第一次-種子隊伍選拔和團隊展示 3h
結對第二次作業-疫情視覺化實現 35h
團隊作業第二次-團隊Github實戰訓練 5h
團隊作業第四次-專案系統設計與資料庫設計 2h
個人作業-軟體測評 3h
Alpha衝刺 30h
Beta衝刺 10h
個人作業- 軟體工程實踐總結&個人技術部落格 4h
  • 累計花了多少個小時在軟工實踐上?平均每週花多少個小時?

這個有時候忙有時候閒,不太好估計,忙的時候一天除了吃飯都在做,閒的時候可能就晚上才有做。

  • 學習和使用的新軟體

原型設計:墨刀,Axure

單元測試:VS的單元測試功能,JUnit

效能分析:JProfiler

  • 學習和掌握的新語言、平臺

語言:java, markdown,

平臺:部落格園,github

  • 學習和掌握的新方法

單元測試和其他的測試方法,軟體開發的流程

  • 工程能力的提升

需求分析能力,程式碼設計能力,debug能力,檔案撰寫能力

  • 團隊合作上的提升

溝通協調能力

  • 其他方面的提升

有了寫部落格的意識,感覺這個挺重要的,寫技術部落格一個能幫助自己鞏固知識,一個能分享給大眾,有利於開發社群的發展,也能通過其他人來糾正自己的錯誤,之後的話會盡量產出一些原創的技術部落格。

二. 團隊總結

(1)你是組員還是組長?你覺得你自己在哪些地方做得好?你覺得自己還有什麼可以改進的地方,具體可以怎麼改進?

我擔任的是組員的角色。

做的好的方面:積極主動配合組長的工作,積極參與團隊的會議,發表自己的意見。

需要改進的方面:不通過組長的話與其他組員的溝通仍有障礙,主要是因為自己貢獻度不夠高,對其他人提要求不夠有底氣。在今後的專案中會爭做團隊的骨幹,增強自信。

(2)你覺得你的組長(組員們)在哪些地方做得好?你覺得ta(ta們)還有什麼可以進一步提升的地方,有什麼具體的建議嗎?

組長在協調整個團隊的溝通上起了重要作用,團隊裡負責前端的李同學也非常盡責,工作能力讓我感到敬佩。建議的話,希望組員們能多多發表自己的意見,多參與溝通,積極彙報自己的進度。

(3)《構建之法》上說團隊的發展有幾個階段,你的團隊都經歷過麼,最後到達了“創造”階段了麼?(參考《構建執法》第17章 人、績效和職業道德)

《構建之法》裡面提到的關於團隊發展的階段共有四個,分別是:萌芽階段、磨合階段、規範階段、創造階段。我覺得我們團隊處於規範階段,離創造階段還有很大的距離,這個需要團隊所有成員都有共同的目標和上進心才行。

(4)從開發的角度,你在團隊中擔任了什麼角色?你是否完成了該角色的任務?現在你覺得你適合該角色嗎?

我在團隊開發中擔任了測試和檔案的角色,我覺得自己基本完成了所有分配給我的任務,感覺自己在這個位置上的能力還是有所提升的,今後的話還是想堅持做遊戲客戶端開發,新學到的測試方法和檔案撰寫能力對我來說也很有用。

三. 人月神話

1、怎樣證明你學會了軟體工程?以下要求你們的團隊達到了哪幾個?請在隨筆中用資料證明上述內容或側重選擇之一。

(1)研發出符合使用者需求的軟體必須公開發布,有實際的使用者,一定的使用者量和持續使用量 (3 天后能保持10 - 100個使用者);而不是: 做沒有使用者使用的軟體

在Beta階段快結束時,我們在朋友圈釋出了小程式的二維碼,收到了很多使用者的反饋,但由於比起市面上的一些單詞學習軟體來說,功能太少,主打二次元的這個優勢不明顯,還沒辦法留住使用者,仍需要後期功能的開發和擴大相簿。

(2)通過一系列工具,流程,團隊合作,能夠在預計的時間內釋出 “足夠好” 的軟體有專案規劃/需求/設計/實現/釋出/維護,有定時的進度釋出 ; 而不是: 通過臨時熬夜,胡亂拼湊,大牛一人代勞,延遲交付等方式糊弄

專案通過github進行合作,通過Issue進行隊內的溝通和bug反饋,在Issue區認領自己的功能,修復之後進行關閉,雖然趕不上原來的計劃,但衝刺階段也每天都持續在開發。

(3)並且通過資料展現軟體是可以維護和繼續發展的。而不是 找不到原始碼,程式碼無檔案,程式碼不能編譯,沒有task/bug 等專案的發展資料

所有程式碼在github上進行託管,可以進行bug反饋和版本釋出。在檔案方面,也有介面檔案、類圖設計、資料庫設計、系統結構設計、使用者使用手冊等一系列可以檢視的檔案。

2、寫下屬於你自己的人月神話——個人或結對或團隊專案實踐中的經驗總結+例項/例證結合的分析,字數不限,開放命題,可以使用你自己喜歡的方式表達

幾次作業下來,有一個很深的體會就是要敢做,敢於挑戰,萬事開頭難是真的,每次看到作業要求都會覺得自己做不到,因為之前可能沒做過這樣的功能,就會有點畏手畏腳,然而期限快到了之後,被趕鴨子上架真正開始做需求分析之後,將複雜問題分解成了多個細小的問題之後,就發現這些小問題是當下可以解決的,專案也就開始有了進展,後續編碼過程也流暢了起來,然後接下來可能遇到的困難就是一系列未曾意料的bug,所以趕ddl是非常危險的行為,還是儘早做比較好,所以我認為開始做需求分析是非常重要的一步,只要開始做之後,最終的目標也就不是那麼遙不可及的了。以後第一步邁不出去的時候,得逼自己一把才行。

四. 建議

  1. 對於下一屆同學,或者大一的同學,你想說:

    一定要報名我們西二線上工作室,不管是想做前端後端還是產品或是UI都能學到很多,不知道想做什麼的話,記得開學的時候來聽聽西二的宣講會,這裡有歷屆學長學姐傳承下來的經驗、資源,還有一群志同道合的夥伴陪你一起做專案,校招從大一開始,贏在起跑線上!

    沒有提到西二的unity組(也可能會變成UE組)是因為我們的沉澱還不足,沒有其他方向那樣的積累,報名需謹慎,可能沒辦法教到太多,如果你是真的喜歡遊戲開發,想來unity組一起開荒,那非常歡迎。我算是unity組開荒的一屆,真的走了很多彎路,不過這也算是我們的積累吧,希望後面幾屆會越來越好,然後想從事遊戲行業的話,感覺報數媒專業會好一點。不管是做遊戲還是軟體,只要涉及程式設計,課內的專業課都一定要學好,搞好績點也很重要,大學和培訓機構的學生差距就在於基礎和知識的廣度,然後多關注牛客網和LeetCode網,能養成刷題的習慣最好,演演算法和資料結構能力是基礎中的基礎,切記。

  2. 對於自己今後,你有哪些建言?

    堅持學習,堅持熱愛。

  3. 對於軟工實踐課程,你有哪些建議?對於軟工實踐課程的上課形式和內容,你有什麼具體的意見和建議?在哪兒需要強化或者剔除?

    感覺都挺好的,學習前端和後端的同學都反饋說能學到很多東西,我也覺得這門課程是軟體工程最值錢的一門課,本身學程式設計就是learning by doing,做得越多 就越強,能挑骨頭的地方可能就是課程安排的時期比較尷尬吧,也是大家一直在反饋的問題了,因為金三銀四,三月四月是春招的黃金時期,這個時間點安排佔用大量時間的課程是很不合理的,而且在這門課程開設前,很多同學都沒有像樣的專案經驗,這在春招中也是吃虧的,如果放在大二或者大三上的話,一個是能幫助同學們確定自己的技術方向,一個是能提前意識到就業的危機,然後對於考研的同學來說就是佔用了準備的時間。

    當然課程定在大三下也一定有歷屆老師和助教的考慮,我僅表達我自己的意見,畢竟滿足所有人的需求是不可能的,總之再怎麼困難我也是撐過來了,相信下一屆的同學一樣可以哈哈。

五. 個人技術總結

做遊戲常常會遇到資料配置或者存讀檔的需求,這是我整理的Unity常見的幾種資料本地持久化的解決方案