步才捷
過去的5年里,機(jī)器學(xué)習(xí)變得越來越容易,機(jī)器學(xué)習(xí)工具也正在變得愈加平民化。而與此同時,軟件工程卻比以往更復(fù)雜了。然而,這對于軟件工程師來說是件好事,但對于機(jī)器學(xué)習(xí)(ML)專家來說則不然。
原因何在?事實上,這是機(jī)器學(xué)習(xí)到軟件工程,數(shù)據(jù)科學(xué)到數(shù)據(jù)分析發(fā)展的進(jìn)程。
機(jī)器學(xué)習(xí)工具正愈加平民化
谷歌希望每個人都能接觸到機(jī)器學(xué)習(xí)模型的訓(xùn)練,不論他們的技術(shù)知識如何,隨著機(jī)器學(xué)習(xí)大眾化,云服務(wù)的市場逐漸增長,理解算法的價值則逐漸下降。
很久以前,我們手動編碼算法,后來,Sklearn可以在幾行代碼中完成同樣的操作。原始的TensorFlow很難使用,Keras使其變得容易。如今,谷歌、微軟和亞馬遜都提供用以選擇、訓(xùn)練和調(diào)整云中模型,然后立即在API后提供模型的服務(wù)。
可能在不久的將來,人人都可以訓(xùn)練人工智能。但是隨著復(fù)雜性的降低,對于經(jīng)驗豐富的軟件工程師來說,它只是信手拈來的另一個工具而已。
機(jī)器學(xué)習(xí)發(fā)展集在語言上
語言的重要性不必多說。你知道COBOL嗎?如果知道,便能獲得一份終身工作。世界金融體系依賴于此。然而如今沒有人再學(xué)習(xí)COBOL了,大多數(shù)機(jī)器學(xué)習(xí)是通過Python來實現(xiàn),而軟件開發(fā)則是通過多種語言實現(xiàn)的。
如果每位機(jī)器學(xué)習(xí)工程師都具備使用Python的經(jīng)驗,那么你的競爭對手就是每一位機(jī)器學(xué)習(xí)工程師。但從軟件的角度來說,你只會和使用相同技術(shù)的部分工程師競爭。
我們總是能看到許多高薪的軟件工程師職位,這令人很驚訝,這個職位早在幾年前就過時了,但由于歷史遺留問題,許多大公司,如Shopify,Instacart,Kickstarter等仍在使用它。
軟件工程師需要更多技能
你確實可以并且應(yīng)該學(xué)習(xí)多種語言,這對于能否成為一名優(yōu)秀的軟件工程師來說至關(guān)重要。我們總是期待軟件工程師對每個方面都至少有一些了解。
后端工程師知道瀏覽器的工作原理,前端工程師也具備一些數(shù)據(jù)庫的概念。二者都能防止如SQL注入這樣的安全漏洞。對軟件有一個整體理解能使改換專業(yè)變得更容易,還能幫助構(gòu)建端到端解決方案。
廣泛的技能組合使軟件工程師能更好地適應(yīng)模棱兩可的環(huán)境。隨著需求的增長,軟件工程師經(jīng)常轉(zhuǎn)行到數(shù)據(jù)科學(xué)領(lǐng)域。但反過來,數(shù)據(jù)科學(xué)家則不太可能去開發(fā)軟件。隨著人們開始將機(jī)器學(xué)習(xí)看作硬編碼條件邏輯的替代品,更多軟件工程師去涉足機(jī)器學(xué)習(xí)領(lǐng)域。
成為有競爭力的全棧開發(fā)者需要數(shù)年時間
實際上,優(yōu)化數(shù)據(jù)庫、構(gòu)建API微服務(wù)以及構(gòu)建響應(yīng)式前端,這三者之間并沒有什么共同點。他們可能是由3種不同的語言實現(xiàn)的,這些領(lǐng)域里幾乎沒有自動化。
與此相比,全棧機(jī)器學(xué)習(xí)工程師正在實現(xiàn)愈加強(qiáng)大的自動機(jī)器學(xué)習(xí)技術(shù)(AutoML),可以為此編寫一個標(biāo)準(zhǔn)操作程序,并將訓(xùn)練分類器的任務(wù)交給實習(xí)生。軟件工程技能組各個部分的自動化淘汰還需時日。
通常機(jī)器學(xué)習(xí)是產(chǎn)品的補(bǔ)充而非產(chǎn)品本身
少數(shù)公司將人工智能作為其核心產(chǎn)品,而大多數(shù)公司將人工智能作為既有產(chǎn)品的補(bǔ)充。媒體可能會使用機(jī)器學(xué)習(xí)進(jìn)行文章推薦,但其核心產(chǎn)品是寫作或是出版平臺。
有趣的是,大多數(shù)公司將機(jī)器學(xué)習(xí)用于簡單和相似的用例。這使得單個公司很容易將上述用例作為軟件即服務(wù)產(chǎn)品。再然后,突然之間初創(chuàng)企業(yè)不需要在內(nèi)部構(gòu)建了。
這與極度復(fù)雜且定制化的基礎(chǔ)設(shè)施問題形成對比,亞馬遜網(wǎng)絡(luò)服務(wù)上沒有能在短時間內(nèi)處理Medium基礎(chǔ)設(shè)施的現(xiàn)成方案。
基礎(chǔ)設(shè)施正變得異常復(fù)雜
亞馬遜云服務(wù)已經(jīng)拓展出200多種不同的云服務(wù)。Heroku在云中運行應(yīng)用程序的平臺即服務(wù)(PaaS)方法很不錯,但很昂貴?,F(xiàn)在有一個全新的云服務(wù)平臺來進(jìn)行管理網(wǎng)絡(luò)、數(shù)據(jù)庫和服務(wù)器,在這里,一個小失誤就可能會引發(fā)很大的安全隱患。
有一個名為“云工程”的完整開發(fā)子集,其任務(wù)是使軟件在AWS、GCP、Azure上運行。在小公司中,建設(shè)基礎(chǔ)設(shè)施的任務(wù)通常落在高級開發(fā)人員的肩上。這個任務(wù)很復(fù)雜,但同時也意味著寶貴的工作機(jī)會和難以復(fù)制的技能。
前端開發(fā)正在持續(xù)發(fā)展
一些公司致力于基于模型自動生成前端。但筆者的同事們一致認(rèn)為,我們距離高質(zhì)量產(chǎn)品還有很長一段路要走。
軟件開發(fā)十分復(fù)雜,但這種復(fù)雜性意味著不可替代的技能,這非常有利于就業(yè)。廣泛的技能組合賦予了人們端到端解決實際問題的能力。為了構(gòu)建一個能使普通人自行解決問題的社區(qū),軟件工程是一個不錯的開端。
機(jī)器學(xué)習(xí)該何去何從呢?它仍然擁有一席之地,但顯然,解決問題比訓(xùn)練模型更為重要。