精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
微軟亞太研發集團高性能計算首席架構師徐明強訪談:我的成長啟示錄

記者 / 陳秋歌

徐明強博士

微軟亞太研發集團服務器與開發工具事業部高性能計算首席架構師徐明強博士,長期從事高性能計算(HPC)系統和編程軟件的研發工作,并熱衷于高性能計算的普及事業。2004年微軟提出“讓每個科學家都有一臺高性能計算機”的口號,徐明強對此產生了強烈共鳴,并于2004年加入微軟,投入到高性能計算的普及浪潮中。同時徐明強也是微軟在中國為數不多的架構師之一,相信他的架構師之路,可以給那些正在努力成為架構師的人一些啟示?!冻绦騿T》雜志近日專訪了徐明強,請他與我們分享他不尋常的人生之路、架構師之路。

記者:能簡單談談您的童年經歷嗎?童年哪些事、哪些人對您的影響最大?

徐明強:我是一名60后,出生在西安。父母都是西安交大老師,為了把我留在他們身邊,從幼兒園到西安交大畢業,我從沒有離開過西安。在我的成長過程中,父母一直陪伴在我左右,他們對我兒時的啟蒙教育為我以后的事業發展奠定了堅實的基礎。

父親熱衷于無線電,從小喜歡自學,所以在我很小的時候他就有意識地培養我自己解決問題的能力。每當我遇到難題時,他不會直接幫我解決,而是讓我獨立去解決問題。記得小時候曾做過一個單晶體管收音機,當時以為按照線路圖組裝后就大功告成了,但組裝完成后才知道,天線的設計也是不可缺少的步驟,只有長短合適的天線才能保證收聽到好音質的廣播。諸如此類的小事,都在潛移默化地影響著我的思考方法,同時也給了我很多啟示。就拿設計單晶體管收音機來說吧,將它與編程過程進行類比,可以看出很多相似之處。對于編程,不是只把編程模式設計好就完事了,雖然它至關重要,但僅僅是工作的一步。系統的可維護性、糾錯性、容錯性在編程模式設計完后就要重點進行考慮和設計了。

對我兒時成長影響比較大的另一件事就是古典音樂。上中學時,我特別喜歡聽古典音樂,尤其是貝多芬的音樂。他不向命運低頭、不服輸的氣質為他的音樂注入了一種不可抗拒的力量。我被這種力量深深感染,為他那與命運抗爭的精神而感動。在他音樂的感召下,我逐漸形成了不向困難低頭、樂觀的處世態度?,F在每當遇到有挑戰的難題時,我都會把它當作一種機遇、一種樂趣,用積極的心態去面對它、解決它。古典音樂也是我兒時學習的動力之源。我上中學時還是80年代,當時聽音樂只能用錄音帶,要錄制比較長的交響樂只能用很貴的進口錄音帶,為了向父母要錢買進口錄音帶,我首先要保證把功課做好??梢哉f對古典音樂的癡迷一直在促進我的學習。

記者:考入西安交大后,您才開始接觸計算機嗎?當時感覺如何?對大學生活有什么感觸?

徐明強:1982年我考上了西安交大,讀的是計算機軟件專業。也是從那時起我才開始接觸計算機,接觸編程。

記得報考大學專業時,父親希望我能學習最前沿的技術,他問了一些西安交大的老師,了解到當時最前沿的技術是計算機軟件開發。于是就幫我報考了計算機軟件專業。報考時,我還不知道計算機軟件是什么。后來讀大學的哥哥告訴我計算機軟件就是編程,這是我第一次對計算機軟件有了一個初步認識,當時感覺蠻不錯的。

等到了大學,隨著對計算機軟件學習的深入,我越發覺得軟件開發真的是件很棒的事。軟件開發可以實現你能想象到的任何事情,可以說只有你想不到的,沒有它實現不了的,這是軟件開發的魅力所在,也正是它的這種獨特魅力深深吸引了我。

回想起大學四年,前兩年的收獲還是蠻多的,學習了計算機軟件的基礎課,為我以后的學習和研究提供了充實的營養成分。大學后兩年開始學習更深層的涉及軟件底層的一些理論知識,像計算機體系結構等課程,這些課程很抽象且不好理解。當時國內軟件還很不發達,大學師資力量也比較薄弱,專門從事計算機軟件科研的教師很少,而且大多是從數學系轉過來的,本身沒有深厚的軟件研發功底。他們也只是照本宣科,羅列一些抽象的概念,對他們講的知識,我總結不出任何規律。在思維方式上我屬于抽象歸納型,記憶力不是很好,若對接觸的事物找不到任何規律,我是很難記住它們的。所以在大學的后兩年,我的收獲并不多,對很多知識也是一知半解,很多東西也是出國后才搞清楚。

