1. 程式人生 > 其它 >回顧與總結

回顧與總結

提問回顧與個人總結

專案 內容
這個作業屬於哪個課程 2021春季軟體工程(羅傑 任健)
這個作業的要求在哪裡 提問回顧與個人總結
我在這個課程的目標是 能緊跟作業進度完成作業
這個作業在哪個具體方面幫助我實現目標 回顧課前思考,總結課程中的種種經歷,梳理自己在本課程中的收穫
個人提問部落格 軟工第二次閱讀作業

嘗試對在自己曾經提出的問題進行解答

為什麼要在大學中只用一學期軟體工程,時間夠嗎?

經過我的這學期軟體工程課程的學習,我可以很明顯的覺察到,儘管一學期的高強度的CI/CD學習、結對程式設計、團隊程式設計,總體來說還是不足的。

但是這學期對於體驗這個團隊的軟體開發流程,還是可以管中窺豹的。

而且軟體開發對於我,也不是那麼懵懂的事情了。至少我的目前總結來說,團隊組織、文件編寫、程式碼程式設計等等都是不可被取代的任務。而通過對團隊優秀成員的學習,也可以瞭解到一個合格的軟體工程師的標準是什麼。

在這裡,可以得出一個結論。如果指望一學期的軟體工程課程就能覺得自己精通軟體工程了,這是十分幼稚的。所謂的工程,往往不止技術,還有過往的經驗總結。可以這麼說,在經驗總結上,只用一個學期是遠遠不夠的,更需要自己在生產實踐中不斷學習摸索、不斷歸納演繹。

紙上得來終覺淺,絕知此事要躬行。

對於這個比較大的問題,我目前只能得到這樣比較淺顯的結論。

怎麼將單元測試整合到自動測試的框架中?

這個問題其實貫穿在整個團隊開發的過程中,過程實際上就是我們漸漸熟悉CI/CD的過程。

不斷提交、不斷測試、然後再版本迭代,這是單元測試的初衷。

但是目前來說,我們對於單元測試,可能還是不是很熟練,這一方面使我們今後要著重學習的東西,即怎樣讓先進的工具提高我們的生產力。

PSP中衡量軟體開發的工作量和質量的指標是否合適?

對於這個問題,我覺得當初提出這個問題的我有點抬槓,或者說有點偏激了。

優秀的、符合程式碼規範的、可以被簽入的程式碼,是理所應當成為衡量軟體開發的工作量和質量的標準。

比如我在團隊作業中就遇到了這樣的問題,說自己準備的差不多了,思路有了——但是程式碼量很少。這其實是一種自欺欺人的行為。最後再團隊裡掉鏈子的,往往就是我這樣的眼高手低的傢伙。

所以我現在,確實是認可衡量軟體開發的工作量和質量的重要指標是程式碼這個論斷。

但是延伸開來,對於一個團隊來說,衡量軟體開發的工作量和質量的重要指標依然是程式碼量嗎?

經過一學期軟體工程的學習,我想答案就發生改變了。

首先是市場認可。不管你用了怎麼樣的軟體開發流程,也不管你用了什麼樣的文件寫作手段,但是功利地來講,市場是檢驗一個軟體的工作量和質量的試金石。

其次,文件的作用對於一個龐大的專案來說,或許是更重要的組成部分。一開始,我就存在不愛看文件,最後寫的程式碼完全不合規範的問題。這對於只有個位數的團隊來說,或許還有矯正的空間,但是上升到整個團隊來說,會是十分可怕的事情。文件就相當於樂團的指揮棒,相當於軍隊的傳令兵。不重視文件,單打獨鬥,這樣的結局是可怕的。

然後才是程式碼。程式碼目前來看,往往最重要的不是演算法之類比較深層次的東西。對於一個團隊來說,最為重要的或許是程式碼規範、程式碼可讀性、程式碼註釋。通過團隊學習,更加深層次地體會到程式碼可讀性的重要性。演算法效率低,還有改進演算法的空間;程式碼不規範,那麼面對的只有一座又一座的屎山,不可維護的垃圾,最後只能祈禱它正常執行。

