阿里工程師看待學習和工作

對程序員的建議:
像海綿一樣吸收知識
沒有不值得解決的問題,沒有不值得學習的技術
每學一個知識點,都寫一段代碼去驗證,一方面是驗證,一方面
是練習,另一方面也是加深理解,知道真正掌握這個技術
一個計算機工程師應該以怎樣的態度和方式來工作和學習?
1. 發現問題,解決問題,不要繞開問題本身;
2. 多做事情,不會吃虧,即使不是你的事情
3. 保持對技術的專注和鑽研,把工作當事業

阿里工程師如何做一個項目?
例如我們要實現一個限流的服務,就是允許一個租戶的QPS最高多少。首先要界定問題的邊界(確定範圍),包括:要不要考慮網絡成攻擊(可能被其他
模塊處理掉)、未來一段時間業務的規模,系統穩定性、架構擴展性等。
這些問題確定後,會有一系列的技術方案成爲技術選型。那麼如何判斷採用什麼技術方案,當時不是最新最酷最好的,要考慮將來部署環境,上下游環境。最重要的這是一個分佈式需求。簡單來說,N臺服務器維護一個QPS值,這後面的分佈式理論,樸素來說就是CAP,在CAP三者不能同時滿足的情況下,應該降低那個並保證業務的目標。爲此,我們參考分佈式的BASE模型,降低了一致性的需求,採用分區和主體配額池結合的思路解決了大租戶的流量控制,而針對長尾租戶採用了另一套控制來保證精確限流。同時考慮第三方模塊和非關鍵模塊掛掉或者降級中的應急預案,以及模塊部分宕機或者機房斷電導致的服務不可用,以及某些服務的單點問題而設計完整的穩定性方案。當然最後還要考慮擴展性方案,如果需求規模突然變大,但是整體是有邊界的。總結起來,整個項目要有明確的目標和階段對應的關鍵指標,做到可觀測、可評估、可擴展、可恢復、以及容易交付給其他人繼續研發和維護。我不認爲自己做的好,但是當逐步完善一個系統時,真的挺快樂的。

如何學習?
持續的思考和以開放的態度和其他同學溝通非常重要,互通有無。我覺得我目前最大的
優勢可能還是在工程領域,主要是服務後端開發和數據平臺管理這邊,主要是思考和經
驗比較多。我會在理論和實踐兩個方面繼續增強自己的能力。與此同時,我一直在儲備
自己在人工智能方面的知識。得益於我博士論文期間在信息檢索方面的思考,我很早
就發現了這個能讓我着迷的領域。
這裏稍微聊兩句人工智能領域,雖然一些人說這裏面也就是所謂的調參、特徵工程、訓
練深度網絡等。這些真的是門外漢纔會這麼說。真正裏面需要的是理性的思維,解決這
種沒有明確路徑可循的問題需要非常深入的思考、嘗試,經歷無數次失敗可能有一點
小收穫,還要把這種小收穫用最精確的數學語言闡述出來,爲後續的研發鋪平道路。

目前我剛剛讀完NLP領域的一本綜述——《統計自然語言處理》,正在重新構建自己的概率論和統計學的知識體系,儘量做到基本的概念信手拈來,然後找一個小的領域進行深入的思考和嘗試。對於我來說,找一個點建立一個模型,改改參數出一篇論文的誘惑不大,我希望能夠研究前人的研究成果,在理論深度有一定的突破。

在這個領域,那些談35歲就轉管理的程序員可能根本就無法明白。當遇到一個可以持續投入精力去鑽研,並且越鑽研覺得越難的事情的時候,對於我來說,何其幸運。更何況,我不認爲做到35歲轉管理是必要的。管理並不好做,很多人以爲管理就是分配工作,技術人員都是心高氣傲之輩,能力低的根本領導不了,只能領導能力更低的。而且真正的管理和寫代碼一樣,也是一門學問,一門理論與實踐相結合,需要邊探索邊實踐的學問。人家讓你領導,是把自己的發展託付到你的手裏,所以是更重的責任。
總結下來就是: 持續解決問題,持續思考,持續以開放的態度與同學交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章