在大學的學習過程中,我的編程實踐也在逐漸深入。其中編程最多、做得最大的系統是在畢業設計時,與帶我的老師協作開發的一個系統。這個系統由編譯系統和可視化系統組成,其中編譯系統是對COBOL語言進行編譯,由帶我的老師來做;把編譯系統生成的中間代碼進行可視化的可視化系統由我來負責。當時除了畫圖部分由C語言實現外,大部分用Pascal語言來實現。在設計可視化系統時,我設計了作業調度器解決了COBOL語言分支跳轉的問題,同時用遞歸加棧的方法對算法進行了優化。后來這個系統的畢業論文還獲獎了。也是因為這次畢業設計,讓我對算法產生了濃厚的興趣。

記者:大學畢業后,您就直接出國留學了。出國留學后,您的經歷如何?都遇到了哪些挑戰?獲得了哪些成就?

徐明強:1986年我大學畢業,年底正好趕上第一批中英友好獎學金,我通過英語考試選拔后,就去英國??巳卮髮W(University of Exeter)留學了。

去英國留學我直接讀的是博士。當時英國讀博的要求沒美國那么嚴格(美國要求只有讀研究生后才有資格讀博),所以我可以跨越研究生課程,直接讀博士。由于本科后兩年沒扎實學到實質性的東西,再加上缺乏研究經驗,所以剛學習博士課程時,面臨著很多挑戰,而其中最大的挑戰就是要用英語理解所有課程。面對課本上眾多不認識甚至都沒見過的詞匯,我不得不從頭開始逐詞學習,同時研究生課程的空白對我來說無疑也是一個很大的坎兒。當時我選的研究課題是并行計算,對我來說,這完全是一個陌生的領域,在國內從沒接觸過。帶我的導師又是一位對我比較放手的導師,讓我一個人安排學習計劃及科研方向。當時我完全處于一種被動、迷茫的境地。

面對種種挑戰,我靜下心來花了18個月的時間,進行了大量閱讀和編程實驗,填補了研究生課程的空缺,同時還確定了博士學位的主攻課題。主攻課題的確定是我博士學業中的一個轉折點,只有確定了課題,才能研究如何解決這個問題。后來我用了大概一年半到兩年的時間來解決這個課題。

我現在熱衷于普及高性能計算機,也是從那時開始的。當時并行計算是一個新領域,而搞并行計算,算法最關鍵,而研究算法需要高性能的機器才能測出算法的提速效益。當時我們用于科研的實驗室里只有四個節點且都是單晶機,而這樣的硬件條件是無法進行算法研究的。無奈之下,我放棄了算法研究,轉去搞模擬和協議。這件事對我的觸動很大。當時我就想,像我們這些專門搞并行計算的人都無法擁有實驗所需的高性能計算機,而那些搞科學的科研人員又要等到什么時候呢?2004年初,微軟提出了“讓每個科學家都有一臺高性能計算機”的口號,我對此產生了很強的共鳴,當時就下定決心也要為高性能計算機的普及助推一把。

時至今日,在高性能計算機領域,有5500萬人還無法使用高性能計算機。無法使用,并不是受限于高性能計算機的價格,而是復雜的技術導致。使用高性能計算機不僅要懂系統管理,還要懂網絡管理,這對于一般科研人員來說是件很困難的事。要想普及高性能計算機,就要從技術、服務上下手,讓高性能計算機的使用變得簡單化、服務一體化。我個人認為唯有微軟有這方面的基因,可以把復雜的東西變簡單,把只有少數人專有的技術簡單化并普及給大眾。

1991年博士畢業后,我去曼徹斯特大學做了兩年的助理研究員,同樣做并行計算研究。其實這兩年的收獲并不多,最大的收獲便是學會了優雅系統和實用、高效系統的選擇和取舍。

那時業界存在分布式編程模式和共享內存編程模式兩大陣營。當時曼徹斯特大學買了一臺虛擬內存機器KSR,它屬于操作系統級,解決了Cache Coherence一致性的問題,同時可以在多機上提供共享的虛擬內存,它的編程模式非常優雅。我也是被它優雅的編程模式吸引并開始鉆研。后來發現虛擬內存技術性能差,因為它只針對應用和管理,對應用所使用的內存情況一點也不了解,所以它的性能是沒辦法提高的。而當時采用分布式編程模式的MPI則不一樣,它靠應用開發者把內存有效地分開并進行分布,然后通過有效的消息傳送降低開銷,提高了性能。從哲學角度來說,不知道應用對數據的訪問細節,就不可能把性能做好,所以在高性能計算領域,很多時候性能和優雅度需要保持一個平衡。現在我在架構沒有明顯改變的情況下,對虛擬內存技術一般是抱比較健康的懷疑態度的。

