从《构建之法:现代软件工程》走进软件工程的学习
什么是軟件工程
什么是軟件工程?它跟一般的計算機學科有什么不同?BarryBoehm的定義是:運用現代科學技術知識來設計并構造計算機程序及為開發、運行和維護這些程序所必需的相關文件資料。可見軟件工程更多注重的是軟件的開發而非硬件的維護、修理等,它是計算機學科重要的一部分。
《構建之法:先代軟件工程》(以下簡稱《構建》)一書中提到,軟件工程這一專業,尤其是大學生,其師生關系是健身教練和健身員的那類關系。我個人理解的軟件工程,其開發和學習的流程大多是學習一個框架,在了解到某某語言或者某某工具的使用方法后熟練運用并掌握,結合自己的智慧開發出面向實際應用的軟件程序。很多人說現在的網絡這么發達,網上的資料這么多,什么不可以在網上學?為什么不可以自學?在這里結合我自己的親身體會,現代的軟件工程基本開發應用,大多都是英文界面的,對于一般的大學生而言理解和掌握有著相當大的難度,完全掌握所需要花費的時間肯定遠遠比課堂授業要多得多。舉個很簡單的例子,Visual C++作為基礎的C++語言開發平臺,若單純靠自學掌握其基本開發流程并熟練應用所需時間必然很長,當然快速自學并掌握一門語言框架并開發是每一個程序員都應該具備的基本素質,這里暫且只針對尚在學習的學生。手把手教導比之自己獨自鉆研顯然是前者更具效率,因為早已有前人開辟好了道路。為什么說健身教練和健身員的關系比較符合軟件工程專業的師生關系呢?首先教練得有真才實學,那是一眼能夠看得出來的,所以學員才會拜師教練門下,學到自己想要的東西。需求和能力這兩方面因素就體現出來了。正如《構建》中所言,師生關系中老師掌握著學生的績點和畢業證,是老師占據著主動,而非顧客和商家那種單純的交易關系。所以,學習軟件工程,從心態上就要明確一點:抱著學習的目的踏入軟件工程的行業。
軟件工程的幾個階段
《構建》一書將軟件工程劃分為了幾個階段:
1.學習基本知識的玩具階段
2.作為愛好者的氣球階段
3.作為行業先驅者的萊特兄弟飛機階段
4.作為成熟專業人士的民航階段
簡要闡述一下個人對這些階段的觀點:處于玩具階段,應當做的是積累最基本的知識,掌握行業的基本運作模式,決定今后發展的方向。就像是一個飛機的模型,所有的飛機都是從模型階段開始設計、萌芽的。
處于氣球階段,了解了基本的知識,一部分能夠堅持下來的人或多或少都對這門行業產生了興趣,亦或者熱愛,萌生了動力。這是基礎實踐經驗的積累階段,用歷史的角度而來,相當于“資本主義原始積累階段”,后續的獨立開發、團隊協作、項目經驗等等實踐經驗大多來源于此。
處于萊特兄弟飛行階段,相當于已經有了豐沛的技術經驗、實戰經驗的積累,個人認為這是所有階段中最為提現軟件工程價值的階段——開拓與創新。將經驗匯集,創新出屬于自己的東西,這正是軟件工程最重要的創新精神。
處于民航階段,擁有了屬于自己的東西,最后便是將這些運用于實際生產建設、商業運用中。一切理論和實踐都脫離不了生產建設,這是最后的也是最現實的階段。
軟件工程的特性
軟件工程的特性諸如特殊性易變性之類的《構建》一書中有提過,這里就不再贅述,只談及個人的理解:軟件工程是一門復雜的學科,同時也是團結性和獨立性兼具的學科。作為軟件工程的從業者,個人必須具備獨立學習和獨立開發的能力,這需要相當強的自學能力;同時需要從業者具備一定的團隊協作能力。軟件的開發在實際應用階段,不可避免地需要面對工程量的問題,不可避免地需要面對團隊協作的問題。有個經典的調侃“程序員最討厭不寫注釋的人,同時每個程序員又都是不寫注釋的人”,小小的幾行注釋涉及到的是整個團隊的協同工作效率,影響到的是整個團隊的效率與進度。
前面有提過,軟件工程是面向實際的,雖然程序員操作的是代碼層,可實際呈現出來,展現給需求者的是實際應用層的表現效果,涉及到UI涉及、前端后端、網頁設計等等,這些都是從業者需要考慮到的問題,不論身處軟件開發的哪一環,最終的成果都是實際應用層的表現效果。這需要從業者具有良好的溝通能力、具有服從性或指揮性,同時需要學會排查疏漏——對于程序員而言,最難受的莫過于修bug了。
我個人針對《構建》一書,產生了更多的見解:軟件工程還應該具有時效性:
我認為軟件工程具有很強的時效性,也許對現在而言非常流行的一門框架、一門語言,在你潛心學習,完全掌握并且走上社會尋求工作崗位的時候,就已經被時代所淘汰了。框架語言的更新換代速度是十分迅速的,前一年我們還在學校學習Android 7.0的開發,當我們走上工作崗位的時候,Android 9.0的框架或許都已經過時了。正因為其時效性,軟件工程從業者需要有獨到的眼光,選擇屬于自己、適合自己的道路。
軟件工程的前景
針對軟件工程的學習,故《構建》中關于實際團隊、社會協作等方面的內容暫不贅述,前面提到了軟件工程從業者所需要的品質、提到了軟件工程道路階段性、提到了軟件工程的性質,下面則是個人理解的軟件工程行業的前景。
都說21世紀是生物化學的世紀,我個人的觀點有點不同:無論各行各業,即便是農業生產,都離不開軟件工程。現代化發展如此迅速,軟件工程走進了各行各業,方方面面。軟件工程是面向對象、解決實際問題的行業,只要有問題,就存在需求,那就有軟件工程行業的身影。從長遠角度來看,軟件工程從業者在未來勢必會身處生產建設的各個角落。生物化學解決的是全人類的問題,但它只需要一小部分人;軟件工程解決的也是全人類的問題,但它需要的是很多的人。從歷史的角度上可以發現,人類的進步就是自動化的進步,以至于工業革命以來人類的生產力大幅度上升,軟件工程乃至整個計算機行業,作為實現自動化的學科,勢必會在未來發揮出更大的價值。而就當下而言,國內專業的人才待遇普遍偏高。
中國薪酬網整理的2018年應屆大學生專業收入排行數據顯示,軟件工程行業在當下具有非常強的競爭力,就眼下國內相關的人才需求仍然有很大的缺口,軟件工程行業的就業前景不言而喻。
總結
以上是生活随笔為你收集整理的从《构建之法:现代软件工程》走进软件工程的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年计算机技术应用大赛,2015年
- 下一篇: 读书笔记2014第4本:程序员修炼之道-