首頁 行業資訊正文

AI 人工智能時代程序員將往哪走?

導讀:6月21-23日,2019 GIAC全球互聯網架構大會將于深圳舉行。GIAC是面向架構師、技術負責人及高端技術從業人員的年度技術架構大會,是中國地區規模最大的技術會議之一。今年GIAC邀請到了衆多布道師、明星講師以及105位來自Google、微軟、Oracle、eBay、百度、阿裏、騰訊、商湯、圖森、字節跳動、新浪、美團點評等公司專家出席。

在大會前夕,高可用架構采訪了本屆 GIAC軟件工程分論壇 出品人鄒欣,就目前大家廣泛關注的軟件技術方面的問題進行了訪談。

鄒欣,現任微軟亞洲研究院首席研發總監,參與AI 平台的研發和推廣工作。從1996 開始,他在微軟Outlook,Visual Studio、Bing、Windows 團隊從事研發工作。 他在亞洲研究院從事過多年的技術創新項目,推出了FaceSDK 和學術搜索等創新産品。 他于2007年出版了《移山之道》,于2008年出版了《編程之美》 (合作)。2014年出版了《構建之法 – 現代軟件工程》, 已經成爲40多所大學的軟件工程教科書。

鄒欣:我現在在微軟亞洲研究院工作,和同事們做一些AI 平台的研發,同時做一些和AI教育相關的工作。在這之前,我在Office、Visual Studio、Bing、Windows 等團隊都工作過。

GIAC組委會 :您先後出版了《移山之道》、《編程之美》、《構建之法》等多本計算機暢銷書籍,尤其是《構建之法》,被 40 多所高校當作教科書,可以說業內很多人都受益匪淺,能否跟我們聊聊您寫書的初心是什麽?關于寫技術類書籍,您有什麽樣的心得體會分享給其他的作者?

鄒欣:當時就是覺得自己有一些經驗可以分享,就開始寫博客,然後花了很多時間整理出版了第一本書《移山之道》,一些人告訴我說這個書名聽上去像是一本哲學書,可能因此賣得很不好。但是有了第一本書的經驗之後,在編輯的幫助下,我和一些實習生一起寫《編程之美》,就容易多了。 第三本書《構建之法》是我在一些學校講軟件工程課,培訓,和我自己軟件工程經驗的總結,每年我都發現有一些新的體會和資料,于是就不斷更新出版,現在已經是第三版了。

寫書的大部分時間是處于“半杯水”狀態,你積累了一些書稿,悲觀地看,覺得書還有一半沒寫,已寫的內容也有很多要改進的,不知道哪一天才能完成; 樂觀地看, 書已經寫了一半, 再加把勁,馬上就可以寫完了(哈哈)。 我覺得首先要自己享受這個過程,其次要有持續努力,既然不是天才,就把自己當作一匹樂觀的驽馬,驽馬十駕,功在不舍。

GIAC組委會 :提到軟件工程,很多年輕人可能覺得是一種束縛,沒有那種極客式的自由,對此您怎麽看?能否給大家分享一些軟件工程的成功案例?

鄒欣:可以用跑步打一個比方,例如大家跑一百米,很多人沒什麽准備就全力跑,途中不太講究姿勢和動作,就是放飛自我,最多二十秒就過去了,成績好壞也無妨。如果你是跑馬拉松,那你是不能隨便跑的, 要講計劃,要學會跑前熱身,跑後拉伸,要講究心率,核心能力,姿勢,等等。這些都是你隨意跑一百米的時候不要考慮的,從某種意義上看,也是一種束縛,但是沒有這些束縛,就跑不了馬拉松。

例如,你很少鍛煉,但今天晚飯後,突然記起來你明天要跑一個半馬,你現在要做什麽樣的准備,才能跑完全程呢? 可能做什麽都不行了,軟件工程的項目管理能避免這樣的事情發生。

自由往往是來自于自律,和持續不斷地改進。 我對 “極客式的自由”具體了解不多, 我就好奇,沒有自律,沒有長時間的刻意練習,能有極客的自由麽?

GIAC組委會:從門戶時代到移動互聯網時代再到AI 時代,您覺得軟件工程都經曆了哪些重大的改變?

鄒欣:軟件工程的工具在過去的二十年中發生了很大的變化,軟件工程的流程也有很多新的嘗試(例如敏捷思潮),軟件工程的核心倒是沒有太大變化, 還是那句話,沒有銀彈。