離開曼徹斯特大學后,1993~1995年,我在美國阿岡國家實驗室完成了博士后研究。當時是跟著Ian Forster(后來被譽為“網格之父”)。Ian Forster是搞并行邏輯語言的編譯及運行時系統的。當時他搞的并行邏輯語言并沒得到別人的認可,所以他基于Fortran發明了Fortran-M語言。他給Fortran加了一些消息傳送,而我為這些信息傳送編了一個編譯器。

記者:您的第一份工作是編程,可以說您也是從程序員起步的。那在程序員成長過程中,您最難忘的事是什么?

徐明強:1996年,我在加拿大Platform Computing公司做開發工程師,當時有個系統在客戶那里總是coredump,而且crash的地方都不同。后來,公司派我去客戶數據中心“救火”。在機場的時候,我就開始逐行讀程序。從數十萬行中要找出問題,真有大海撈針的感覺。我當時祈禱,愿天地的主宰幫助我,結果不久我就發現一個循環中有一句語句的二維數組的索引用反了。舉例說明,本來應該是array[i][j]=1.0結果筆誤成 array[j][i] =1.0。

把這個問題修正后,我在客戶那兒的三天,系統一直沒出問題,之后也沒出現任何問題。這次經歷給了我很深的體會——程序員手中的責任是何等的大。據統計,許多的程序錯誤都是在周五最后一個工作小時提交進系統的,而且,不少錯誤都是重現以前的錯誤。同樣,這類錯誤常常在程序員筋疲力盡的時候引入的。所以,在這之后,我開始注意編程時的身體和精神狀況,確保在編程時候保持良好的狀態。

記者:在架構師成長過程中,您最難忘的事是什么?您認為架構師需要具備哪些素質?

徐明強:1997年,我在Platform Computing公司開始負責公司某產品的架構重建工作。這是一個近十年的軟件產品,在軟件維護、新功能添加、擴展等方面存在比較大的困難。我一開始就犯了許多技術人員常犯的錯誤,即沒有定義原產品架構的具體問題就開始著手寫解決方案,結果整個方案無法得到認可。后來我花了一個月的時間,將原產品架構的問題一一定義清楚,包括問題描述、根結定義。有了清晰的問題定義,整個方案很容易就進入了后續設計、開發階段。這次經歷后,無論我再做任何事情,不管大小,都會首先把問題定義清楚,同時搞清問題實質,有時候對問題本身的興趣要超過尋找解決方案的興趣。技術人員最大的誤區就是急于展示身手,而且常常為自己的技術找問題。如果把自己擅長的技術比作鐵錘,技術人員很容易把所有問題都看成釘子,很少在問題本身上下工夫。結果,往往很快步入迷途,真正該解決的問題沒有得到解決。

我覺得架構師必須學會的第一件事情就是要懂得如何進行權衡。因為我們面對的都是相互矛盾的一些設計要素和限制,但事實卻要求你在這些相互矛盾的要素限制和約束條件之間取得巧妙的平衡,因此,我認為平衡能力是微軟架構師的第一個重要素質。

第二是架構師必須足夠成熟。因為他們往往需要在無法獲得完整信息的情況下,迅速領會問題,并根據經驗做出審慎判斷。其實微軟內部有一個能力要求(Deal With Ambiguity),即能把一張比較模糊的圖片清晰化。如果從經驗層面上談,我想歸納四個方面。首先當然是在專題領域的經驗和對微軟軟件開發工程的經驗。第二就是要有判斷力、決定力和領導力,以推動各個團隊的技術進展,并且能在壓力下作出關鍵性的決策,然后將開發貫徹到底,并提高效率。架構師有權在技術上作出決定,在大家意見不一致的時候,他要能給出大部分人比較能夠接受的意見。第三是善于溝通。溝通的關鍵就是贏得他人的信任。微軟架構師跟其他合作人沒有直接的上下級關系,應該通過溝通去贏得其他人的贊同,而不能靠命令強制指導。同時為了提高效率,架構師必須贏得項目團隊、管理團隊、合作伙伴和客戶等多方面的認同,這樣才能將產品開發出來。第四是通常說的抽象思維和分析能力。具體思維的人可能比較注重細節,但往往也會將問題復雜化,使頭緒增多而無法收斂。抽象思維可以幫架構師從大量信息、系統文件中,看出一些規律來,并找出與之相關的方面,歸納關鍵問題,表述模糊的概念并將其變成相關各方能夠理解的項目構件,并以具體的語言進行溝通。

最后,我認為無論是什么樣的架構師都要具備一定的商業頭腦,充分把握業務的知識,因為對業務的把握能夠帶來擁抱變化的能力,而且可以在設計的時候留出一點擴展的余地,適應將來可能來臨的需求變化。

微軟高性能計算中國研發團隊參加2010中國高性能計算年會

記者:您能談談微軟是怎么培養架構師的嗎?