花費時間越多,代表工作量越高嗎?

這是另一個槓精問題。對於這個問題可以簡單的來說。

對於個人來說,不同的人之間,或許花費時間越多可能不意味著工作量越多。但是對於自己來說,肯定是花費時間越多意味著工作量越多。

但是對於團隊,我對於這個回答就持有保留意見了。

不僅花費時間要考慮,產品的最終呈現也要考慮,乃至於文件、程式碼也需要綜合考慮。對於軟體工程來說,什麼樣的衡量工作量的指標,是需要反覆斟酌、逐漸學習的,而不是一拍腦袋就覺得這個指標就應當是什麼,那樣是不科學的。

極限程式設計真的好嗎?

對於這個問題,我的思考至今解決不了這個問題。

首先,必須承認極限程式設計的優點,那就是一種高強迫力來推動團隊開發。

上層更改指標?極限程式設計期間不能變!

期間遇到問題想偷懶?極限程式設計期間每日彙報進度,不允許偷懶!

等等的強迫力驅使著團隊開發。

而為了維持這種高強迫力,就不得不採取各種各樣的手段來維持,比如每日會議。

嘛,最後結局往往是該摸魚還是摸魚,遇到不可抗力還是無法解決。比如β階段,我最後一個週三場考試,這就是不可抗力,甭管你怎麼開會我都不可能把主要精力放在團隊作業上,這就是客觀事實。

而且這種注重形式的強迫力真的有效嗎,我認為還需要進一步的觀察。

心得與理解

其實這一部分使我更加想著重寫的地方。

其實我更想給諸位讀者放上,我這學期第一次的部落格作業的連結——第一次部落格作業

我只需要稍稍引用幾段這篇部落格裡的內容,大家就可以很顯然地理解到,我究竟是懷著多麼喪的心情去上這門軟體工程課程的。

- 你為什麼選擇計算機專業?你認為你的條件如何?和這些博主比呢?

好吧,這個問題難倒我了。我當初選擇計算機的動機很簡單,就是因為計算機專業的分數高,而且我的分夠計算機了,所以我就選擇了計算機專業。
上了大學才知道,我的條件很一般。一開始連“hello world”都敲不出來,而且沒有毅力。真的是一點毅力也沒有,也不想鑽研,作業、考試稍微難一點就不想做了。這真的很不好。
導致我現在一方面程式碼量不足,另一方面一寫程式碼就頭大2333333這不是計算機專業的傢伙該有的狀態。
但是,我確實地痛定思痛,我其實還是想學好計算機的。我打算認認真真,拿出時間和精力好好把這學期的軟工、計網、深度學習給學好。這是真話hhhhh。
和這些大V相比,我要走的路還遠得很呢。我感覺我到現在對於計算機,還是沒有入門。

- 你對你的大學生活有什麼想要吐槽的地方嗎?你理想的大學教育應該是什麼樣子的?跟學校給你的有什麼區別?比較你在中國大學的經歷,你的老師和學校能做到和國外那樣嗎?如果不能,請分析一下為什麼。

 吐槽的地方太多了2333333像我這種菜雞,總感覺大一沒跟上,然後就一直跟不上了hhhhh。
 上面神仙打架,下面我在渾水摸魚。這其實還是怨不得課程組,還是咱家需要補課的東西太多了。

- 迄今為止,你寫了多少程式碼,描述你做的最複雜的軟體專案/作業。

	好吧,說來慚愧,搞不好是資料結構課上寫的課後作業。。。因為咱家計組、oo都掛了,作業系統實驗、編譯實驗基本上都是半抄半寫的,不算數。搞不好寫個撐死500來行就是我的程度了。。。

