【软技能】代码先放一放,学习一下工程的概念
前言
本篇文章適合于以下同學閱讀
- 接觸編程時間不長的初學者;
- 經常需要編程,但是對工程的概念相對模糊的同學。
初步認識工程
工程的概念大家或多或少都有接觸過。比如在開發環境(如Qt Creator)里編寫一個軟件,我們首先需要新建一個“Project”,中文翻譯通常叫做項目或者工程。一個項目中包含了以下內容:
- 項目配置:用于告訴開發環境如何為你工作;
- 項目代碼:項目代碼是開發者編寫的,用于實現你的編程目標,比如實現一個播放器、實現一個游戲等;
- 項目其他資源:如圖片、文本等數據資源。
可以看到,**項目是實現一個目標,所需要的信息、資源、工具、步驟的集合。**換言之,把實現一個目標所需要的資源,有機的結合起來,就變成了項目。
在腦海中樹立項目的概念是很有用的。項目能夠讓你更加有條理地、高效地管理你正在做的事情,讓你能夠更加專注于和目標相關的事物,而不是把精力放在無關緊要的東西上。
但是,上述的項目/工程僅僅是軟件開發過程中的一個狹義的概念。在實際的軟件開發行業中,也就是在公司、團隊在做產品開發的實際生產實踐中,需要將上述的“Project”(即項目/工程)的概念作推廣。
概念推廣
每個人都是初學者過來的,記得在筆者本人初學編程的幾年內,總以為軟件開發就只是寫代碼而已。隨著參與了一個又一個實際的軟件項目,筆者才明白,軟件開發絕不僅僅是悶頭寫代碼而已。
也許你覺得,編程做軟件不就是寫代碼嗎?我一直都是這樣做的啊,代碼也能寫出來,也能運行很好。之所以產生這樣的認知,是因為你沒有接觸到相關的實際問題。
例如,一個總價50萬的軟件,總代碼行數5萬行,如果交給你做,項目交付時間為三個月,軟件的需求由客戶來提,需求有一定的變動,你有多少把握去接?判斷有多少把握,當然不是直接把代碼寫出來再評估,評估和分析的工作要在編碼之前做好。例如,至少需要評估以下方面:
- 需求變化范圍:需求絕大多數情況下是會變的,就像是每個App每年都在更新。要和客戶確認需求的變化范圍,保證需求可控,考慮不可控因素。在后續的開發編碼中,要對不確定因素做好軟件架構上的冗余設計。
- 技術難度:項目涉及到哪些技術,有哪些解決不了的問題,哪些難點大概需要花多長時間;
- 技術選型:同一個業務可能有多個技術方案,選一個綜合考慮最優的方案;
- 軟件的結構設計:代碼在5萬行的項目,對于一個人來說,是一個不小的項目了。可能你平時寫萬行以內的小工具、小demo不是很費力,完全用不上精心考量設計模式和架構。但是,隨著代碼行數的增多,代碼的維護越來越難。如果軟件沒有一個章法、結構可尋,你的代碼將逐漸失控。最典型的例子是,在你寫一個新的功能時,需要在已有的代碼中添加、修改或刪除代碼。但是因為代碼量多,代碼耦合性強,導致你每改一個地方,都有可能破壞已有功能,引入bug,導致軟件bug橫行,最終項目失敗!
- 軟件測試如何做,以及需要多少工作量
- 軟件部署、維護如何做,以及需要多少工作量
如上所述,軟件從開始到結束,除了編寫代碼,還有很多步驟需要完成,而且每個步驟都需要產出相關的文檔、資料,作為后續編碼人員進行編碼的依據。現實中,軟件公司的軟件生產流程和上述過程類似。之所以說類似,是因為實際上并不是所有公司、團隊都會嚴格遵循以上步驟。其中重要的原因是成本問題,步驟增多,成本自然會上升。對于規模較小的公司、團隊,可能流程更加精簡;規模較大的公司,因為出錯成本高,會更加注重軟件工程的實施,提高軟件質量。
我們一定要摒棄“做軟件只是寫代碼”的陳舊觀念,寫代碼是軟件過程中的重要部分,但并非全部。讀者可能會覺得上述內容可能用不到,這是因為暫時你還沒有遇到實際的問題。在日后的工作中,你將會逐漸地遇到這些問題。在遇到這些問題之前,最好先建立起相關概念,做好心理準備,并隨著時間的推移,慢慢消化。
軟件行業發展已有將近一個世紀,軟件開發過程中,什么情況下會遇到什么問題,以及這些問題如何解決,相關的研究已經比較成熟。這一套成熟的理論,叫做“軟件工程”。這個“工程”不再是“Project”,而是“Engineering”。
如果你想要進一步了解的話,可以查閱“軟件工程”相關的書籍。這里推薦一本:《軟件設計師教程(第五版)》。此書電子版百度云地址:鏈接: https://pan.baidu.com/s/1s9rQjIIAxFmccCf7fZUvOA,提取碼: htcq。也可以關注公眾號“Qt未來工程師”,后臺回復1,獲取下載地址。此書中有軟件工程的相關章節。大家下載下來以后,可以在閑暇之余閱讀。
Project和Enginnering的異同點
相同點:
- 都是為了實現某個目標,而創建的信息、資源、步驟的集合。
不同點:
- Project更傾向于代碼管理,而Engineering傾向于整個軟件從確定軟件需要實現什么功能開始,到軟件投入使用結束,整個過程中所有需要做的事情。
了解工程的概念對個人的作用
本文讀者中可能有一些尚未參與到工作中的同學,對軟件開發的整體過程可能沒有完整的接觸。了解軟件工程,可以幫助你了解最真實的軟件開發流程,為將來的工作作準備。
同時,軟件工程中包含的一系列設計步驟和方法,是提高軟件質量的重要保證。對個人來說,學會參與到軟件工程為主導的開發過程中,是提高自身軟實力的重要機會,能讓自己的編程生涯更加順利,減少不必要的麻煩,避免因質量、進度問題產生嚴重后果。
結語
筆者根據自己多年的編程和工作經驗,簡述了工程相關的概念,并沒有作深入介紹。希望能夠引起讀者對工程的注意,幫助讀者避開自己曾經走過的彎路,擴充知識面,提高自身實力。
總結
以上是生活随笔為你收集整理的【软技能】代码先放一放,学习一下工程的概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东白条怎么绑定信用卡
- 下一篇: 今年前十大经济体的排名或有变化,一国可能