許多人看到“軟件”二字便立刻想到了代碼。事實上對于“軟件”的定義,迄今為止業(yè)界仍然沒有一個統(tǒng)一的答案,很多學(xué)者和組織機(jī)構(gòu)分別提出了自己認(rèn)可的定義:電氣和電子工程師協(xié)會提出,軟件工程是將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運行和維護(hù),即將工程化應(yīng)用于軟件;《計算機(jī)科學(xué)技術(shù)百科全書》中提出,軟件工程是應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)、邏輯學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒了傳統(tǒng)工程的原則、方法,將計算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,將工程科學(xué)用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡,將管理科學(xué)用于計劃、資 源、質(zhì)量、成本等管理。由此看出,軟件工程研究的不僅僅是代碼,還涉及到數(shù)學(xué)、計算機(jī)科學(xué)、邏輯學(xué)、工程學(xué)、管理科學(xué)等多種學(xué)科,研究的是如何從零開始開發(fā)、運營和維護(hù)一款軟件。
學(xué)習(xí)內(nèi)容,不止于“軟件”
隨著第三次科技革命的展開,人類文明進(jìn)入了一個信息化和智能化的時代,這個時代的軀體是精細(xì)的機(jī)械制造,大腦就是軟件,是信息技術(shù)和智能化發(fā)展的幕后操縱者。與計算機(jī)科學(xué)與技術(shù)專業(yè)相比,軟件工程專業(yè)沒有在計算機(jī)硬件方面“較真”,它綜合了工程學(xué)、管理學(xué)、經(jīng)濟(jì)學(xué)中豐富且具有社會實用性的知識。當(dāng)然,高等數(shù)學(xué)、線性代數(shù)、離散數(shù)學(xué)、概率論等基礎(chǔ)數(shù)學(xué)知識是計算機(jī)類專業(yè)必不可少的基礎(chǔ),大學(xué)物理、數(shù)字電路等物理學(xué)知識也在其中,接下來則是C語言為代表的一系列編程語言,數(shù)據(jù)結(jié)構(gòu)與算法、計算機(jī)組成原理等計算機(jī)科學(xué)知識。大三進(jìn)行的項目實踐過程中會學(xué)習(xí)到工程學(xué)、管理學(xué)、經(jīng)濟(jì)學(xué)方面的知識,嘗試從零開始設(shè)計軟件,并進(jìn)行持續(xù)的運營、維護(hù)。
學(xué)好知識,思維與能力兼?zhèn)?/span>
軟件工程作為一門工科專業(yè),需要縝密的邏輯,結(jié)構(gòu)化、系統(tǒng)化的思維能力,一絲不茍的細(xì)致,一定的藝術(shù)鑒賞和創(chuàng)造能力,精益求精的精神,最重要的是對知識的渴求和對困難的不畏懼。比如在離散數(shù)學(xué)這門課程,我們會學(xué)到命題邏輯、謂詞邏輯、假言推理等邏輯推理手段,學(xué)到計算機(jī)如何保存和理解“知識”,人工智能是如何進(jìn)行“學(xué)習(xí)”的一系列邏輯思維相關(guān)內(nèi)容。再比如千行代碼的程序項目,鍛煉著我們的結(jié)構(gòu)化和系統(tǒng)化思維能力,如果不事先確定好結(jié)構(gòu)體系,項目進(jìn)行到后期,甚至連自己都看不懂自己寫了些什么,寫在了哪里。在日常運用中,對于后端軟件工程師,其核心在于設(shè)計底層算法,哪怕只是寫錯一個字母也會造成巨大影響。對于前端軟件工程師,需要設(shè)計軟件交互界面,未來不遭用戶詬病,一定的審美能力也是必要的。歸根結(jié)底,學(xué)好軟件工程專業(yè)要不斷實踐,在實踐中發(fā)現(xiàn)和總結(jié)錯誤,追求進(jìn)步。
在鼓勵創(chuàng)新創(chuàng)業(yè)的浪潮中,軟件工程專業(yè)具備了天生的優(yōu)勢,不論是進(jìn)入創(chuàng)新公司,還是另起爐灶,都有著廣闊的市場。因此軟件工程專業(yè)的畢業(yè)生們,大部分集中在相關(guān)產(chǎn)業(yè)就業(yè),且就業(yè)率近年來始終排在本科畢業(yè)生就業(yè)率前列,當(dāng)然,薪資待遇仍然視個人綜合素質(zhì)和能力而定。