葉 鈺 劉振興 李太寧
(泰州職業(yè)技術(shù)學院<信息技術(shù)學院>,江蘇 泰州 225300)
筆者通過電話與網(wǎng)絡(luò)采訪搜集了23 家軟件開發(fā)企業(yè)的招聘需求,這些企業(yè)在2020 年一季度共計招聘軟件相關(guān)崗位需求是16 個,其中基礎(chǔ)軟件開發(fā)類需求崗位為9 個,占到總崗位需求數(shù)的56.25%。 這些基礎(chǔ)軟件開發(fā)類需求大致可以總結(jié)成使用不同的編程語言與技術(shù), 完成上級交辦的開發(fā)任務。 從此可以得出結(jié)論, 企業(yè)需求量最大的是實現(xiàn)軟件基礎(chǔ)功能的開發(fā)人員,而設(shè)計算法、架構(gòu)調(diào)整等對專業(yè)技能要求較高的職位占據(jù)的比例則小很多。 所以對于軟件開發(fā)專業(yè)的高校教育來說,尤其是高職院校的教育目的,首要并不是理論知識是否完備,基礎(chǔ)是否牢靠,而是應該將能否開發(fā)出可用的軟件功能作為首要目的。 針對學有余力的學生,再鼓勵并指導其進行深層次的學習。
人類社會發(fā)展到現(xiàn)在,任何現(xiàn)存的知識體系都已經(jīng)是極其復雜并相互嵌套的。 幾乎沒有人能將一個專業(yè)的所有知識從底層開始全部掌握清楚。 軟件專業(yè)由于發(fā)展時間較短,發(fā)展速度極快,導致教學模式遠遠跟不上產(chǎn)業(yè)發(fā)展速度。 計算機原理至今還是軟件開發(fā)專業(yè)必修的基礎(chǔ)課程之一,但實際情況是,就連內(nèi)存溢出這種曾經(jīng)被認為是每個開發(fā)人員必須深度掌握的知識, 如今絕大多數(shù)編程語言都已經(jīng)能夠自動解決,只有少部分不得不用到C 系列等語言進行開發(fā)的工作崗位需要熟練掌握。
如何吸引人們的注意力,引導用戶產(chǎn)生興趣,其實在心理學、新聞傳播等學科的研究已經(jīng)非常深入了。近幾十年來, 學界針對各種這類問題進行了非常多的實驗。 例如:什么樣的油畫更容易被買家購買,什么樣的流行歌曲更容易被傳唱并引起話題等。 《大西洋月刊》的專欄作家Derek Thompson 在其著作Hit Makers:The Science of Popularity in an Age of Distraction[2]引用了大量相關(guān)研究并概括成一個通俗的“公式”,也就是“喜歡=熟悉+意外”。 法國認知心理學專家 Stanislas Dehaene 最新發(fā)表的著作How We Learn:Why Brains Learn Better Than Any Machine for Now[3]中也用大量的篇幅介紹了最近幾年的最新科研成果, 再次論證了人腦在學習方面的這種特殊模式。 同時根據(jù)美國亞利桑那大學和布朗大學的最新研究成果, 學習的最佳效率是知識的未知率為15.87%。 也就是說,當一個人學習新知識的時候,大約85%的東西都是以往知識體系中已經(jīng)熟練掌握的,才能讓學習的效果最大化。
而在軟件開發(fā)以及很多其他學科的教學中, 采用的都是從基礎(chǔ)知識開始,如數(shù)據(jù)結(jié)構(gòu)、計算機基礎(chǔ)、信息論等。 這些學科與學生的基礎(chǔ)知識體系是沒有任何直接關(guān)聯(lián)的,是人們在對大腦結(jié)構(gòu)一無所知的年代,根據(jù)宗教、文化、風俗等學科總結(jié)出的教學方法,從學習效率這方面來說,是十分低效的。 近年來,隨著對大腦的研究逐步深入, 尤其是認知神經(jīng)學等相關(guān)前沿學科的飛速進步,本文所提及的“逆向教學”概念,才是順應人腦生理結(jié)構(gòu)的正向?qū)W習模式。 對軟件開發(fā)這種如今已經(jīng)遍布人們生活方方面面的學科來說,尤其如此。
根據(jù)前文所述, 在軟件開發(fā)中實踐逆向教學,實際上就是按照人們在日常生活中對軟件開發(fā)的熟悉程度來逐步展開教學活動,而不是按照軟件開發(fā)這門學科的知識體系來開展教學活動。 這種逆向,其實只是針對傳統(tǒng)軟件開發(fā)教學的逆向,但對應到人們的生活中,這其實是正向的教學,是順應人類本能學習習慣的教學模式。 就好比如何學習成為一名廚師,一般是先從打掃衛(wèi)生、切配、顛勺開始,而不是先從營養(yǎng)學、化學組成開始。 這就是從人們熟悉的,切實可操作的部分入手,開始學習一門新知識最快的路徑。
對應軟件開發(fā), 與人們生活對應程度最高的,其實是軟件的使用。 如今人們從兒童時期開始就不可避免地使用無數(shù)軟件。 從家里的電視、家電、智能家居設(shè)備,到公共場所的取號叫號、訂餐選座,無一不是軟件開發(fā)的目的之一。 而所有軟件中,即時通信軟件,即聊天軟件,無疑是使用頻率最高的軟件之一。 所以軟件開發(fā)教學,從這些軟件入手則是最自然不過的入門途徑。 當然,不同的教師可以根據(jù)自己的知識特點選擇不同的軟件作為入門,只要不脫離人們?nèi)粘J煜げ⑹褂玫能浖@個范疇即可。
常規(guī)軟件開發(fā)項目化教學,如果教學目的是學習如何開發(fā)即時通信軟件, 那么通常都是從需求分析、技術(shù)選型、模塊設(shè)計入手。 這是已經(jīng)熟悉了軟件開發(fā)專業(yè)的軟件工程師的思考路徑,不是剛?cè)腴T甚至沒有入門的學生的思考路徑。 軟件開發(fā)的思維模式與日常生活的思維模式有著根本的不同,不能要求外行一開始就了解并習慣這種思維模式。 所以,如何使用軟件,如何找到使用過程中的問題,才是教學最先應該設(shè)計的部分。 在軟件開發(fā)整個生命周期中,發(fā)現(xiàn)問題與解決問題才是最重要的能力。 當然任何專業(yè)都需要一個善于發(fā)現(xiàn)問題與解決問題基本素養(yǎng)。 如何在使用中找到問題就是最佳的入門抓手, 而如何設(shè)計這些問題,就成了課程改革的重點與難點。 最佳的問題設(shè)置,應該讓學生在未掌握相關(guān)知識的時候,發(fā)現(xiàn)不了相關(guān)問題,但是當學生解決一個簡單問題之后,自然地發(fā)現(xiàn)新的問題,并引申出相應的知識點。 好比游戲設(shè)計一樣,只有積累經(jīng)驗升級學會新的技能后,才能解鎖更高級的地圖與裝備。
在軟件開發(fā)課程中, 老師給學生布置了一個任務,就是測試某些軟件的功能是否有漏洞。 老師教學軟件并不是什么復雜的管理系統(tǒng),而是大家平時每天使用最多的聊天軟件。 每個人都知道聊天軟件應該怎么用,有哪些功能,按鈕點了以后應該顯示什么。 所以每個人都能參與到測試中來。
老師會在聊天軟件中故意設(shè)置一些簡單的問題或陷阱,所有人的bug 修改通過git 提交。 從最簡單的錯別字開始,到一些測試按鈕和測試消息,以及代碼沒有格式化。 讓學生自行參與修改代碼。 每次修改只要點一下運行就能自動運行,減少中斷的次數(shù)。 每一次調(diào)整,點擊運行,都是給學生建立正向反饋,每次運行成功的效果,都是在一點點建立學生對軟件開發(fā)的信心。 同時讓找問題與學生的成績進行掛鉤。
筆者所在團隊在教學實踐中初步嘗試了本文所提及的教學思路, 并在課后進行了教學效果問卷調(diào)查。 調(diào)查結(jié)果顯示,與未進行逆向教學的班級學生相比,對于入門課程的教學,學生在課后對本專業(yè)更有興趣的比例在90%以上,而傳統(tǒng)教學模式的學生在課后并沒有對課程產(chǎn)生更多的興趣。 論證了本文所提及的教學思路能起到一定的效果。
首先, 逆向教學思維更適用于一些與日常生活有著密切聯(lián)系的學科, 因為如果一門學科的應用在日常生活中不常見的話, 那么就沒有很好的辦法在入門的幾次課程中調(diào)動學生的積極性。其次,逆向教學思維不適用于一些需要長期積累培養(yǎng),量變到質(zhì)變的學科,例如藝術(shù)、文學等學科。最后,也是最重要的,這種教學方式,不太適用于需要精密嚴謹?shù)目茖W理論支撐的學科。即使同樣是軟件開發(fā),如果是開發(fā)交通控制、金融等應用,那么如果沒有系統(tǒng)扎實的理論知識,很容易產(chǎn)生錯誤。而日常應用軟件的開發(fā)則沒有太過嚴格的要求。所以本文所述的教學方法, 尤其適合是用在高職院校的軟件開發(fā)教學中, 幫助學生快速建立基本知識架構(gòu)與信心,從而在就業(yè)時能及時對接企業(yè)需求。
當然,設(shè)計這門課程,離不開豐富的軟件開發(fā)經(jīng)驗與大量的課程研發(fā)時間,這遠不是一兩個人用短短幾個月時間能夠研發(fā)成功的。 例如,學生的興趣與反饋, 就需要經(jīng)過多次真實課堂的教學實驗并快速迭代,才能找到較為可行的路徑。