- 對於你未來在IT行業的發展,你有什麼樣的夢想或者未來想從事什麼樣的工作?你準備怎樣來規劃你技術道路,職業道路和社會道路?

  • 靈魂問題來了。
    我想幹嘛。。。首先,咱的目標很簡單,首先別餓死。別笑,我很嚴肅的。我曾經不止一次地想過,我大概是拿不到畢業證了。拿不到畢業證,等待我的就是餓死街頭了;拿到了畢業證,或許我還可以憑藉北航的名頭招搖撞騙幾天,然後不靈了,餓死街頭。
    因為我感覺因為我自己的自暴自棄,導致北航在我身上的培養方案的反饋等於0——我啥也沒學會。啥也不會還能幹啥呢。。。
    後來想清楚了,總是這樣自怨自艾是半點用處也沒有的。必須從零開始踏踏實實地分析程式、寫程式,踏踏實實地提高能力才行。
    所以我是真心實意地想用心好好地學一學這學期的課程。因為我不能到最後啥也幹不成呀hhhhh。咱把自己作的基礎很差,可能要跟著神仙們學習,會遇到這樣那樣的問題,要花費大量的時間,這是必然的。
    我總得學點什麼出來,將來餓不死才行hhhhh。

    寬泛地說完,其實實際上。我感覺雖然我的寫程式碼的水平確實不咋地,但是我的系統性思維、工程性思維應該還可以,其實我感覺我將來從事的工作,最好是那種有一定規劃需求、需要一定創造力、一定的領導能力的工作,而不是和工人一樣給汽車上輪子,只不過用計算機彷彿就高階一點。
    未來的話,我想我可能會考研吧hhhhh。估計得從今年暑假開始準備了,因為這學期的課程還挺緊張的。考研之後,講真,我挺希望我能從事建模方向的工作。
    啊。。。都是泛泛而談,先過了再說。。。

而且不僅內容喪,連排版都不行呀,能不能幹了?(笑)。

我想那時候的我,確實是不太行。而且彷彿陷入了思維怪圈:

課程這麼難,我肯定過不了——>沒有下功夫的必要了,反正我不行——>你看掛了吧,我果然沒說錯,就是不行——>新的課程這麼難,我肯定過不了.......

就這樣莫名其妙地度過了大學好多年,以至於我很難發現大學給予我的除了挫敗感,還剩下什麼東西。

我想,那時的我最大的問題,就在於尋找各種理由來否定自己,從而扼殺掉自己去嘗試的絲毫可能,進而加深了對於自己的否定

但是,很顯然對於任何問題的悔恨都是沒有用的,蝴蝶振翅的時候,德克薩斯就已經發生了颶風,這時候的蝴蝶的悔恨是沒有絲毫用處的,因為颶風本身,已經不是蝴蝶所能左右的事情了。

事實上,種一棵樹最好的時機是十年前,其次是現在。

我不知道我那時候,開始嘗試認真學習軟體工程究竟是什麼樣的動機,可能源自於我對於自甘沉淪的不甘,也可能來自老師、家人、朋友的鼓勵。但是我想,最初的原動力應該還是來自於第一次部落格中的這樣幾句話:

因為我感覺因為我自己的自暴自棄,導致北航在我身上的培養方案的反饋等於0——我啥也沒學會。啥也不會還能幹啥呢。。。

我總得學點什麼出來,將來餓不死才行hhhhh。

所以我是真心實意地想用心好好地學一學這學期的課程。因為我不能到最後啥也幹不成呀hhhhh。咱把自己作的基礎很差,可能要跟著神仙們學習,會遇到這樣那樣的問題,要花費大量的時間,這是必然的。

但是,我確實地痛定思痛,我其實還是想學好計算機的。我打算認認真真,拿出時間和精力好好把這學期的軟工、計網、深度學習給學好。這是真話hhhhh。

我確實是想認認真真做出一點事情的。就這樣,在這樣什麼基礎也沒有,心懷忐忑的情況下,乘上了駛向“軟體工程”的“五月花號”。

