不止代碼,職業發展黃金手冊

花了小半天時間,讀完了阿里人出品的《不止代碼,職業發展黃金手冊》,記錄下其中的諸多閃光點。

如何快速成長爲技術大牛?

做的更多,做的比你主管安排給你的任務更多。

  1. 需求分析的時候更加準確,能夠在需求階段就識別風險、影響、難點

  2. 問題處理的時候更加快速,因爲相關的業務和代碼都熟悉,能夠快速的判斷問題可能的原因並進行排查處理

  3. 方案設計的時候考慮更加周全,由於有對全局業務的理解,能夠設計出更好的方案

熟悉端到端,熟悉更多的系統、業務、代碼

自學更多,比如垃圾回收等應用到項目中

Do better

    比如重複代碼太多,是否可以引入設計模式?

   系統性能一般,可否進行優化?

    目前是單機,如果做成雙機是否更好?

     版本開發質量不高,是否引入高效的單元測試和集成測試方案?

     目前的系統太龐大,是否可以通過重構和解耦改爲3 個系統?

     阿里中間件有一些系統感覺我們也可以用,是否可以引入 ?

如何避免讓戰術上的勤奮掩蓋戰略上的懶惰

關鍵問題點:

    爲什麼你的知識積累不了?

    同樣實踐,效果不一樣?

    知識+ 邏輯就基本等於你的能力

    好的邏輯又怎麼來?●● 實踐●● 覆盤

大學畢業5 到10 年teamLeader需要的技能:

●● 能對所負責領域的業務特點、發展趨勢、友商競爭分析有很好的洞察?能知道這個業務領域的客戶是誰?他們的需求是什麼?他們的痛點是什麼?所以,這個TL 應該需要學習《諮詢的奧祕》、《探索需求》、《系統化思維導論》。對於技術型的TL,還應該瞭解《成爲技術領導者:掌握全面解決問題的方法》。

●● 服務於特定領域的客戶,我們需要能瞭解我們的客戶企業架構、業務知識。要了解清楚規劃的產品、服務,什麼纔是客戶所需要的。那麼,從理論上,我們是否應該學習一些TOGAF、NGOSS、ITIL 等業務理論以及業務知識?

●● 作爲 TL, 是否有必要能將自己對於市場的洞察轉換成業務規劃,並能向自己的老闆(或者投資人)說清楚、講明白?並爭取到老闆的同意,包括資金、人力資源等。對於,能否把事情講明白,我們可能需要學習《金字塔原理》,並能非常清晰、有邏輯性地進行表達與溝通。當然,有些業務發展的事不一定特別有邏輯,是需要摸索、嘗試,那麼你是否能將一個不確定的領域說服老闆並獲得支持,我們又需要什麼?《博弈論》、《影響力》等。

●● 獲得老闆支持後,就需要開始帶着兄弟們幹活了。作爲帶頭人,你看我們是否需要能將業務趨勢、客戶痛點進行業務建模好讓團隊的PD、技術都能理解?

在做業務進一步深入分析,可能就需要學習《領域驅動設計: 軟件核心複雜性應對之道》、《實現領域驅動設計》、《企業應用架構模式》、《恰如其分的軟件架構》等等。

●● 做完業務設計後,開始要帶着團隊做技術方案設計、接口設計以及編碼實現等。這個過程,TL 又需要具備軟件項目管理的能力。無論是《PMBOK 指南》,還是《敏捷軟件開發》、《人月神話》、《程序開發心理學》,相信總歸還是會有點幫助的。

●● 對於一些有國際化要求的公司,還需要再學習英語吧!

●● 嗯,還需要有個好的身體,還需要經常鍛鍊,學習科學的健身吧。至少我明白了一個道理,以前我都是跟自己說,等這段時間過了,閒下來去鍛鍊一下。其實,我發現,越是忙的時候,越需要鍛鍊身體!

●● 另外,在這 10 年內,比較關鍵的是——你還經歷過什麼有挑戰的業務、技術、產品、平臺等方面的成功與失敗經驗?在這些經歷裏,你可能會遇到這些困難與挑戰:團隊磨合的挑戰、技術方案上的爭執、平臺優先 or 業務優先的博弈、低落的團隊氛圍、個人的低谷等等。這些困難與挑戰,你是退縮了?還是有成長?在帶團隊時,再次面臨這些挑戰時,這時你是否有解或者有勇氣了?

