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