花了小半天時間,讀完了阿里人出品的《不止代碼,職業發展黃金手冊》,記錄下其中的諸多閃光點。
如何快速成長爲技術大牛?
做的更多,做的比你主管安排給你的任務更多。
-
需求分析的時候更加準確,能夠在需求階段就識別風險、影響、難點
-
問題處理的時候更加快速,因爲相關的業務和代碼都熟悉,能夠快速的判斷問題可能的原因並進行排查處理
-
方案設計的時候考慮更加周全,由於有對全局業務的理解,能夠設計出更好的方案
熟悉端到端,熟悉更多的系統、業務、代碼
自學更多,比如垃圾回收等應用到項目中
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 之外的領域大家可能會同時涉及到,只是不同的時期偏重點不一樣。
職責一:全局的技術規劃
職責二:統一的方法& 規範& 機制
職責三:完備的基礎構建
職責四:落地的規劃纔是架構
專職架構師的權利
專職架構師的考覈
考覈一:全局的技術規劃
考覈二:統一的方法& 規範& 機制
考覈三:完備的基礎構建
考覈四:落地的規劃纔是架構
從無到有的是架構;從表到裏的是抽象;從粗到細的是設計
哪些技術好書值得一讀再讀?這有一份經典書單
- 推薦書籍:《Effective Software Testing》
- 推薦書:《程序員修煉之道- 從小工到專家》
- 推薦書籍:《設計模式之禪》
- 推薦書籍:《Spoken Language Processing: A Guide to Theory, Algorithm and System Development》
- 推薦書籍:《機器學習導論》
- 推薦書籍:《Reinforcement Learning: An Introduction》本書是強化學習領域的最經典書籍,它既是初學者打好強化學習基礎的必讀著作,也是強化學習研究者們需要溫故而知新的強化學習寶典。該書的作者Richard S. Suttion 和Andrew G. Barto 是強化學習頂尖學者的代表,在此領域深耕超過30 年。這本書詳細地介紹了強化學習發展歷程、經典方法以及現實應用。
- 推薦書籍:《Programming Rust》系統編程——也就是在資源受限情況下,實現安全、穩定和高性能(併發)系統——並不爲大部分程序員所熟知。Rust 是一門新興的系統編程語言,它爲安全性和併發而設計,提供高層的抽象,同時有C/C++ 的性能。
- 推薦書籍:《Machine Learning: A Probabilistic Perspective》大數據公司的每一個項目都需要自動化的數據分析方法。機器學習提供了相應的解決方案,不僅可以自動檢測數據中的模式,也可以使用學習到的模式來預測未覆蓋到的數據。推薦書籍:《Architecture of a Database System》此書是數據庫圖靈獎獲得者Stonebraker 老爺子在2007 年完成的,全書不長(119 頁),但極具功底。老爺子通過此書,向大家剖析了一個成熟數據庫系統的整體架構,以及數據庫的各個核心模塊,包括:SQL 與優化器、內存和存儲管理、事務和併發控制等的設計原則和實現方式,是全面瞭解數據庫系統的第一選擇。
- 推薦書籍:《從優秀到卓越》
- 推薦書籍:《爲什麼精英都是時間控》
- 推薦書籍:《創新者的窘境》
- 推薦書籍:《魔鬼經濟學》提高我們在日常中提升思考深度很有幫助
- 推薦書籍:《孫子兵法》從道,天,地,將,法的角度來觀察戰略與兵勢,是古今中外通用的道理,這本書屬於讀一本書可以代表一百本書的典範。
- 推薦書籍:《創造自然》
- 推薦書籍:《浮生六記》
--完--