歡迎光臨
每天分享高質量文章

專訪微軟亞洲研究院首席研發經理鄒欣: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 大會的每一個與會者都應該想一下,我個人要培養什麼根本的技能,我的團隊現在要掌握什麼核心技術?在將來能輸出什麼獨特的價值?

以上內容來自鄒欣的分享,也預祝他在GIAC現場有精彩的表現!

此外,為了幫助更多IT從業者梳理軟體工程的知識點和技能鄒欣講師出版了《構建之法——現代軟體工程(第三版)》新書,他將於6月23日演講結束後(16:50),在GIAC現場舉辦新書簽售會的活動。 

構建之法——現代軟體工程(第三版) 內容提要:

軟體工程牽涉的範圍很廣,同時也是一般院校的同學反映比較空洞乏味的課程。 但是軟體工程的技術對於投身IT產業的學生來說是非常重要的。鄒欣擁有長達20年的一線軟體開發經驗,他利用業餘時間在數所高校進行了長達6年的軟體工程教學實踐,總結出了在16周的時間內讓同學們透過 “做中學 (Learning By Doing)” 掌握實用的軟體工程技術的教學計劃,並得到高校師生的積極反饋。

已同步到看一看
贊(0)

分享創造快樂