我們用UML 做一個例子, 像任何新技術一樣,以UML爲代表的圖形化分析方法的確解決了不少實際問題,但是也引發了一些誤解、誤用、狂熱和“銀彈”的信仰。UML的設計者和推動者之一Grady Booch說到: 在UML 出現之前和之後,軟件項目成功的關鍵依然是 – 智慧地使用技術、遵從一個好的軟件開發過程、有經驗的開發者、和適當的技能組合。

這就是說,不管任何新技術如何宣稱自己能解決大問題, 軟件項目成功的關鍵依然是上面提到的四個要素。那麽,我們怎麽能更有效率地提高我們在那四個要素的修爲呢? 這就是每個團隊領導要考慮的問題。 搞定了這些因素,其他次要因素也就能解決了, 例如, 你找到了有經驗的開發者,和良好的軟件開發過程, 那麽他們自然會找到合適的持續集成和發布的工具 (CI/CD),而不用老板親自去關心這些細節問題。

GIAC組委會:聽說您最近在研究AI?能否簡單跟大家分享一下您學習AI的心得和成果?我們都知道,AI是有門檻的,而且在很多人的認知中,換方向是一個特別困難的事情,您是如何做到的?您覺得從事AI應該具備哪些知識、技能和素質呢?

鄒欣:的確,學習 AI 是有門檻的,但也是有規律的。而且學習AI 並不是自古華山一條路, 有人可以從數學角度出發學習, 有的人喜歡從代碼的角度學習,我和團隊的小夥伴在學習AI 的過程中,摸索了一套從代碼開始,在實踐中體會各種深度學習的概念和算法的學習路徑,我覺得這對于程序員來說是挺適合的一種學習方法 --- 如果我能看懂核心的深度學習模塊的代碼, 或者這個代碼就是我自己寫出來的, 那我就可以了解它是如何工作的了。