技術變化那麼快,程序員如何做到不被淘汰?

業務、技術與軟件系統的價值鏈

 

通俗的講業務就是用戶的痛點,是業務提供方(比如公司)的盈利點。而技術則是解決問題的工具和手段。

架構師需要審時度勢,仔細衡量正確性、大規模、可用性三者的關係

程序員想要工作出業績,必須認清楚系統背後的業務價值,按價值去梳理工作優先級,而不是像我一般過度糾結細節,追求技術理想化從價值出發-找尋學習與工作的新思路,明確自身的業務相關主體,向前一步,爲更大的價值負責,像架構師一樣思考,用價值找尋重心,學會連接,構建體系。

加班越久故障越多,如何跳出程序員的惡性循環?

解決方案落地和數據運營需求細化解決方案:

● 拆分成最小可交付產出,儘量避免一個需求做了 1 個多月,纔去找PD 和用戶驗收。

● 隨時擁抱用戶:迭代式產出,交付即驗收,讓不準確性降到最低,在錯誤誤差最小的時候修正。

●重點跟進質量管理和運營:透明數據,鼓勵團隊儘早儘快修復 bug,並有嚴格的上線前bug 解決率標準。

● 盡全力保證線上發佈成功率。

如何進一步提升?

數據有魅力,研發數據也一樣,我們使用它就是爲了兩個目的:一是保證質量;二是確保交付的速率。

如何在阿里技術面試中脫穎而出?

度量優秀人才的3個關鍵:技能,潛力,軟實力

軟實力這裏其實包含了性格,執行力,領導力等方方面面,它代表了候選人

是否能快速融入團隊,拿到結果,帶領團隊攻城拔寨,激勵和影響身邊的人變得更加優秀等等

面試應該做的事

● 問已經發生的事情

● 問題解決思路

● 少問多聽

在招聘中有一個重要的STAR 原則:

STAR 原則

●處境 (situation) 在什麼樣的環境下

● 任務 (task) 接到了什麼樣的任務

●行動 (action) 然後具體怎麼落地的

●結果 (result) 拿到了什麼結果

我們儘量問清楚對方在什麼樣的環境下接到這個任務,接到以後是做了什麼事情,最後的結果是什麼樣子的。

鑑別方式

● 更多的關心What/How/Why

● 細節!細節!細節!

技術人如何不斷成長?

● 保持良好的習慣,不忘總結和提升

使用開源項目的正確姿勢,血和淚的總結

選:如何選擇一個開源項目?

聚焦是否滿足業務?

 

聚焦是否成熟

用:如何使用開源方案?

深入研究,仔細測試

可以從如下幾方面進行研究和測試:

1)通讀開源項目的設計文檔或者白皮書,瞭解其設計原理

2)覈對每個配置項的作用和影響,識別出關鍵配置項

3)進行多種場景的性能測試

4)進行壓力測試,連續跑幾天,觀察cpu、內存、磁盤io 等指標波動

5)進行故障測試:kill,斷電、拔網線、重啓100 次以上、倒換等

小心應用,灰度發佈

做好應急,以防萬一

改:如何基於開源項目做二次開發?

保持純潔,加以包裝

發明你要的輪子

前端工程師的未來在哪裏?

觀點

1. 繼續分化(領域、行業、技術棧)

2. 繼續融合(端技術、Web 全棧技術、人工智能與端技術)

3. 核心不變(計算機科學本質、軟件工程思想與實踐、程序員職業素養)

 

相關資源

●Web開發這十年:http://www.infoq.com/cn/articles/web-development-ten-years

●GUI應用架構十年變遷:https://segmentfault.com/a/1190000006016817

●大話前端時代一:https://halfrost.com/vue_ios_modularization/

●寫給初學前端工程師的一封信:https://zhuanlan.zhihu.com/p/28536429

●母雞與前端工程師:http://www.ruanyifeng.com/blog/2016/07/hen-andfront-end-engineer.html

●李開復人工智能預言:http://tech.sina.com.cn/it/2017-05-20/doc-ifyfkqks4361454.shtml

●《無界面交互》:https://book.douban.com/subject/26947799/