過程倒是不那麼平順,首先就是我基礎的markdown都不會寫,因為我《面向物件程式設計》這門課完全放棄了,我覺得自己學不來,以至於連markdown都不會寫,於是就有了你們看到的醜到爆炸的第一次部落格作業。然後一邊百度一邊學習mardown,有了依然很醜但是勉強能看的 軟工第二次閱讀作業

然後就是CI/CD的學習,完全不明白yml是怎麼寫的,最後實在搞不定了,照著別人的成果亦步亦趨的寫,然後實在不明白的地方就去請教助教。

接著就是結對程式設計,一開始結對程式設計小夥伴對於我似乎還抱有多少幻想,讓我們一起結對去寫,第二天小夥伴就開始單幹了......我只能負責找bug,覆蓋測試的問題了(ps: 我覺得這不完全是我的問題,當小夥伴開始單幹,要一邊閱讀小夥伴的程式碼一邊補充,我覺得對於我還是挺難的,因為搞明白小夥伴程式碼邏輯這個步驟本應該在結對的時候就解決了)。但是我還是比較認真的debug,進行覆蓋,尤其是軟硬連結那一部分,有不少問題是因為我的單元測試找出來的。當然,總結部落格都是我寫的,還在評論區被誇獎了,叉腰。

最後就是團隊作業了,我只負責很少的前端工作,而且完全不懂應該怎麼寫。別人都說vue很簡單,但是我完全沒有這麼覺得啊,一頭霧水,完全不知道這是怎麼回事,和後端的東西差別有點大......都是別人寫完了自己的部分,我再模仿著寫,一邊看一邊學,然後全是bug。。。出了問題還要趕快找小組的成員討論,最後組裡的大佬還有給我善後。(感謝組員不殺之恩)

就這樣跌跌撞撞地學完了一學期的軟體工程課程,全程抱大腿才至於能走到今天寫總結部落格的地步,之前大多數課程都是半途而廢,笑話一般,或許別人會想——“北航竟然還有這樣的人?”(笑)。實在是力有未逮,也不算很盡力,但是確實這麼過來了。對於這個課程來說,如果十分滿分,我最多給自己5分。

但是如果我給我自己來評分的話,我會給自己1分。因為不是0分,而是1分。如果永遠都不敢去嘗試,那就永遠都是0分;但是試過了,儘管是1分,卻已然是質變。有了1分,才有了繼續的可能,之後的2分、3分、4分等等或許就不會那麼困難了。

雖然別人看來,可能能過《軟體工程》課程不算多大的事情,但我的確多少make a difference了。

我想,如果現在的我再去寫第一次部落格作業可能會有所不同。

迄今為止,你寫了多少程式碼,描述你做的最複雜的軟體專案/作業

應該具體多少記不清了,應該不算少。最複雜的軟體專案就是軟體工程作業了。其中我負責的前端部分應該在一千行左右。

對於你未來在IT行業的發展,你有什麼樣的夢想或者未來想從事什麼樣的工作?你準備怎樣來規劃你技術道路,職業道路和社會道路?

我的夢想就是能繼續在計算機專業上不斷的學習,如果可以讀研深造就繼續讀研,如果不可以那就在相應的工作中不斷學習,不被行業的潮流淘汰,逐步提高自己的程式設計能力,在未來某一方向上小有所成,成為一個有一定自我要求的、合格的計算機工程師。

這些都不是泛泛而談,而都是值得嘗試的東西。希望我能學會不斷地學習,不會妄自菲薄,也不會妄自尊大,在這個行業能站住腳跟,找到自己的立錐之地。

我想,可能對於他人來說,《軟體工程》課程並非什麼極為特殊的課程。對於我來說卻大為不同,它說明了這麼個道理:或許我在當程式設計師的這條道路上是可行的,前提是我要敢於嘗試,並且要不斷地用心學習。

種一棵樹最好的時機是十年前,其次是現在。