我周圍大多數(shù)人都是軟件工程師或計(jì)算機(jī)科學(xué)家,大多經(jīng)驗(yàn)豐富且接受過(guò)嚴(yán)格的計(jì)算機(jī)科學(xué)教育。當(dāng)然,這只能成就一個(gè)計(jì)算機(jī)科學(xué),卻不一定能成就編程。許多經(jīng)驗(yàn)豐富的同事都痛惜年輕同事技能和教育水平的下降。
同時(shí)我也發(fā)現(xiàn),入門級(jí)編程學(xué)習(xí)者在工作和課堂上的技能和教育方面有所轉(zhuǎn)變。似乎軟件工程作為一門學(xué)科和職業(yè)已經(jīng)讓位給了“黑客”和“牛仔”開發(fā)人員,但他們對(duì)實(shí)際的計(jì)算機(jī)科學(xué)知之甚少。事物發(fā)生變化了嗎?如果有,怎么辦?
歷史101
如果追溯到計(jì)算機(jī)科學(xué)的起源,它還不叫計(jì)算機(jī)科學(xué),學(xué)校甚至還沒(méi)有設(shè)置計(jì)算機(jī)科學(xué)系。計(jì)算機(jī)科學(xué)作為一門學(xué)科是數(shù)學(xué)和(或)工程學(xué)的一個(gè)下設(shè)學(xué)科。第一個(gè)計(jì)算機(jī)科學(xué)系于1962年在普渡大學(xué)成立,15年后,大學(xué)計(jì)算機(jī)科學(xué)系才相繼推出。在20世紀(jì)80年代,計(jì)算機(jī)科學(xué)在很大程度上仍被認(rèn)為是數(shù)學(xué)或一般工程的一個(gè)子領(lǐng)域。然而,早在20世紀(jì)40年代,我們就有了計(jì)算機(jī)程序員。這些早期的開拓者是誰(shuí),他們做過(guò)什么的呢?
奧古斯塔·阿達(dá)·金,勒芙蕾絲伯爵夫人; 也叫阿達(dá)·洛夫萊斯。計(jì)算機(jī)科學(xué)家之母。
最早的程序員是數(shù)學(xué)家。那時(shí)通常不稱為程序員,而稱作分析員、工程師、數(shù)學(xué)家,或者被稱作“冰箱里那些真正聰明的女人”(最早的程序員大多是女性,大多數(shù)電腦都在“冷庫(kù)”里)。這些“程序員”必須在數(shù)學(xué)和(或)工程方面受過(guò)廣泛的正規(guī)教育。與我們今天所認(rèn)為的程序員相比,早期的程序員更像科學(xué)家。隨著時(shí)間的推移,到20世紀(jì)60年代末,這一領(lǐng)域發(fā)展壯大,進(jìn)行計(jì)算機(jī)編程的人們被稱為軟件工程師。這些人接受過(guò)高等教育(仍然主要是女性),通常擁有數(shù)學(xué)高級(jí)學(xué)位。這種情況持續(xù)了一段時(shí)間。
瑪格麗特·漢密爾頓, 第一個(gè)真正的軟件工程師;最偉大的工程師之一。
到了20世紀(jì)80年代,計(jì)算機(jī)科學(xué)系和學(xué)位開始在各個(gè)高校中嶄露頭角。有人認(rèn)為這是計(jì)算機(jī)科學(xué)的黃金時(shí)代。私人電腦出現(xiàn)在美國(guó)各地的家庭中,像《戰(zhàn)爭(zhēng)游戲》(Wargames)這樣的電影引起了人們的興趣,使他們想更多地了解電腦,而傳說(shuō)中的“互聯(lián)網(wǎng)”又在挑戰(zhàn)人們的認(rèn)知。在此期間,我們見(jiàn)證了正式而又的傳統(tǒng)軟件工程師的崛起。該頭銜令人垂涎,同時(shí)也讓人肅然起敬,只有那些在數(shù)學(xué)、計(jì)算機(jī)科學(xué)和(或)電子工程方面受過(guò)正規(guī)教育的人才能獲得該頭銜。這也發(fā)展了一段時(shí)間。
開始轉(zhuǎn)變
到了90年代末,我們現(xiàn)在簡(jiǎn)單地稱之為“程序員”、“碼農(nóng)”和“開發(fā)人員”的人開始涌現(xiàn),他們不是正規(guī)大學(xué)畢業(yè),而是擁有軍事技術(shù)培訓(xùn)學(xué)位或動(dòng)手編程副學(xué)位等證書的人,或者僅僅是通過(guò)互聯(lián)網(wǎng)自學(xué)的人。漸漸地,這個(gè)新的團(tuán)隊(duì)以新的頭銜進(jìn)入軟件工程領(lǐng)域,比如“程序員”或“開發(fā)人員”,而不是“工程師”,我們也見(jiàn)證了網(wǎng)絡(luò)專家和系統(tǒng)管理員等計(jì)算機(jī)相關(guān)技術(shù)領(lǐng)域的爆炸式發(fā)展。
即使到了2000年初,作為一名招聘經(jīng)理,我看到過(guò)任何申請(qǐng)軟件工程職位的人幾乎都有相關(guān)的四年學(xué)位。如果我看到這樣的簡(jiǎn)歷,我會(huì)不假思索地跳過(guò)??斓?010年末,我看到的申請(qǐng)中至少有一半來(lái)自沒(méi)有正式學(xué)位的人?,F(xiàn)在作為一名計(jì)算機(jī)科學(xué)教授,經(jīng)常有學(xué)生在一兩堂課后輟學(xué),因?yàn)樗麄兊玫搅艘环蓊愃瞥绦騿T的工作(通常不是一份好工作,也不是他們理想中的工作,而是一份名為“開發(fā)人員”的工作)。
“軟件工程師”這個(gè)頭銜要么不受歡迎,要么專屬于大型科技公司的傳統(tǒng)和高級(jí)職位?,F(xiàn)在,通常是以“開發(fā)人員”或“程序員”作為一個(gè)職位,或者不幸的話,荒謬和滑稽的“黑客”、“碼農(nóng)”或“代碼大師”成為職業(yè)。我們也看到了荒謬的“全堆棧開發(fā)人員”的標(biāo)題到處亂扔,似乎這有一些特殊的意義(但其實(shí)沒(méi)有)。學(xué)位不再是衡量程序員工作適合與否的必要條件,事實(shí)上也不一定需要正規(guī)教育。標(biāo)準(zhǔn)似乎在急劇下降,以至于任何能打字的人都能叫“程序員”。
發(fā)生了什么?
對(duì)于保守派來(lái)說(shuō),典型的結(jié)論和論據(jù)是標(biāo)準(zhǔn)下降了。很明顯,對(duì)任何一個(gè)能編程的人(甚至是初級(jí)的)的需求都急劇上升。典型的論點(diǎn)是必須有人這樣做,所以我們降低了標(biāo)準(zhǔn)桿,只是為了藏在鍵盤后面。表面上看這是有道理的,很少有人適合攻讀四年制的數(shù)學(xué)、工程和計(jì)算機(jī)科學(xué)等學(xué)科的高級(jí)學(xué)位。
很明顯,它變成了簡(jiǎn)單的數(shù)字。對(duì)開發(fā)人員的需求高得離譜,能夠獲得計(jì)算機(jī)科學(xué)四年學(xué)位的人數(shù)相對(duì)較低,我們現(xiàn)在需要這個(gè)領(lǐng)域的程序員。不管怎樣,我們必須該滿足需求,所以我們只是降低了標(biāo)準(zhǔn)。顯然,現(xiàn)在人人都能成為“工程師”,我們盲目地希望得到最好的。表面上,真正的軟件工程正在消失,而幾乎沒(méi)有正規(guī)教育的“編碼”和“黑客”正在取代它。這是一個(gè)簡(jiǎn)單的答案,許多受過(guò)正規(guī)培訓(xùn)的工程師(包括我)都愿意相信。然而,和大多數(shù)簡(jiǎn)單的答案一樣,我們應(yīng)該在下結(jié)論之前深入研究。
真正改變的是計(jì)算機(jī)技術(shù)的成熟化、模塊化和產(chǎn)品化。我們過(guò)去要求在計(jì)算機(jī)各個(gè)方面都是訓(xùn)練有素、受過(guò)正規(guī)教育的軟件工程師,因?yàn)橐粋€(gè)企業(yè)或機(jī)構(gòu)中的計(jì)算機(jī)數(shù)量是…一臺(tái)。一臺(tái)非常大,非常復(fù)雜,非常昂貴的計(jì)算機(jī)。那時(shí)也沒(méi)有如今所謂的“互聯(lián)網(wǎng)”。在這些機(jī)器上工作的人必須是一體化的科學(xué)家、工程師和數(shù)學(xué)家。這些早期工作的嚴(yán)格程度令人難以置信,因?yàn)檫@項(xiàng)技術(shù)本身還不成熟,大部分是實(shí)驗(yàn)性的。隨著計(jì)算機(jī)技術(shù)的成熟,它變得模塊化、產(chǎn)品化和包裝化(就像任何技術(shù)一樣)。不再需要一個(gè)集數(shù)學(xué)家、工程師、程序員、網(wǎng)絡(luò)管理員和數(shù)據(jù)庫(kù)管理員于一體的人。技術(shù)變成了即插即用,他們的工作也變成了即插即用。技術(shù)角色(如技術(shù)本身)在許多受過(guò)重點(diǎn)培訓(xùn)的專家中被分解,而不是在少數(shù)受過(guò)高等教育的通才中。
找到故障了!原來(lái)是一只飛蛾。
這在所有領(lǐng)域都會(huì)發(fā)生。第一天是屬于那些具有遠(yuǎn)見(jiàn)、最具天賦和受過(guò)高等教育的人。在早期,只有受過(guò)正規(guī)教育的人才能擁有,因?yàn)槊總€(gè)人都必須對(duì)整個(gè)領(lǐng)域有充分的了解。想想汽車工業(yè)的早期(在它成為一個(gè)工業(yè)之前);只有那些對(duì)冶金和工程有著深刻理解的人才能制造、設(shè)計(jì)或修理汽車。在1900年初建造或修理一輛汽車可能需要鐵匠、冶金、制造、工程、物理和化學(xué)方面的知識(shí)和技能。在1930-40年代,汽車需求猛增,裝配線和模塊化零件出現(xiàn)。如今,生產(chǎn)汽車流水線上的普通工人對(duì)汽車的工程和冶金知識(shí)幾乎一無(wú)所知,更不用說(shuō)控制汽車所需的計(jì)算機(jī)科學(xué)了。同樣地,我們的汽車技術(shù)人員對(duì)工程、冶金(或計(jì)算機(jī)科學(xué))也幾乎一無(wú)所知。他們使用診斷設(shè)備來(lái)找出問(wèn)題所在,在線訂購(gòu)和交換零件。這些技術(shù)人員和裝配線工人受過(guò)培訓(xùn),技術(shù)嫻熟,但工作方式與機(jī)械工程師或冶金學(xué)家完全不同。這已經(jīng)在計(jì)算機(jī)科學(xué)和軟件工程領(lǐng)域發(fā)生了,也是必須發(fā)生的。
編程技術(shù)人員
正如汽車行業(yè)的例子一樣,編程行業(yè)對(duì)熟練工人的需求激增。同時(shí),計(jì)算機(jī)和軟件變得模塊化、包裝化和產(chǎn)品化。網(wǎng)絡(luò)、系統(tǒng)管理、加密、數(shù)據(jù)庫(kù)、電氣工程等與計(jì)算機(jī)科學(xué)相關(guān)的領(lǐng)域也出現(xiàn)了爆炸性的增長(zhǎng)。讓計(jì)算機(jī)領(lǐng)域的每一個(gè)人都成為訓(xùn)練有素的計(jì)算機(jī)科學(xué)家和數(shù)學(xué)家,我們根本負(fù)擔(dān)不起,就像如果每一個(gè)裝配一線工人和機(jī)械師必須要求具有機(jī)械工程碩士學(xué)位,我們永遠(yuǎn)不可能實(shí)現(xiàn)汽車制造或修理。這樣根本行不通。
電腦鍵盤背后的人越來(lái)越類似于熟練和訓(xùn)練有素的汽車技術(shù)人員(而不是正式培訓(xùn)的機(jī)械工程師)。越來(lái)越多的“程序員”或“開發(fā)人員”沒(méi)有接受過(guò)正規(guī)或廣泛的計(jì)算機(jī)科學(xué)教育。相反,這類人接受過(guò)編程技能的專門訓(xùn)練,也有一些基礎(chǔ)的計(jì)算機(jī)科學(xué)教育。如今,編程不再需要廣泛而正規(guī)的計(jì)算機(jī)科學(xué)教育,在免費(fèi)的復(fù)雜實(shí)驗(yàn)環(huán)境中進(jìn)行。今天的許多編程都需要類似于汽車技師的人,有能力識(shí)別所需零件、知道在哪里找到零件并將其正確插入。日常程序員不再需要知道如何設(shè)計(jì)和構(gòu)造排序或搜索算法,并在實(shí)現(xiàn)之前對(duì)其性能進(jìn)行數(shù)學(xué)分析。程序員只需找到排序或搜索“部分”并將其插入。
我們看到的不是軟件工程師或計(jì)算機(jī)科學(xué)家的衰落,我們看到的是程序員技術(shù)人員的崛起。
這些新技術(shù)工人是那些具有計(jì)算機(jī)科學(xué)基礎(chǔ)知識(shí)的人,但這只是因?yàn)樗c編程以及編程方面的實(shí)際培訓(xùn)直接相關(guān)。
真正的計(jì)算機(jī)科學(xué)與軟件工程:生機(jī)勃勃
計(jì)算機(jī)科學(xué)家和真正的軟件工程師并沒(méi)有被“程序員”、“開發(fā)人員”和“黑客”所取代,我們只是重新規(guī)劃職業(yè)和職位,進(jìn)入一個(gè)成熟的行業(yè)。正是由于計(jì)算機(jī)科學(xué)家、工程師和數(shù)學(xué)家的努力,編程技術(shù)人員(即現(xiàn)代的“開發(fā)人員”或“編碼人員”)才在如今得以出現(xiàn)。由于計(jì)算機(jī)科學(xué)的進(jìn)步,軟件的構(gòu)建現(xiàn)在已經(jīng)模塊化,并且大部分是預(yù)先打包和指定的,這迎來(lái)了廣泛的軟件庫(kù)、軟件包管理器、依賴關(guān)系管理器、集成開發(fā)環(huán)境、軟件即服務(wù)、基礎(chǔ)設(shè)施即服務(wù)、分布式代碼庫(kù),當(dāng)然還有因特網(wǎng)的出現(xiàn);所有這些開始于計(jì)算機(jī)科學(xué)研究實(shí)驗(yàn)室的博士和工程師。此外,像Python這樣的編程語(yǔ)言已經(jīng)把細(xì)節(jié)抽象到了某種程度,幾乎任何人都可以只用基本的計(jì)算機(jī)科學(xué)知識(shí)來(lái)做到這一點(diǎn)。
計(jì)算機(jī)科學(xué)家仍在努力建立新理論和新技術(shù)。受過(guò)正規(guī)教育的擁有計(jì)算機(jī)科學(xué)學(xué)位的軟件工程師仍在將這些理論付諸實(shí)踐。然而,隨著這些新技術(shù)逐漸滲透到一線,軟件開發(fā)中的大部分日常工作都是由程序員技術(shù)人員來(lái)完成的。
接受正規(guī)教育、獲得計(jì)算機(jī)科學(xué)的高級(jí)學(xué)位的計(jì)算機(jī)科學(xué)家、數(shù)學(xué)家和軟件工程師現(xiàn)在仍然在這里,對(duì)他們的需求比以往任何時(shí)候都高,只是在這個(gè)領(lǐng)域中占總?cè)藬?shù)的比例有點(diǎn)難以確定。正式的工程師和科學(xué)家在這個(gè)行業(yè)中占了100%,現(xiàn)在他們所占的比例越來(lái)越小,不是因?yàn)樗麄儽惶鎿Q了,而是因?yàn)槟切┦苓^(guò)正規(guī)訓(xùn)練的計(jì)算機(jī)科學(xué)家和軟件工程師創(chuàng)造了一個(gè)新的高需求工作:程序技術(shù)員。
真正的軟件工程師和計(jì)算機(jī)科學(xué)家不僅沒(méi)有衰落,并且還依然堅(jiān)守,做得比以往任何時(shí)候都好。我們應(yīng)該張開雙臂歡迎新同事,因?yàn)槲覀円鎸?duì)現(xiàn)實(shí),他們現(xiàn)在正在戰(zhàn)壕里做大部分工作。
現(xiàn)在是做選擇的時(shí)候了
由于技術(shù)的爆炸性增長(zhǎng),以及那些早期軟件工程先驅(qū)的辛勤工作,讓整整一代人都可以在過(guò)去幾乎無(wú)法進(jìn)入的領(lǐng)域擁有有利可圖的職業(yè)生涯。正如20世紀(jì)30-40年代的汽車和制造業(yè)革命導(dǎo)致中產(chǎn)階級(jí)的產(chǎn)生和生活水平的空前提高一樣,2000年的IT革命也在做同樣的事情。我們見(jiàn)證了計(jì)算機(jī)科學(xué)的民主化,這是件好事。
現(xiàn)在選擇權(quán)在于你。幾乎每個(gè)人都可以成為持續(xù)技術(shù)革命的一部分,并在技術(shù)領(lǐng)域獲得高薪的職業(yè)?,F(xiàn)在的選擇不是你是否能進(jìn)入科技行業(yè),而是你想進(jìn)入哪個(gè)行業(yè),達(dá)到什么水平,如何進(jìn)入這個(gè)行業(yè)。計(jì)算機(jī)科學(xué)博士仍然每天都在研究和提出新的理論。那些擁有數(shù)學(xué)和計(jì)算機(jī)科學(xué)高級(jí)學(xué)位的人仍在測(cè)試這些理論,并將其應(yīng)用到實(shí)際技術(shù)中。受過(guò)正規(guī)培訓(xùn)和教育的具有計(jì)算機(jī)科學(xué)學(xué)位的軟件工程師是該領(lǐng)域的軟件架構(gòu)師和領(lǐng)導(dǎo)者。編程技術(shù)人員(即現(xiàn)代的程序員、開發(fā)人員和程序員)站在第一線,將部件放置到位,組裝和維護(hù)系統(tǒng),而分析師和管理員則為其提供支持。
與早期只有受過(guò)最嚴(yán)格訓(xùn)練和高等教育的人才會(huì)想著進(jìn)入計(jì)算機(jī)領(lǐng)域不同,現(xiàn)在你可以選擇你的教育水平,通過(guò)提高你的教育水平來(lái)隨意選擇或改變你的位置。然而,要清楚的是,如果你想謀生,你仍需掌握計(jì)算機(jī)科學(xué)的一些基礎(chǔ)知識(shí),需要有豐富的技能和生活經(jīng)驗(yàn)。這并不容易。只是現(xiàn)在你可以選擇從哪里開始,走多遠(yuǎn)。
編輯:hfy
-
計(jì)算機(jī)科學(xué)
+關(guān)注
關(guān)注
1文章
144瀏覽量
11388 -
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29835 -
軟件工程師
+關(guān)注
關(guān)注
8文章
218瀏覽量
21156
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論