在中國,也能一輩子做程序員

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於國內外軟件發展起步不同,加上近年來關於程序員遭遇35歲職業危機和行業內卷的問題愈發凸顯,在中國一輩子當程序員似乎是一件很困難的事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在金山辦公副總裁以及AI中臺負責人"},{"type":"link","attrs":{"href":"https:\/\/www.zhihu.com\/people\/yao-dong-27","title":"xxx","type":null},"content":[{"type":"text","text":"姚冬"}]},{"type":"text","text":"看來,關於能不能一輩子做程序員的問題,要討論的其實是“"},{"type":"text","marks":[{"type":"strong"}],"text":"你有多大概率把它當成一個終身職業,可能性有多大"},{"type":"text","text":"”,目前看起來,程序員這行“只要你想,只要你願意,然後選對方向,有合適的環境”,基本上就可以一直做下去。據姚冬透露,目前金山辦公在職的、年紀最大的技術人於1990年入職,並且30年來都在一線寫程序。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"“程序員可以不做管理職位,但是不能沒有管理能力。”"},{"type":"text","text":"9月29日,姚冬現身"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/video\/ZU1UKHxjxf9Dac4VvEJK","title":"xxx","type":null},"content":[{"type":"text","text":"InfoQ“大咖說”"}]},{"type":"text","text":",妙語連珠,觀點犀利,他既與我們分享了他豐富多彩的職業生涯,也結合自身經驗講述了自己選擇職業方向和技術方向的方法論,並進一步給出了"},{"type":"text","marks":[{"type":"strong"},{"type":"strong"}],"text":"關於"},{"type":"text","marks":[{"type":"strong"}],"text":"技術轉型、如何判斷技術是否容易過時以及管理能力"},{"type":"text","text":"等方面的思考和建議。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以下內容節選自當天的分享,InfoQ做了不改變原意的編輯:"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"不斷迎接新挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:首先請您跟大家做一下自我介紹,包括您的職業經歷、您一直以來關注哪些技術領域等等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"我目前在金山辦公任副總裁,主管AI方向的研發,做程序員有20多年,從97年就開始在軟件公司,98年進入金山,如果小夥伴們不怕暴露年齡的話,可能也知道金山詞霸、金山遊俠。後來去過一些其他公司,比如說我在諾基亞做塞班系統,後來又去了YY語音,打遊戲的小夥伴們應該用過YY語音,團隊指揮、開黑那也是我主導的,17年的時候又重新回到金山辦公,轉型做AI方向的算法和工程產品。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:您曾兩進金山,您對金山辦公的感受和看法有發生什麼變化嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"人都有這個“問題”,就是在一個組織裏的時候,更容易發現這個組織有問題。因爲這時候你是一個近距離的觀察者,看了很多細節,會總覺得這兒也不好,那兒不好,這個不對,那也不對。但如果跳出這個領域成爲一個旁觀者,距離產生美,當你看不到一些瑣碎的細節的時候,你更容易從一個全局的宏觀視角去看待問題,這時候你會發現,原來的組織或許也沒那麼糟糕,甚至有些原來的一些亮點、一些優秀的地方是你以前是看不到的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我在2004年的時候離開金山,當時覺得金山當時還是一家小的軟件公司,但是你出來再看的時候,你會發現這家公司,尤其很多以前沒有注意到的優點,比如這家公司充滿了技術夢想,至今也是,仍然是一家技術驅動的、技術立業的公司。上次雷總在我們的年會上甚至還說着,在我們這裏“程序員是老大”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外這家公司仍然堅持着它的夢想,30年就堅持做一件事情。從創辦的時候就做辦公軟件WPS,現在還是,它可以把一件事情堅持到底。從商業的角度看,你會發現這並不是一件很賺錢的好生意,它更多的是承載了一代代程序員的情懷和夢想。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外你會發現這家公司也很正派,從不搞什麼歪門邪道、坑蒙拐騙的事情,一直都很奉公守法,本分經營。你可以說它有一點保守、不夠激進,但是它是能守住一些底線,經營上屬於比較本分正直,老老實實做自己專注的、喜歡的事情,特別是技術上的事情。這家公司的確有它的這些優點,所以從金山離開了一段時間又重新回來的人非常多。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:今年7月27日珠海金山辦公技術開放日直播的時候,評論區有人說您現在的演講能力“爆棚”,但是以前性格比較靦腆,是這樣的嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"是的,因爲我在高中的時候就屬於被老師叫到講臺上說個話腿都哆嗦的那種,這個(演講能力)是在職業生涯裏慢慢練出來的,尤其是在金山的時間。這裏很注重內部員工的能力培養,除了專業能力以外,也會注重培養其他能力,比如說演講。我記得當時在北京的時候,我就是一普通程序員,但我是有機會代表部門去做季度總結的,那時一個部門二三十人,就讓一個普通工程師代表部門去做季度總結會發言。金山就是會幹這樣的事情,給你機會讓你在很多人面前去表達去演講,當然緊張是緊張,站在臺上底下坐着五六十人,大部分人職位比我高,肯定是緊張,但是這種事幹多了慢慢就練出來了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:您曾經提到過自己“每過幾年就換一個技術方向”,能否跟我們分享下您每一次都是如何選擇技術方向的?都是在什麼樣的情況下做轉換?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"如果把時間線拉回到過去,要說在那個時間點上我是怎麼選擇的,有一部分其實是運氣,或者說命運的推動。碰巧在某個時間,來了個機會,有朋友找你,或者說是有些什麼變化導致了現在這個結果。如果說有什麼深思熟慮倒也稱不上,但是過後我有總結,發現成功的和不成功的轉型到底是爲什麼?人總是這樣子,也許當時沒想那麼多,但是過後還是要做總結,作爲未來的一些經驗教訓。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"後來我自己總結了下,現在大概是這樣思考的,職業生涯大概由四個基本要素組成,第一種是"},{"type":"text","marks":[{"type":"strong"}],"text":"理論基礎知識"},{"type":"text","text":",比如說你懂數學、懂物理、懂化學、懂生物或歷史文學,這些叫基礎理論知識。第二種是"},{"type":"text","marks":[{"type":"strong"}],"text":"工程能力"},{"type":"text","text":",對程序員來說就是語言、框架、操作系統、工具等等。第三"},{"type":"text","marks":[{"type":"strong"}],"text":"是面對的產品和客戶"},{"type":"text","text":",就是你做什麼樣的產品,面向什麼樣的客戶羣。比如你說做社交、做電商、做遊戲,包括WPS做辦公,始終是什麼樣的產品就面對什麼樣的用戶羣。"},{"type":"text","marks":[{"type":"strong"}],"text":"第四個要素是團隊和所在的企業"},{"type":"text","text":",除非是純單幹,否則我們都一定有團隊,有合作伙伴,有企業。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"這四個要素在轉型的時候不要同時換"},{"type":"text","text":",我很慶幸自己過去從來不同時換,最多換兩個,就要麼換基礎知識,要麼換工具,要不換工程能力,要不換產品、用戶方向,要不換團隊、換公司,反正這四個因素不能同時換,同時換風險太大,我總結我過去的有些成功的一些轉型都是換其中一到兩個。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:所以不能把所有這些要素都換到自己不熟悉的陌生境地。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"太冒險,比如我從YY語音出來回到金山辦公,對我來說團隊等於沒換,因爲這是我熟悉的地方、熟悉的人和團隊。我的基礎理論知識也沒有換,不管做AI還是做音視頻處理,它的基礎還是數學、算法、計算機組成原理、線性代數這些東西,基礎理論還是計算機和數學那套。工程能力換了一部分,比如框架可能從音視頻處理框架換成了深度學習、機器學習,Python用得比較多,但C++還有。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"產品和用戶羣也的確是換了,原來是做娛樂軟件和語音通訊的工具,現在變成做辦公軟件,做AI類的產品,產品方向換了。這種轉型風險相對可控,所以我過去總結要是想換得比較順暢,或者說成功概率高,四個要素不要同時變,只變其中一到兩個。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用成熟的工程技術和基礎知識跟熟悉的團隊做個新產品,這個是風險比較小的;或者把現有的產品用新技術重新改進,這個也是風險比較小的;或者做原來的產品,原來的技術,但是換家公司,換個團隊,這個風險也是比較小的,總之這些東西不要同時更換。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:您回到金山辦公是2017年左右,那陣子技術浪潮很多,選擇也很多,您是因什麼機緣巧合回到金山辦公的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"我原來做YY語音,在YY做了7年,剛開始負責它的客戶端,後來負責音視頻算法部分,感覺7年也差不多可以告一段落,而且YY已經是一個比較成熟的業務。所以也要給自己找一些新的方向,去找一些新的挑戰,這時候正好機緣巧合,金山辦公這邊也想投入AI。因爲2016、2017年那會正是AI最熱的時候,對各個企業來說,都會在這個領域去投入,看看用AI的技術有沒有可能改善他們自身的業務,正好也有這麼一個崗位,簡單聊了一下就一拍即合。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"金山辦公在AI技術上的探索和應用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:您回到金山辦公之後負責Al這塊,可以簡單談談您現在的工作嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:我在"},{"type":"text","text":"金山辦公主要是在組建AI的研發團隊,包括算法、工程、產品,現在團隊算是有一定的規模,而且有些產品和工程已經落地了。我現在做幾件事情,"},{"type":"text","marks":[{"type":"strong"}],"text":"一是推動算法改進"},{"type":"text","text":",就是已經落地的一些產品,包括一些新的算法的改進。"},{"type":"text","marks":[{"type":"strong"}],"text":"第二推動工程落地"},{"type":"text","text":",就是算法、工程、技術這些,它是一定要落地到一個具體的產品和業務裏的,要服務真正的客戶,所以說要推動算法工程的落地。"},{"type":"text","marks":[{"type":"strong"}],"text":"第三件事情就是關於發掘未來的兩樣東西"},{"type":"text","text":",一個是優秀的人才,培養未來的有潛質的人才,人才梯隊建設,還有一個就是挖掘未來的產品、技術和業務的新方向。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:最開始對於如何將AI應用到辦公軟件,有沒有哪些頭緒或者想法?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"這個我當時也大概花了幾個月去摸索技術領域的一些東西,包括現有的一些算法、理論、工程,然後我當時給自己定了一個原則和方向,今天還是這個原則:"},{"type":"text","marks":[{"type":"strong"},{"type":"strong"}],"text":"既然我們做辦公軟件,那麼我們處理最多的數據就是文本數據,就是文字,WPS這三個字的縮寫,當年就叫“Word Processing System”,翻譯過來就是字處理系統,我們30年來主要是跟文字打交道。"},{"type":"text","text":"當然現在WPS的組建很豐富了,包括演示、表格、圖片、視頻、海報、思維導圖等等,但至今文字還是非常重要的部分,所以我給自己定了一個方向就是處理文字。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"那麼人類處理文字主要是幾個事情,是“聽、說、讀、寫”"},{"type":"text","text":"。對於機器來說,它處理文字大概也是這四件事情:“聽”就是語音識別,說就是語音合成,叫TTS(Text To Speech);“讀”就是自然語言理解,如果這個字是印在一張紙上,你要先做OCR、做掃描識別,如果這個字是英文或者其他語言,你聽不懂,那麼就先做機器翻譯;還有自然語言生成,自然語言生成就是輔助寫作,問答都屬於自然語言生成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"人類做對於文字主要是做四件事——聽說讀寫,我做AI也是瞄着這四個方向,怎麼處理文字的聽說讀寫,並且把這四個能力應用到辦公場景去,跟我們的主產品WPS去結合。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"比如說我們做了字符識別。那怎麼樣識別?掃描件或照片裏的文字,我們可以把它讀出來,提取出來。比如說我們做機器翻譯,各國文字都可以把它翻譯成中文,或者把中文翻譯成外文。除此以外,我們也做各種自動美化、排版、檢測識別功能,還做輔助寫作,也做搜索,知識圖譜......總之都是圍繞着文字去做的事情。我不做人臉識別,是因爲我們不是做人臉識別的公司,也不做自動駕駛,那些跟字沒什麼關係。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:金山辦公做AI和其他公司有什麼不同?要用幾個形容詞來形容的話您會選擇什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:金山辦公還是一個比較務實的公司,它是做什麼技術都會考慮工程化"},{"type":"text","text":"、怎麼落地,這是幾十年來一貫的風格。公司從創始人開始就是做工程的,就是要做實實在在的產品,求總(求伯君)、雷總(雷軍)也好,他們都不是學術圈出來的,他們是工程背景,都很在乎工程要落地,要服務客戶,要變成產品。所以我們一向都是工程主導,無論做什麼事情,都想着怎麼把它落地,怎麼變成一個功能、變成一個業務、變成一個產品,變成用戶能用到的東西。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:兩個月前金山辦公發佈了AI深度學習推理框架"},{"type":"link","attrs":{"href":"https:\/\/github.com\/kingsoft-wps\/KSAI-Toolkits","title":"xxx","type":null},"content":[{"type":"text","text":"KSAI-lite"}]},{"type":"text","marks":[{"type":"strong"}],"text":"並開源出來,能否跟我們介紹下這個項目,以及您對它後續發展的期望。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"WPS這個產品由於它的特性,是和很多產品不一樣,可能中國跨平臺跨的最多的產品就是WPS,PC、IOS和安卓都有,在瀏覽器裏它有Web Office,PC上它支持Mac、Linux、Windows,它可以在X86芯片上跑,它也可以在ARM芯片上跑,它甚至支持龍芯,它幾乎支持所有的終端設備。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如此一來就給它帶來一個問題:它如何做AI推理和算法的框架?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那這框架必須也支持所有的設備,所有的操作系統,所有的指令集的排列組合,這就是WPS一個非常特別的地方。你看別的產品,哪怕是一些大的企業,它的產品也不是跨所有平臺,但是WPS就是這樣的,你可以在所有你能想到的終端上看到WPS。所以它的AI推理框架也必須支持所有的操作系統和所有的平臺指令,那這件事只能說由我們自己來做。當然,我們不是從頭做的,我們也是拿業界的開源框架,在上面去做移植、做優化。因爲不同的指令集總是要做適配,不同操作系統要做一些針對性的優化,所以我們希望把這些成果開放出來,如果有其他的公司的企業產品業務也遇到這樣的問題,可以考慮使用我們這套解決方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前我們把OCR能力、文本校對的能力移植過來了,爭取把機器翻譯也移植上去,這樣它就可以讓這些AI深度學習算法在所有的終端上都能跑起來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"順便說一下,我們爲什麼要讓這些算法在終端上跑起來?這些算法在服務端的GPU上跑是沒有問題的,爲什麼要在終端跑?是因爲我們用戶羣體很大,有各種複雜的場景。比如說:有的場景可能網速很慢,甚至有很多辦公場景是不聯網的,或者政府和一些保密機構、大企業的核心部門是不聯外網的,它希望能做本地處理,但是它需要這種能力怎麼辦?我們就能提供相應的解決方案。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"程序員的發展路徑"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:前面咱們聊了您的一些經歷和當前在做的一些事情,接下來想請您聊幾個“老生常談”但又備受關注的問題,我們今天的欄目標題是“在中國,能一輩子做程序員嗎”,從您目前接觸和觀察到的情況來看,您會如何回答這個問題?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"哈哈,下邊就開始知乎式的“一本正經胡說八道”時間,首先在中國不能一輩子做程序員,這句話是符合科學的,因爲它有可證的一些情況。但要是說能,那麼只要我找出一個人能做一輩子不就可以了嗎?肯定有人做了一輩子程序員一直做到退休,比如說我們公司就有程序員退休,他就一直做到退休。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不是說非得等到60歲退休,可能覺得差不多了,錢也夠了,就可以了。所以說肯定有人可以做,把它當成一個終身職業。但是我們真正要討論的問題是你有多大概率把它當成一個終身職業,可能性是多少?它既不是絕對能,也不是絕對不能,它只是一種可能性。目前看起來程序員和其他職業沒什麼特別的區別,也不是所有職業都能做一輩子,任何職業也不能給打包票說,這個職業可以是做到退休,這可能性也不大,它總有一些競爭淘汰或者主動退出的情況,總有些變故。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前看起來,程序員這行只要你想,只要你願意,然後選對了一些方向,有合適的環境,基本上可以做下去,沒什麼問題。金山辦公這邊有很多程序員已經做了很多年,比如說目前在職的,據我所知,年紀最大的人應該是90年入職,30年了,今年50多歲,他還是在最一線的地方做程序員,默默寫程序。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:像您剛說也是概率問題,如果要能做一輩子程序員,他可能需要具備哪些條件?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"首先得熱愛這事,因爲你不喜歡就肯定不願意幹,誰願意一輩子幹自己不喜歡的事情。第二,你選擇的這個領域必須相當長壽,就不能做那種一兩年就掛掉的項目。如果想做一輩子程序員真的可以考慮一下金山辦公,我們家項目壽命特別長,可能你退休了它還在呢,像我們今天的WPS產品已經是被翻新了四代,最新的這代,所謂最新其實也已經18年了,並且目前看起來勢頭依然很好,短期內可能十年二十年也不會死,因爲辦公軟件這種產品,它的產品特性就決定了是長期的項目,微軟Office做了快40年,它是80年代末開始做的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:所以也要選對行業跟公司?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"歲數大了的確是對這個方向是有要求的,你不能做那些特別短平快的東西。要有一些沉澱,有積累,有傳承,能長期發展的一些事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:不知道從什麼時候起,35歲變成了一個很“殘酷”的年齡。能否跟我們聊聊,在您眼中,IT圈35歲“年齡歧視”的真相是什麼,是否真的那麼殘酷?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"我有一種思考方式,它是這樣的:我們通過學習掌握了一些知識,掌握了一些技能,隨着時間的推移,你不停地學習,你的知識和技能也會隨着時間增長。但是,當你掌握了大量知識和技能的同時,你的知識和技能也在被遺忘,被“過期”。它總歸在某個時間點上達到一個動態平衡,你學了多少東西,也忘掉了相應的東西,你的知識的技能的總量基本恆定,是不是可以這麼說?總會有這麼一個平衡點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而對絕大多數人來說,這個平衡點大概就在35歲左右。你會發現所有做技術的人,他可能都在35歲左右迎來一個知識和技能的平臺期,就知識和技能感覺沒有太大的變化,或者增長放緩。不像年輕的時候,每年都學會很多新東西,也都掌握了很多新能力。只是這個時間有人來的早,有人來的晚而已,這是35歲焦慮的一個根源。對於很多人來說,他在35歲左右的時候,他的知識技能總量不再快速增長,因爲他每年學了一些新東西,由於他腦子裏裝了大量的知識和技能,他會忘掉一些東西,有的是你主動自己忘掉的,還有一些是因爲技術進步,總有一些東西會過期。比如說我是個很好的Pascal程序員,我Pascal寫得很好,但是Pascal已經沒有了。我還是個很好的塞班程序員,但諾基亞手機沒有了,今天塞班也式微了,這些技能我沒有忘,但是它自己消失了,它過期了。這個行業都會有些技術慢慢地消退,你在這上面的所有的知識和經驗的積累也就都失效了。技術都有自己的半衰期,有的半衰期會很長,有的很短。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我有一點建議,我們能不能去學一些半衰期比較長的技術和能力?什麼是半衰期比較長?線性代數、數學,數學半衰期特別長,可能幾萬年都不會過期,甚至有些數學是基本的定律類的東西,它可能永遠不會過期,它的持續時間就會非常長。比如我最擅長的語言C和C++,這個語言的半衰期就非常長,到現在也沒有過期,它可能長達50年60年。所以說把自己更多的精力,時間去用來學習和掌握那些半衰期相對比較長的技術,可能就可以延長自己的職業生命。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:留言區有人提到,他說前端程序員肯定不能做一輩子。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"前端就屬於那種變得比較快的,但是你沒必要非把自己限制在前端,我以前是做客戶端的,客戶端也可以認爲就是當年的前端,而我可以選擇不做客戶端,我可以做點別的,我可以去做其他的行業,因爲反正基礎知識是一回事,工程技術是另一回事。基礎知識是計算機科學、數學、算法、數據結構、計算機組成原理、編譯原理、操作系統原理等等,這些東西都是基礎知識基礎理論,而前端、UI框架這些是工程技術,選擇哪個平臺也只不過是工程技術,還是屬於工具。工程技術是可以換的,基礎技術又不會過期,無論你選什麼語言,還不是算法、數據、結構那套。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:還是要更講究底層的理論基礎知識這一塊的東西是嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"基礎理論的半衰期非常長。我以前有一個不是非常嚴謹、簡單的算法,度量一下你離最終用戶有多遠。什麼叫離最終用戶有多遠?就是你今天寫一段代碼,實現了一段程序,做了一個東西,你就算一下最終用戶用到你的程序的時候要等多長時間。這時間越長,這個技術的半衰期就越長。那些做操作系統的人,他可能要做個一兩年之後你才能拿到它的操作系統內核的新版本,比如做Linux Kernel的人,Windows Kernel的人,他的代碼可能要幾年以後纔會交付到用戶手裏,那些做基礎理論的人就更厲害了,做科研的,做基礎理論,他的東西可能幾十年之後纔會真的用上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:留言區有提問,程序員的路徑不一定只有技術這一塊,該做管理嗎?什麼時候轉管理,以及怎麼去做,這個應該怎麼去做判斷?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"我覺得是這樣子,大家不要把職業的選擇路徑變得那麼窄,好像這世上只有程序員和管理兩個職位一樣,還有產品、運營、銷售、人事、行政,比如說人事,我們有程序員轉型做HRBP的,去做人事的事情,做行政、市場、銷售都有。職場選擇是很寬泛的,不只有管理這條路。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我對管理的態度是這樣的:"},{"type":"text","marks":[{"type":"strong"}],"text":"可以不做管理職位,但是不能沒有管理能力。"},{"type":"text","text":"管理能力和管理崗位是兩回事。有些人可以不做管理崗位,不做部門經理,不做總監,但是我建議程序員們還是要鍛鍊自己的管理能力。剛開始的時候你做工程師,你的問題可以通過技術手段去解決,但是隨着年齡增長,你的項目變得複雜,你的業務變得複雜之後,你以後想解決一些技術問題就必須用管理手段,動用一些管理手段去解決技術問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"舉個例子,假設有個技術問題,它的工作量很大,但這世上不是什麼問題都可以用一個巧妙算法來解決,有的事情就需要很多人,然後分工協作把這件事解決掉,技術圈裏有很多需要消耗大量工作量的事情,這時候就需要動用管理能力,有的時候有十人二十人,你能不能讓他們分工協作,彼此配合好來解決這個技術問題。所以即使是解決一個技術問題,也是需要管理能力,尤其一些需要很多人配合的技術問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來我們說,你應該至少精通某一個領域,在配合的時候,你就會是一個非常容易和別的團隊進行合作的人,你的機會自然就會很多,因爲你有一項特別強的能力,還有很多項雖然沒那麼強、但也基本懂的能力,當一個團隊需要什麼的時候,你有更大的概率可以去跟這個團隊去協作。這樣其實拓寬了自己職業上的很多選擇,而且你參與的項目也比較容易成功,因爲這個團隊不會有短板。所以說對於程序員來說是一專多能,或N專多能是最好的,就是有那麼一兩項非常深入,同時又是涉獵很廣,各種東西都會一點,這其實是最好的狀態。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:還有觀衆提問,爲什麼現在招合適的技術人才那麼難?有沒有一些可以解決的方法?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"這個也是我的痛苦,招合適的人的確變得越來越難。原因很簡單,優秀的工程師一定是越來越多,因爲我們教育水平在上升。大學每年在擴招,學校教知識也肯定是越教越好,互聯網上的各種信息資訊也很發達,這自學也變得容易,理論上講優秀的人才應該是越來越多的,人才也不會因爲資源的限制而導致無法學習編程。但是,同樣地,從業人員也變多了,我以前的看法就是優秀的人才從數目看絕對是變多了,但是在人羣中的比例下降了。所以說找人才難在優秀人才在羣體中的比例下降了,招聘優秀人才的難度的確是比以前高了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"別的公司我不太清楚,我們公司的解決方法一方面是跟優秀的高校去合作。另外我們公司也辦各種各樣的編程培訓班,技術培訓班,我們的工程師會去培訓一些技術能力,從中去選拔一些優秀的人。優秀的人有兩種,一種是挑選出來的,還有一種是培養出來的。金山辦公的理念一向更傾向於自己去培養人。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業界普遍的方式還有簡歷海選,朋友推薦,以及打造個人的影響力。比如說做個開源的項目,在GitHub上有很多星,這時候簡歷啥都不用寫,你把GitHub鏈接放上去就行。真的是這樣子,我看有些同學的簡歷雜七雜八寫那麼多東西,自己精通這個、精通那個,做過各種項目,還不如把GitHub鏈接和截圖放上去更好使。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我也面試過這樣的人,他附了一個GitHub上的鏈接,我真的會去看他的代碼,看他的提交記錄,看他的註釋,代碼風格,甚至如果能編譯的話,我會拿一些來編譯,運行一下看看。這個就很好使,當然這時候,我根本不看你哪個學校,哪個專業,什麼學歷,就用程序員的代碼說話。還有一種途徑就是做出個人作品,可能不是開源代碼,但是你有一個程序,有一個作品,有一個小工具軟件,這個也可以。反正別人能通過一些其他方法對你的技術能力有一個評估,這就可以。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:最後一個問題,有觀衆提問,如果架構設計足夠好,那麼大部分參與項目的程序員就只需要做很基礎、很簡單的工作,因此有經驗的程序員可以由若干個年輕的程序員取代,您怎麼看待這個問題?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"姚冬:"},{"type":"text","text":"我的思路是這樣子,架構好這件事它是有時間線的,不可能一個架構可以永遠持續,它終究有不好的那天,要推翻重寫的那天,總會有。因爲架構會隨着時間的推移,隨着需求和環境的變化而變,一個非常好的架構可能過一段時間看起來就是個非常糟糕的架構,這個是常有的事,在技術圈這是非常常見的事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"比如說以前很典型的,爲一些嵌入式的小設備設計了一些很緊湊的軟件,到後來隨着算力,隨着資源的增長,它反而顯得不合適了,這是常有的事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外很多系統難度還受規模因素的影響。隨着系統的規模變大之後,難度也會上升,比如說WPS,有五千萬行代碼,一行行看都不知道看到什麼時候去,所以它的難度是越來越高的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以說不存在“一個企業良好的架構會永永遠遠都只用程序員幹很簡單的事情,就可以持續地維護下去”這種說法。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章