大咖說是InfoQ推出的視頻直播節目,每周四晚八點半和您見面!
回覆:理想,獲得直播完整版視頻。
戳閱讀原文,獲得簡訊提醒,不錯過下次直播!
關注美女主播66的微博:非著名鼓勵師66,各種福利等著你~
本視頻時長36分,建議在Wifi環境下觀看。
黃希彤,騰訊雲技術專家。
1999年四川大學畢業後從事醫療影像系統開發,2001年創業,2003年創業失敗後移民澳大利亞,2004年放棄移民身份回國,2005年加入騰訊,負責QQ空間等產品的前端技術和用戶體驗優化,2015年加入騰訊雲。
目前騰訊Web前端技術級別最高的程式設計師。技術公益倡導者,中國信息無障礙聯盟發起人,中國信息技術公益聯盟發起人。
我從1988年開始學習編程,中學期間一直參加計算機競賽,一開始用Basic語言,後來改用Pascal語言。大學的第一志願本來填的是物理相關的專業,但是陰差陽錯的,卻被調配到第二志願,計算機軟體專業了。大學期間比較不務正業,畢業的時候因為重修了51個學分,沒有獲得學位。
99年大學畢業後進入了一家研究所,參與一些醫療影像系統的開發工作。一開始使用delphi,後來改用VB。兩年後換了一份工作,進入了一個電子政務項目,從那時開始用java編程。
後來和高中同學一起創業,做辦公自動化系統,創業一年後,沒有資金了,就散夥了。
創業失敗後我去了一個外企工作了一段時間,做一個香港政府的外包項目,隨後有一個技術移民的機會,27歲那年,我去了澳大利亞,在墨爾本呆了大半年,沒有找到合適的技術性的工作,倒是做了一些鉗工木工之類的活兒。新移民一般前兩年不能隨意離開澳洲,俗稱「移民監」,算一算人生其實沒有太多個兩年的,我不想把時間都花在那裡,28歲那年我回國了。
回國後繼續去了一家外企,做醫療信息系統,還是做Java。直到一年後遇到騰訊招聘,於是2005年我來到騰訊,轉正後就30歲了。
從2005年到2015年,我做了將近10年的QQ空間,從一開始的負責所有前端的交互邏輯開發,到後來有了前端團隊,再後來把關注重點放到了性能優化和用戶體驗優化上。
今年前端圈子裡面很流行一篇文章《在2016年學習JavaScript是一種怎樣的體驗》,我看完也暈菜了,裡面大部分的新技術概念我都沒有聽說過或者只聽說過名字。
這讓我想起了十多年前,我還是個Java程式設計師的時候,也是碰上了一個技術概念大爆發的時期,每天面對著層出不窮的新技術概念、新框架、新工具。當時我過得很焦慮,學不完的新技術,每個都看起很有用,不學習,不實踐,又沒有辦法確認它是不是真的那麼有用。
最後我做了逃兵,我想Java這個技術方向是適合那些更聰明的人繼續發展的方向,那你們慢慢玩兒吧,我走了。2005年我放棄Java,走上了Web前端這個新方向,一下就解脫了。所以我們今天的話題有個「從入門到放棄」的噱頭。我在這之前確實是經歷過客戶端開發和後端開發從入門到放棄的過程的。
那麼十年後再次看到這樣的困境,讓我意識到這樣的問題其實會一直發生,所以我們也不能一直做逃兵啊,還是要換一個角度來重新審視這個問題。我們的身份是軟體工程師,工程師的天職是「解決問題」,我們要關心的是新的技術是否賦予另了我們新的解決問題的能力,讓我們能夠解決以前不能解決的問題。
我們看到很多新技術概念和框架,只是賦予了我們一種用新方式解決老問題的能力,比如有個網站叫做「你可能不需要jQuery」(http://youmightnotneedjquery.com)裡面列出了很多我們常用的jQuery的功能如果不用它應該怎麼做,也就是說,其實jQuery並沒有讓我們解決原來解決不了的問題,只是給了我們一種新的方便的代碼寫法。其他很多框架也有類似的問題,甚至現在很多人用ES6編程,再用Babel轉成ES5,那實質上我們也是在解決原來用ES5就能解決的問題。
所以我以前負責QQ空間前端的時候,有好些年我都不希望團隊使用外部的前端框架,我對團隊說:如果你自己連個jQuery都寫不出來,那你怎麼能理解你寫的調用jQuery的代碼實際上是怎麼運行的呢?所以看到很多曇花一現的前端技術過氣了以後,我都會有點慶幸還好沒有花時間精力去追逐它們。
所以如果你希望追求更漂亮的寫法,沒問題,這個社會也需要代碼藝術家,有很多人喜歡代碼藝術家。如果你想我一樣缺乏藝術細胞,那我們還可以當一個好工程師,在掌握了基礎的編程能力的基礎上,更加專注於有哪些問題是前人沒解決的。
新的網際網路時代已經到來,但是我還是看到大量的前端開發者並沒有具備這個時代應該有的新的編程思想和能力,很多人還在用老的方式搭建系統。
比如我們有了一個好的想法,需要後臺開發,但是我自己不熟悉後臺技術,然後就必須要拉一個後臺開發來加入,如果找不到一個靠譜的後臺開發,我們的創新想法可能就擱淺了。
但是其實現在國內已經有很多所謂「後端即服務」(Backend as a Service, BaaS)這樣的平臺,可以用通用一致化的後臺服務來支撐我們前端開發者的創新,比如我們騰訊雲就有移動開發工具TAB(https://www.qcloud.com/product/TAB)這樣的BaaS平臺,我們就很容易很低成本的把我們的創新想法開發出來,快速試錯。
又比如現在有很多人是全棧工程師,所以後端開發也不是問題,然後創意開發上線了,萬一真的特別靠譜,比如我們突然想到了一個類似於圍住神經貓這樣的爆款創意,突然一炮而紅,那我們的系統架構能力能不能支撐起怎樣一夜爆紅的壓力呢?我們的很多開發者其實並沒有準備好去迎接這樣的的系統壓力的,所以機會來了你也很容易抓不住。
但是在雲時代要通過有限的成本快速提供這樣的抗壓能力其實是比較方便的,只是系統需要有一些面向雲的架構意識的體現,比如數據是否動靜分離,是否充分利用了CDN網絡的分發能力,是否使用了負載均衡服務,動態數據服務是否儘量採用了服務性存儲,而不是本地硬碟和本地資料庫存儲,會話狀態是否從伺服器上分離到獨立的緩存服務上等等。
做到伺服器的無狀態化以後,你的伺服器就很容易具備伸縮能力,在遇到良好的發展機會的時候可以很容易的複製新的後臺服務添加到集群中來線性的提升負載能力,甚至在訪問高峰期過後還可以很容易快速的釋放資源節省資源浪費,而且這樣的伸縮活動還很容易自動化,像在騰訊雲上你可以使用彈性伸縮服務,設定一定的帶寬或者CPU閾值來觸發伺服器的縮擴容,這只要在網頁界面上做簡單的點擊配置就可以了。
這些做法其實很多都不需要額外掌握什麼新的技能,甚至可以比傳統的做法節省很多開發量,只是需要把資料庫的主機地址改成遠程的IP,把會話配置文件改成指向遠程伺服器,使用對象存儲SDK來代替自己開發文件上傳下載等等。
像這樣基於雲去思考和架構系統的方式,現在我們也常常稱為「雲原生」,這樣的思考方式會極大提升我們前端工程師和全棧工程師解決問題的能力。
我一直相信一句話,看一個社會好不好,不是看這個社會上過得最好的人過得多好,而是要看這個社會上過得最不好的人過得有多不好。
這些年因為個人興趣的關係,接觸公益圈比較多。正好看到社會企業這個概念的興起,很多公益圈的朋友要麼去加入了一個社會企業,要麼去創辦了一個社會企業,用各種方式嘗試通過商業手段來實現改善社會的目的。
我覺得自己和他們一樣有社會理想,但是卻又不像他們具備那麼好的商業能力,我更多具備的還是技術能力。那當具備商業能力的人去做社會企業的時候,具備技術能力的人要怎兌現社會理想呢?所以去年我提出了「社會程式設計師」這個概念,大家可以類比一下「企業」和「社會企業」的區別。社會程式設計師也一樣的,我們重視社會價值,嘗試通過自己的技術手段來實現社會價值,幫助社會進步。
我最早進行的相關實踐是信息無障礙,這是一個很典型的領域。如果我關注商業價值的話,我們的產品應該面向全國的幾億或者全球的幾十億網際網路用戶去優化產品,實現商業價值的最大化。
但是如果我們看過的最不好的那些人,那些使用網際網路產品最困難的用戶,比如中國的一千多萬盲人,那麼我們就不能過度的期望在他們身上挖掘出商業價值,而要看我們隊產品做什麼樣的改造可以更好的幫助他們。
後來我還嘗試了尋親領域,前天剛好是我們騰訊尋親項目上線4周年。4年前我們瞞著公司悄悄改造了數千臺伺服器上線了這個項目,現在已經影響了騰訊的一系列海量產品,比如手機QQ、微信、電腦管家、手機管家、廣點通這樣的項目加入,甚至還有數千家外部的公司和網站也加入了我們。
我們還嘗試過通過把IT能力輸出給公益組織,推動他們進步,讓他們更好的的幫助受助者。
今年8月,我們還發起成立了中國信息技術公益聯盟(citpu.cn),聯合更多的志同道合者一起用專業能力改變社會。
我們使用的很多技術將來都會被淘汰,我們做的很多產品將來都會過時,真正能讓我們牛的,應該是那些可以經得起時間考驗的技術實踐。
今天大家基本公認,計算機界的諾貝爾獎就是圖靈獎。我們去看歷史上的圖靈獎獲得者也都是這樣的,並沒有某一個語言的高手,而是發明了一種語言,發明了一種算法,發明了一種編程模式,這樣的人。
我有的時候會想,圖靈如果生活在今天,他會寫JavaScript寫得特別好嗎?我覺得基本上是小概率事件。不是說圖靈不夠聰明,不能把JavaScript寫得比我們好,而是說圖靈之所以是圖靈,是因為他做了那些經得起時間考驗的事情。
我覺得技術圈的很多人,往往會覺得程序寫得好最牛。現在一些很高深的技術研究,能在技術圈引起討論、關注,能讓大家認識到你的技術很厲害,所以很多人認為吧程序寫得特別好的程式設計師很牛,但是我們的編程技術很多將來都會被淘汰,這樣的牛是一時的。我以前在社區裡也認識過很多很厲害的人,但是今天的開發者不一定還知道他們。所以很多開發者也難以理解馮大輝作為一個CTO怎麼能不寫代碼。
但是如果我們通過專業能力,能對社會做出一點實際的推動和改變,讓我們今天生活的這個世界變得有一些不同,這樣的程式設計師,他們留下的改變可以不隨著技術的升級換代而被遺忘,這樣的牛,也許才是可以經得起時間考驗的。
所以我們應該多關注那些將來我們90歲的時候還可以回憶的成就,多想想我們打算跟自己的孫子吹什麼牛。
下周二(12月20日)晚八點半,新一期大咖說登場!
這次,我們來聊一聊程式設計師的健身之道:
沒有健身基礎的程式設計師,如何增肌和減脂?
掃描下方二維碼報名,不錯過下期直播!