機器學習變得越來越容易,軟件工程仍舊很難_風聞
大数据文摘-大数据文摘官方账号-2020-06-21 17:49
大數據文摘出品
來源:medium
編譯:白浩然
在過去的五年中,機器學習變得更加容易而軟件工程比以往更加複雜。對於軟件工程師來説,這是好事,但對機器學習專家卻不是。這是機器學習向軟件工程,數據科學向數據分析的發展過程。
機器學習工具正變得越來越友好
Google希望使每個人都可以輕鬆地訓練機器學習模型,無論他們的技術知識如何。隨着機器學習的發展,雲服務的市場也在增長,理解算法的意義也在下降。
曾幾何時,我們手敲一行一行算法代碼。而如今,Sklearn讓我們用幾行代碼實現相同的結果。原來的TensorFlow很不友好,是Keras讓它變得容易使用。
Google,Microsoft和Amazon現在都提供,可以在雲端上選擇訓練和調參的服務,然後馬上就能提供相關模型的API。
讓任何人都可以訓練AI還需要一段時間。但隨着複雜性的降低,它成為了經驗豐富的軟件工程師的另一種工具而已。
機器學習的發展只和幾種編程語言相關
你會用COBOL嗎?如果是,那麼你就可以不愁沒工作了。世界的金融體系建立在它之上,而如今沒人在學COBOL編程。
大多數機器學習項目都是用Python實現的,而軟件開發則分佈在多種編程語言中。
如果每個機器學習工程師都有Python的經驗,那麼每個機器學習工程師都是你的競爭對手。而在軟件工程方面,你只和使用相同語言的人競爭。
我總是驚訝地看到很多高薪的Ruby on Rails框架相關的工作。雖然它在幾年前就已經過時了,但是許多大型公司(Shopify,Instacart,Kickstarter等)由於續航與工程量原因依然還在用它。
你應該,也有能力去學習多種編程語言,這是成為一個優秀軟件工程師的關鍵。
軟件工程包含更多技能
我們期望軟件工程師對一切都至少知道一點。
後端工程師仍然需要知道瀏覽器的工作方式。前端工程師也瞭解一些數據庫概念。兩者都可以防止SQL注入之類的安全漏洞。
對軟件有全面的瞭解,可以讓你更輕鬆地更改專業方向。它還使你具備構建端到端解決方案的能力。
廣泛的技能包使軟件工程師更適合豐富的環境。隨着需求的增長,軟件工程師通常會轉向數據科學。相反,數據科學家開發軟件的可能性較小。
隨着人們開始將機器學習看作是手敲底層代碼的替代方案,我們將看到更多從事機器學習的軟件工程師。
成為有競爭力的全棧開發人員需要很多年
除了使用已知的語言,也包括用了許多之間沒有重合的技能。
從優化數據庫,構建API微服務和構建響應前端的字面上看,基本沒有共同點。它們可能用3種不同的編程語言實現。而且在這些領域,我們幾乎看不到任何自動化的過程。
與此形成鮮明對比的是,全棧機器學習工程師現在正在完成功能越來越強大的AutoML,用了它之後,就可以寫一個SOP(Standard Operating Procedure,標準作業程序),然後將訓練分類器的工作委託給實習生。
而軟件工程技能包中的所有組件都因自動化而不復存在還需要一段時間。
機器學習是產品的補充而不是產品(通常)
少數公司將人工智能作為其核心產品,而大多數公司使用人工智能來補充現有產品的缺失。
Medium網站可以使用機器學習來實現文章推薦功能,但是核心產品是寫作/發佈平台。
有趣的是,大多數公司都將機器學習用於簡單重複的任務。這使某個公司可以輕鬆地將上述用例作為SaaS產品提供。然後,初創公司就不再需要重新構建了。
而與基礎架構相關的問題往往復雜又有許多自定義任務。比如AWS上沒有任何現成的解決方案會很快搭建Medium網站的基礎架構。
基礎架構變得異常複雜
AWS已擴展到200多種不同的雲服務中。
Heroku在雲端中運行應用程序的PaaS方法很棒。但是在任何大規模項目上都變得過分昂貴。
因此,現在我們有了一個全新的雲端棧來管理(網絡,數據庫,服務器),其中一不小心會造成巨大的安全漏洞。
有一個稱為“雲工程”的開發子集,其目的是使軟件在AWS,GCP或Azure上運行。
在較小的公司中,基礎架構通常是高級開發人員的職責。
這是複雜的內容,同時也意味着****工作機會和難以替代的技能包。
前端開發在不斷發展當中
成為一名頂尖的前端開發工程師是一項技能。
當我開始開發時,使用jQuery構建響應式前端是完全OK的。然後公司換成了Angular或React。然後Angular變成了Angular2(具有重大改進)。React從類轉移到功能組件,並添加了hooks。
以上所有框架/庫都以根本不同的方式工作。
有幾家公司致力於基於mockups的前端自動生成。但我的同事們的共識是,他們離高質量產出還有很長的路要走。
前端開發方面的技術能力,加上對完美像素的感知,目前依然令人驚訝。
結語
軟件開發是一個複雜且包含廣泛問題的領域。這個複雜度對僱傭員工有好處。
但更重要的是,廣泛的技能包賦予了端到端解決實際問題的能力。
對於建立一個讓普通人有能力解決自己技術棧中問題的開發社區,軟件工程是一個很好的起點。
那機器學習有一席之地嗎?當然。但解決問題比訓練模型更有意義。
學習軟件工程,完成開發,解決問題。
相關報道:
https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Ftowardsdatascience.com%2Fmachine-learning-is-getting-easier-software-engineering-is-still-hard-d4e8320bc046