前端 Leader 如何做好團隊規劃?——阿里內部培訓總結公開

●業務壓力巨大,前端是瓶頸,如何做合適的規劃?

●如何提高規劃的成功率?

● 規劃的雷區是什麼?

●如何尋找規劃的線索?

●我的老闆不是前端,如何做出被認可的成績?

 

一般技術規劃路徑如下:

一、先從團隊特徵說起

1. 識別團隊特徵

如何做?

●尋找團隊共同目標

●增強團隊協同

●明確清晰短期目標與長期目標

從團隊特徵中尋找規劃的邊界:

 

二、尋找規劃線索

 

1. 向上管理

與老闆注意溝通的有效與質量,提問題最好帶着初步的解決方案,業務/ 產品老闆的時間有限,又存在“語言差”,相對複雜的內容務必準備 PPT。

2.腦暴共創

3. 關注業務痛點

三、價值聚焦

1. 前端規劃四問

1. 要解決什麼核心業務問題?

2. 創造什麼核心價值?

3. 爲什麼要做這件事?爲什麼是我們做?

4. 是單點,還是相對通用?

5. 以什麼樣的模式和方式來解決問題或創造價值?

6. 業務邊界,系統邊界如何取捨?

7. 問題在集團的大圖位置和現狀是什麼樣的?

8. 優勢?劣勢?

9. 終局思考和實現路徑是什麼樣的?

結合前端,我個人認爲有核心四問:

1. 做成了會如何?(核心價值、終局構想)

2. 是我團隊最重要的事嗎?

3. 有沒有更簡單的方案?

4. 與業務的鏈接是什麼?

2. 來自大牛靈魂的拷問

● 要讓評審者學到點什麼

● 在前端技術的橫向影響

● 對業務中其他角色或業務的影響

● 對未來的判斷

● 是否是重複造輪子

● 是否是“技術投機”,缺乏業務場景適用性思考

3. 規劃推導

規劃推導分正推:從線索-> 本質痛點或問題-> 解決方案-> 目標,反推:從目標-> 解決方案-> 本質痛點或問題-> 線索。

所有的線索都是現象,你需要去剖析現象背後本質,思考:

●什麼問題導致了出現這些現象?

●痛點夠不夠痛?

解決方案的設計要思考:

●調研是否充分,集團是否有現成方案?

●是自己做,還是引進?還是引進後二次定製?

●預計投入資源,投入產出比如何?

目標的設計要思考:

●能夠體現規劃價值

● 可量化,可衡量,有影響

●可達到

一般寫規劃時候,我們是先寫目標,再寫解決方案,而在實際推導規劃時,一般是有個大概的解決方案,然後預判可能達到的目標。

 

4. 控制力

四、規劃落錘

● 規劃內容按照重要性排序

●產出規劃 PPT

● 產出關鍵里程牌時間點

● 排兵佈陣、資源調度

1. 長期規劃

明確團隊技術體系的演進方向,窮盡所有高價值的事,每個季度覆盤調整這張大

圖,讓團隊有共同的目標。

拔赤老師建議“ 技術規劃以一年爲最小單位,每季度做詳細覆盤,跟的勤,就不

怕跟丟”。

2. 勇氣與吸引力法則

吸引力法則(你關注什麼,就會將什麼吸引進你的生活)告訴我們,有勇氣去要

求,篤定你的判斷,有策略的執行,周圍自然會發生你所希望的變化。所以關注於對

的事,別被困難嚇倒。

一位優秀前端的自我修養

編程能力,就是用代碼解決問題的能力,你編程能力越強,就能解決越複雜的問題,細分又有調試、算法、數據結構、OS 原理等這些的支撐架構能力,則是解決代碼規模的問題,當一個系統足夠複雜,你會寫每一塊,能解決每一個問題,不等於你能搞定整個系統,這就需要架構能力,

架構能力包含了一些意識,比如解耦、接口隔離,也包含認識業務建立抽象模型,也有一些常見的模式,比如經典的 MVC,還有設計層面,面向對象、設計模式等等。

最後工程能力,則是解決協作的問題,當系統規模更大,光靠一個人,是沒辦法完成的,如何保證幾個高手互相能夠配合好?如何保證項目裏面水平最差的人不拖後腿?這個工程化建設,往往會跨越多個業務,以彙報關係上的團隊爲單位來做。包括前後端解耦,模塊化,質量保證,代碼風格,等等。

