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