我們正在把這個學習途徑總結在我們的 GitHub 項目中,大家有興趣可以去看看(https://github.com/microsoft/ai-edu/tree/master/B-教學案例與實踐/B6-神經網絡基本原理簡明教程/)。

當然,AI 的領域非常廣泛, 應用也很多,沒有一種技能組合適用于所有人和所有情況。我覺得要從結果出發,你想解決什麽樣的痛點? 達到什麽樣的效果?你目前能做到的和你想要達到的差距有哪些?分析之後,開始彌補差距就好。

GIAC組委會:很多人認爲AI會根本性地顛覆我們開發軟件的方式,那它到底是增量的改進,還是真正的顛覆?

鄒欣:人工智能是不是會顛覆軟件開發的方式?我認爲並不會。要推出一個好的人工智能模型也需要版本控制,需要工程師去合並、分支、比較這些版本。我們認爲人工智能會成爲軟件開發的一部分,研究人工智能模型的數據科學家最終會融入軟件開發過程中,和工程師、人機交互設計師和項目經理一起合作,做快速叠代、持續集成、持續發布的模型。而且,AI 技術本身也在快速發展過程中,只要是能通過大量訓練找到規律的事情, 它都會做得越來越好,它還能顛覆AI 技術本身。例如,人工智能行業中的數據清洗、建模調優都可以由人工智能自我來完成。 回到基本的編程, 我們知道在CSDN,GitHub,Stack Overflow 以及MSDN 上面有海量的關于編程的問答, 有很多源代碼,注釋,等等信息,這些信息能用于訓練 AI,最後 AI 能自己從網上找到源程序, 自己編程麽? 這些想起來很奇妙, 其實, 一個普通的程序員一天大部分時間都是在 “通過搜索引擎來攢代碼”, 他也是東找西找來拼湊自己的程序, 那麽,讓一個 AI 來做類似的事情,是不是也順理成章呢? 如果程序員的低技術含量的 “攢代碼” 工作被工具取代, 那麽他的獨特價值在哪裏呢,這的確值得程序員思考。

GIAC組委會:這麽說,有了強大的 AI, 程序員的生存空間就會減少麽?

鄒欣:這未必, 軟件開發仍然是有很多事情要做的。AI 時代的軟件開發,除了繼續要了解用戶需求之外, 還要處理好算法,算力和數據。 例如公司買了10塊 GPU 卡,怎麽讓30 人的團隊能有效率地使用這些資源? 那就需要一個分布式管理系統來管理。 微軟亞洲研究院最近開源了這樣的一套系統 OpenPAI (https://github.com/Microsoft/pai), 大家可以去試用一下。 如果我要做很多AI模型調參數的工作,怎麽辦? 可以參考微軟 NNI (https://github.com/Microsoft/nni)工具以及其他類似的工具。

GIAC組委會:您在《構建之法》中提到了軟件工程師的成長。從您的經曆看,一直都在穩步成長。您個人覺得哪段經曆對您個人成長幫助最大呢?爲什麽?能否結合自己的成長經曆,給初入職場的人總結一下您認爲最重要的一點建議?對于想快速提高自我的人,有沒有您覺得幫助很大的書單推薦一下?

鄒欣:哪一段的經曆都是有幫助的,當然,在年輕時通過鍛煉積累的經驗, 在以後的工作中可以不斷地提供複利,這是最好的。在年輕的時候要做一些有難度,有挑戰的項目。 我也在高校教《軟件工程》課, 看到學生的各種心態,有時候想勸勸一些學生,但是大學生往往聽不進別人的勸說。 其實,大家上大學的時候,那些給你放水的老師,其實是害了你。

哈哈,書單,這是一個常見的問題,我經常在網上看到很多書單,然後下面有很多評論,說“收藏了”, “以後會看”等等。 我懷疑很多人事後都忘了看,然後繼續在其他類似的書單下面會發表類似的評語。

我也有一個和軟件工程、創新相關的書單,一共有 70 多本書,感興趣的人可以搜索一下。但是,軟件開發不是報書名,背菜譜,而是實幹。我覺得最好的學習方法,就是進入這個領域,做一些力所能及的事情,然後再把經驗分享給別人,或者教育初學者,如果你能做到這一步,那麽你的確是學會了。

GIAC組委會:GIAC 的軟件工程專場,邀請到了您、孤盡、鄭晔、範飛龍等衆多業內大咖,作爲專題的出品人,在議題甄選方面,您是如何考慮的?

鄒欣:首先要感謝各位演講人花時間整理和分享自己的獨到心得,而且這些心得是來自第一線的親身體會,不是道聽途說的心靈雞湯。 內容的安排,大致是從個人到團隊,從微觀到宏觀,從當前的熱點到曆史經驗,希望聽衆能有所收獲。具體來說:

鄭晔:從個人的角度,如何提高工程師的工作效率,和自我的管理。

範飛龍:軟件開發日常工作,很多時間都花在各種小事情上了, 如何處理軟件開發過程中那些碎片化的問題?逐漸提高流程的效率。

孤盡:很多小問題拖著不解決,就會成爲大問題,這時候要考慮重構,那麽,怎麽決定是否重構,如何有效地重構。

鄒欣:從曆史的角度,一個軟件公司在 40 年的時間裏能幾次站在技術的浪潮之巅,它的軟件工程實踐是怎麽演化的,這些經驗教訓對于小型團隊有幫助麽。

GIAC組委會 :最後,您對GIAC大會有什麽樣的寄語?

鄒欣:首先,是培訓的價值,很多人覺得公司都很忙,沒時間搞什麽培訓。英特爾公司的創始人,安迪葛洛夫曾經提到了培訓價值的算式:

假設公司花了12小時的時間備課並給10個員工培訓 4小時。總共花費12 + 10*4 = 52 小時。在培訓後的一年中,這10個員工會有20,000 個小時的工作時間,如果培訓能提高1% 的效率,那麽公司將會節約200 小時。(附加題:如果是996 的工作方式,能節約多少時間?)

大家可以把這個算式分享給各自的領導。

另外,最近IT界的熱點新聞不斷,很多同行在討論熱點的時候注意到了,很多領域表面上的泡沫可能很絢麗多彩,可以吸引很多目光,但是核心問題仍然是:我們掌握了這個領域的核心技術麽?對生態系統貢獻了獨特的價值麽?如果沒有,那麽說一千道一萬,到了關鍵時刻還是受制于人。GIAC 大會的每一個與會者都應該想一下,我個人要培養什麽根本的技能,我的團隊現在要掌握什麽核心技術?在將來能輸出什麽獨特的價值?

分享
版權聲明

本文僅代表作者觀點,不代表本站立場。
本文系作者授權發表,未經許可,不得轉載。

評論