如何建立自己的知識體系呢?我個人總結的經驗,是下面幾個步驟:

第一步,尋找線索。

第二步,是建立聯繫。

我們找對應關係的方式有以下幾個依據:

●美感

●完備性

●操作同一組數據

第三步,是分類。

第四步,是追本溯源。

能力培養其實重要性很高,但是其實說起來,內容卻很少。只有兩點: 教材、訓練。

如果面臨困境,可以選擇系統訓練來提升自己,但是對大部分人來說,可能更樂於選擇一個一個變通的辦法: 養成習慣,讓工作變得更有挑戰。

選擇一份對自己來說具有挑戰性的工作,正面解決問題。

如何成爲一名頂尖的阿里架構師?

專職架構師的職責

微軟對架構師有一個分類:企業架構師EA(Enterprise Architect)、基礎結構架構師IA(Infrastructure Architect)、特定技術架構TSA(Technology-Specific Architect) 和解決方案架構師SA (SolutionArchitect)。這個分類是按照架構師專注的領域不同而劃分。在阿里除了EA 之外的領域大家可能會同時涉及到,只是不同的時期偏重點不一樣。

職責一:全局的技術規劃

職責二:統一的方法& 規範& 機制

職責三:完備的基礎構建

職責四:落地的規劃纔是架構

專職架構師的權利

專職架構師的考覈

考覈一:全局的技術規劃

考覈二:統一的方法& 規範& 機制

考覈三:完備的基礎構建

考覈四:落地的規劃纔是架構

從無到有的是架構;從表到裏的是抽象;從粗到細的是設計

哪些技術好書值得一讀再讀?這有一份經典書單

  1. 推薦書籍:《Effective Software Testing》
  2. 推薦書:《程序員修煉之道- 從小工到專家》
  3. 推薦書籍:《設計模式之禪》
  4. 推薦書籍:《Spoken Language Processing: A Guide to Theory, Algorithm and System Development》
  5. 推薦書籍:《機器學習導論》
  6. 推薦書籍:《Reinforcement Learning: An Introduction》本書是強化學習領域的最經典書籍,它既是初學者打好強化學習基礎的必讀著作,也是強化學習研究者們需要溫故而知新的強化學習寶典。該書的作者Richard S. Suttion 和Andrew G. Barto 是強化學習頂尖學者的代表,在此領域深耕超過30 年。這本書詳細地介紹了強化學習發展歷程、經典方法以及現實應用。
  7. 推薦書籍:《Programming Rust》系統編程——也就是在資源受限情況下,實現安全、穩定和高性能(併發)系統——並不爲大部分程序員所熟知。Rust 是一門新興的系統編程語言,它爲安全性和併發而設計,提供高層的抽象,同時有C/C++ 的性能。
  8. 推薦書籍:《Machine Learning: A Probabilistic Perspective》大數據公司的每一個項目都需要自動化的數據分析方法。機器學習提供了相應的解決方案,不僅可以自動檢測數據中的模式,也可以使用學習到的模式來預測未覆蓋到的數據。推薦書籍:《Architecture of a Database System》此書是數據庫圖靈獎獲得者Stonebraker 老爺子在2007 年完成的,全書不長(119 頁),但極具功底。老爺子通過此書,向大家剖析了一個成熟數據庫系統的整體架構,以及數據庫的各個核心模塊,包括:SQL 與優化器、內存和存儲管理、事務和併發控制等的設計原則和實現方式,是全面瞭解數據庫系統的第一選擇。
  9. 推薦書籍:《從優秀到卓越》
  10. 推薦書籍:《爲什麼精英都是時間控》
  11. 推薦書籍:《創新者的窘境》
  12. 推薦書籍:《魔鬼經濟學》提高我們在日常中提升思考深度很有幫助
  13. 推薦書籍:《孫子兵法》從道,天,地,將,法的角度來觀察戰略與兵勢,是古今中外通用的道理,這本書屬於讀一本書可以代表一百本書的典範。
  14. 推薦書籍:《創造自然》
  15. 推薦書籍:《浮生六記》

 

--完--

 

 

 

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