作者 邵棟
一個軟件工程專業(yè)畢業(yè)生是否具備工程觀念是不大看的出來的弥咪,但他不知道按照工程規(guī)范寫代碼络它、不使用軟件工程工具、開發(fā)不做計劃與跟蹤,那他肯定沒有工程觀念呼奢。
國內(nèi)有很多和軟件有關(guān)的大學(xué)專業(yè)宜雀,其中歷史最長、招生人數(shù)最多的是計算機科學(xué)與技術(shù)(CS)控妻。軟件工程(SE)專業(yè)是從2002年國家開始軟件學(xué)院項目開始建立的州袒;其它還包括信息安全、網(wǎng)絡(luò)工程弓候、物聯(lián)網(wǎng)郎哭,最近幾年興起的數(shù)據(jù)科學(xué)、人工智能等等菇存。在最近研究生入學(xué)面試中夸研,我面試了近300名學(xué)生后,發(fā)現(xiàn)了一個問題依鸥,這些專業(yè)學(xué)生的課程內(nèi)容重合度非常大亥至,學(xué)習(xí)的內(nèi)容也非常接近,很多學(xué)校SE專業(yè)課程設(shè)置與CS幾乎一致贱迟,僅僅只是軟件工程概論課程變成了必修課姐扮,同時增加了一門軟件工程實踐課程而已。SE專業(yè)學(xué)生和CS專業(yè)或其它類似專業(yè)的學(xué)生課程內(nèi)容非常接近衣吠,在學(xué)生身上根本看不出來這些專業(yè)的區(qū)別茶敏。
一個新專業(yè)的設(shè)立是非常慎重的,培養(yǎng)的人才應(yīng)當(dāng)和原有專業(yè)有明顯區(qū)別缚俏。對于SE專業(yè)惊搏,在談到和原有CS專業(yè)的區(qū)別時,一般SE專業(yè)培養(yǎng)目標(biāo)中都會寫“培養(yǎng)高層次忧换、復(fù)合型軟件產(chǎn)業(yè)工程型人才”恬惯,培養(yǎng)學(xué)生具有工程實踐能力、工程化觀念等等亚茬,但這些目標(biāo)往往虛無縹緲酪耳,在教學(xué)活動中無法落實,很多時候也沒有人關(guān)心如何落實刹缝。
軟件工程專業(yè)畢業(yè)學(xué)生除了掌握計算機科學(xué)基本知識(軟件工程學(xué)科是建立在計算機科學(xué)基礎(chǔ)之上的學(xué)科葡兑,學(xué)生必須了解計算機系統(tǒng)、基礎(chǔ)系統(tǒng)軟件原理赞草、通曉1-2門常見編程語言等等)外,應(yīng)當(dāng)具備的可見特征應(yīng)當(dāng)包括:
- 能寫好代碼吆鹤。
代碼是軟件的產(chǎn)物厨疙,也是基礎(chǔ),是軟件工程活動中最重要的產(chǎn)物和工作疑务。代碼的最低要求是能夠完成需求沾凄,但“好代碼”要求更多梗醇,這包括良好的代碼規(guī)范(命名規(guī)范、格式規(guī)范等等)撒蟀,能夠感知代碼的bad smell叙谨,什么情況下該用什么樣的語法結(jié)構(gòu)(比如嵌入式系統(tǒng)中最好不要用遞歸)、有意識的控制代碼圈復(fù)雜度等等保屯。當(dāng)前有很多代碼質(zhì)量檢查工具(SonarQube, Findbugs手负,checkstyle,pclint姑尺,pylint等等 )竟终,大家可以在代碼寫完后自己掃描一遍看看是否符合業(yè)界一般標(biāo)準(zhǔn)。這方面知識建議學(xué)生在學(xué)習(xí)了基本的語言語法后切蟋,學(xué)習(xí)《重構(gòu)》统捶、《代碼大全》。 - 具有主動使用軟件工程工具的習(xí)慣柄粹。
任何工程領(lǐng)域喘鸟,良好的工具都是有效率、高質(zhì)量完成工作必備的驻右。軟件工程領(lǐng)域?qū)W生不知道什么是版本控制工具(Git什黑、SVN)是不可想象的。同時旺入,知道一個工具兑凿,和養(yǎng)成使用工具的習(xí)慣是兩件事情。你知道Git茵瘾,但自己寫代碼從來不用礼华;你知道持續(xù)集成,但團(tuán)隊從來不做拗秘,和不知道區(qū)別也不大圣絮。當(dāng)前,軟件工程的學(xué)生應(yīng)當(dāng)在工作中組合使用經(jīng)過檢驗的軟件工程工具雕旨,至少應(yīng)當(dāng)包括版本配置工具扮匠、項目管理工具、代碼靜態(tài)質(zhì)量檢查工具凡涩、持續(xù)集成工具棒搜、單元測試工具。 - 主動進(jìn)行項目計劃并跟蹤調(diào)整活箕。
項目管理是軟件項目開發(fā)的必須工作力麸,而計劃以及計劃的跟蹤是核心內(nèi)容。
擅長演講的人都知道,要點只能列三個克蚂,所以本文也只寫了三個能夠明確表征入門軟件工程師的特征闺鲸,這三個特征對于外部的觀察者是可以明確感知并度量的。
軟件工程師應(yīng)當(dāng)學(xué)習(xí)的內(nèi)容埃叭、具備的能力當(dāng)然很多摸恍,大家可以去參考國際軟件工程規(guī)范SWEBOK 3.0。