徐明強:像微軟這樣龐大的軟件開發組織結構里,架構師會根據產品團隊,工作職能進行進一步劃分。微軟基本上是從產品組資深人員里選拔架構師。

如果要理解微軟的架構師職能劃分,就需要先了解微軟的產品部門劃分。通常在微軟的產品組有三個更小一級的分組:項目經理組、開發組、測試組。每個組都可以培養出架構師。

項目經理組主要負責業務的需求定義和產品規格書的撰寫;開發組主要負責軟件的實現,以滿足項目經理所定義的需求規格書;測試組主要確保軟件產品交付的質量。從這個角度看,我們可以把架構師分為項目經理架構師、開發架構師和測試架構師三種基本類型。

不同的架構師職能大相徑庭,比如項目經理架構師,更側重于業務上的需要。從這個意義上看,你就會發現不同架構師之間的區別。由于項目經理主要是看用戶的需求,對整個系統性能和工作品質提出要求,同時還要確認在用戶應用場景,產品是否可以有效地被系統支撐。

而開發架構師比較側重于技術,盡管某些問題上會與項目經理架構師重疊,但更多時候分工還是非常明確的。技術架構師的一大職能是技術選型,比如在產品中選擇使用什么技術,數據庫要采用哪種規格的SQL Server,數據庫的模式(Schema)應該怎樣設計,.NET組件的選擇等,這些都是開發組架構師所關注的。

測試架構師則關注測試系統對架構設計的幫助,包括如何自動化測試、如何更有效地手工測試等。比如HPC Server測試組的架構師的工作,由于涉及很復雜的分布式系統,就需要做可擴展性測試,計算資源分配的測試,包括測試方法的設計等。

記者:您對年輕技術人員有哪些建議?

徐明強:我主要提三點建議。

第一,要避免“急功近利”的心態和作風。在小事上要忠心,然后才可能被賦予重任。我加入Platform Computing公司的第一個任務,是寫一個相對簡單的腳本文件,但我還是花了100%的熱情去寫。我發現原來的腳本文件有許多冗余部分,而且其中記錄臨時文件的程序容易出錯。我修改了這部分腳本文件,使得今后編寫程序的程序員能夠更便捷地編寫腳本文件。后來,我就開始做比較復雜和核心的項目??梢哉f,從小事贏得別人的信任。

第二,要對系統的穩定性和性能問題感興趣并多解決這些問題。解決這些問題需要有藍領精神,需要挽起袖筒做臟活。做這些“偵探”工作可以幫助你對系統有更全面的了解,而且可以培養出務實的精神。許多大的發現都是從小處著手,然后就會有奇特收獲。大多年輕人都想有重大成就,其實很多時候,只要你工作足夠細致,好的結果就呼之欲出了。年輕的時候總是想很快結束戰斗,而資深的架構師常常問自己和合作的人,我們還有什么沒有考慮到?在討論解決方案的時候,往往開始20%的時間,可以想到80%的解決方案。而最好的方案往往需要用剩下的80%的時間去尋找。好的解決方案,如同寶藏,要用耐心和細心去發掘。

第三,要對公司的愿景和商業策略感興趣。對公司來說,架構師最大的貢獻就是能夠創建數年的產品計劃、能夠清晰表述客戶價值的產品路途、能夠前瞻市場變化并能夠以最佳時間推出市場歡迎的產品。如何做到呢?起點就是要珍惜每一次訪問客戶的機會,用心當學徒式地學習用戶是如何使用自己的產品。每一個步驟都要記清楚,真正理解用戶的商業流程和應用場景。許多時候,我們只是把用戶的需求記錄下來,對于用戶的應用場景缺乏了解,結果設計出來的產品非用戶所需。我的一個資深開發員同事用了個非常好的比喻:車子上有許多螺絲釘,是要用電動工具的。如果你只看表面現象,看見車上的螺釘,就給別人一個螺絲刀。那么,別人用起來手腕會要斷掉的。

(本文來自《程序員》雜志10年12期)

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi與C#之父:安德斯
程序員的職業發展規劃和分類
2017年高性能計算領域的成功與失敗
怎樣才能做到編程語言的“一通百通”?
高性能計算重點專項任務完成部署
多數學生認為“軟件靠吃年輕飯”之我見
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 临潭县| 景东| 兴和县| 芒康县| 昆明市| 台山市| 尼木县| 临颍县| 平谷区| 武宣县| 平顺县| 遂宁市| 新河县| 筠连县| 龙泉市| 赞皇县| 安庆市| 灌阳县| 民和| 松原市| 沅江市| 永昌县| 仙居县| 望江县| 淮北市| 阿城市| 彭泽县| 邹平县| 普定县| 乌恰县| 葵青区| 新河县| 靖远县| 从江县| 大理市| 大荔县| 云林县| 迁安市| 屏东县| 修文县| 揭东县|