關於即將到來的軟體行業的降維打擊的幾點想法
前言
要問最近最火的專案是什麼?GitHub上的Screenshot-to-code-in-Keras以及pix2code當仁不讓,均已經有超過7kStar了,而且熱度還在持續,更關鍵是這兩個研究者都已經組建團隊轉向商業應用。從看到這個專案開始就讓我處於一種持久的震驚狀態,甚至看到特斯拉的無人駕駛,Deepmind的Aphla Zero都不曾讓我有如此的反映,可能是因為這時人工智慧第一次真正的觸及到自己的領域。
現狀
目前軟體開發領域最大的挑戰已非是軟體開發中的技術性問題,而是如何才能做出更讓使用者更滿意的產品,摸清使用者的需求絕非是一件容易的事情,就算是有天才的產品經理也必須通過不斷試錯和探索來尋找方向來摸清使用者真正的想法,挖掘真正的需求。
基本流程如下所示:
其中最耗時的工作就是設計與實現之間的交流和微調,而且這整個流程不是一個單向的流動過程,而是每個步驟都可能重複多次。下面這個圖可以將設計和開發之間的過程更形象的表現出來。
針對這些重複和低水平的勞動,開發人員是不是能有個人幫我們實現了,就向下面這兩幅圖顯示的那樣。
只可惜實現這個工作的並非是人類,而是人工智慧。
上面這兩幅圖出現在Screenshot-to-code-in-Keras專案中,描述了專案的核心應用場景和目標,即利用現有的成熟的人工智慧的基礎設施直接將設計圖轉化為前端程式碼。目前已知的全部資料都起源於 Tony Beltramelli的論文,感覺就像在介紹天網的出現一樣。
他們絕不是唯一的研究者,實際上技術門檻並不高,其他廣大研究者也已經跟上,比如阿里的魯班系統。在目前的人工智慧領域演算法並不是核心i技術,更核心的是資料和想法。
當然技術處於初期階段:
降維打擊的到來
初見端倪
各位前端開發人員實現下面這個設計頁面需要多長時間,
我相信絕大多數的人類不可能在10分鐘內完成,但我要說的是目前開源專案中已經能把這個實現時間縮短到1分鐘之內。
基本原理
通過神經網路的來將設計稿直接轉為前端程式碼的基本思路如下圖所示。
關於具體的理論可以看下面這個圖,總的來說就是利用CNN來進行影象的編碼,再利用LSTM進行學習,細節請見該論文。
總之一句話演算法沒什麼特別的,
現在限制你成功的只有你的想象力。
只要你有好的idea你也可以在這個時代掀起沖天巨浪,至於能不能乘風破浪那就看道行了。
趨勢分析
降維打擊絕不僅僅侷限在前端,而是一種從內到外,從高到低的全方位立體打擊,不要以為自己是資深開發就不處於打擊範圍內。
近期
在近期內,人工智慧的引入將給程式設計師(開發人員)帶來巨大的變革,引起第一次開發者的分化,將低水平或太過專業的人淘汰,然後剩下的人在與人工智慧的合作中大幅提高生產力,績效水平大幅提升,整個行業的能效比將大幅提升。一句話:開發者開始分化,淘汰一部分,剩下的人生活更美好
未來
實際上我認為現在的模式並不正確,因為讓人工智慧來將設計稿自動生成前端程式碼,實在是有點強人所難了,就像是讓一臺高速跑車在泥濘的沼澤跑一樣,這樣人類還能跟它有的一比。
但實際上更簡單和有效的模式是直接輸入需求由人工智慧直接產出可工作的產品,而人類是看不懂或無法理解產品內部的,這次引起的替換幾乎是全部開發者,絕對黑盒式應用,除了少數精英能夠留下,留下的人則是面向更高階的開發和應用。
目前這樣的模式還有兩個挑戰:
1.如何描述需求,僅僅是設計圖已經搞不定這個問題了。
2.足夠的訓練,動輒數千萬的訓練樣本對於今天軟體行業還是有點吃不消。
我們該怎麼辦
對於開發者
對於開發者,我認為有幾點需要注意:
1.避免太過專業,提高涉獵的廣度,找到結合點。目前來看人工智慧對於多領域的整合是個弱項,目前人工智慧距離強人工智慧還有相當的距離。
2.儘早瞭解人工智慧,只有瞭解它才能更好的與它合作,才有機會利用它提升自身的價值。
3.貼近使用者,貼近需求,更理想的不是與人工智慧競爭而是給它目標。
知道做什麼真的比知道怎麼做要重要
對於組織
對於組織與開發人員是不同的:
1.瞭解行業現狀
2.深入理解需求
3.儘早接觸和應用人工智慧。