做碼農差不多十五年了,聊聊程式設計師十五年內職業生涯規劃,共勉之
 前言 很多人以為技術人員可以做一直做下去,但是最近我發現這個觀點不完全正確,因為能一直做下去的技術人員非常稀少,因為不同的年齡段,公司對技術人員的要求會不一樣,如最近傳言華為計劃裁掉40歲以上的程式員,首先我認為肯定不會裁掉所有40歲以上的技術人員,如CTO或高階技術專家不會被開,因為他們達到了40歲技術人員應該達到的能力,而那些沒有達到該年齡段能力的技術人員會被淘汰。 為什麼現在各大公司招技術人員這麼難還會有公司裁員呢? 因為公司需要換血和降低成本。換血意味著希望進入一些新鮮或者優質血液,讓團隊能正向發展,新鮮的血液積極性高,潛力好,如剛畢業的學生或工作幾年的技術人員。優質的血液,意味著技術能力強,能影響團隊技術方向,如某個領域的技術專家,能影響團隊事倍功半。 如果你是公司老闆,一個工作三年的技術人員和一個工作10年的技術人員能力差不多,而三年的更有技術激情,十年的還要照顧家庭,工資還比三年的多幾倍,你會選擇留下哪一個呢?是不是會開掉10年的技術人員,再招聘幾個三年的呢?這就是現實的殘酷。那個十幾年工作經驗的技術人員離職後開始找工作,但是找到合適的工作會非常困難,首先你的工資基數很大,你期望下家公司能給你更高的薪水,新公司也會考慮招聘你的投入產出比。 所以技術人員需要居安思危,不要被眼前的高薪衝昏了頭腦,小富則安是短暫的,逆水行舟才是技術人員走的路,所以我認為技術人員需要以五年為一個技術週期,每個技術週期上都要上升一個技術層級,否則隨時可能會被淘汰掉,各層級建議和要求如下: 應屆生 - 紮實的技術基礎,有技術熱情。應屆生技術人員我建議進入BAT這樣的大型網際網路公司,雖然辛苦點,但是工作幾年後,技術能力和視野會大於很多工作10年的技術人員。 注意點:系統化的學習技術,研究技術而不是使用技術。 工作5年 - 在技術上做到知其然知其所以然,對用過的技術框架都能知道技術原理和優缺點,多實戰少紙上談兵,學會總結。具備獨立分析和解決技術問題的能力。 注意點:很多候選人用過N年JDK,就認為自己精通JAVA,但是面試的時候發現JDK的原始碼都沒看過。我面試阿里的時候,也不明白為啥要問JDK原始碼或垃圾回收機制,但是當我去解決複雜的線上問題時,我才發現對原始碼或原理不熟,很難查到問題所在。如果你在小公司或非網際網路公司沒有這樣的技術場景,可以嘗試提高下業務架構能力或者利用業餘時間實戰並鑽研技術。 工作十年 - 有大型系統架構經驗和技術亮點。架構經驗需要在大公司有實戰經驗。技術亮點就是在某個技術上達到專家級別,當同事遇到某個技術問題會來諮詢你,比如遇到Redis問題解決不了時會來找你。短短几句話要求非常高,招聘的時候很多技術人員都卡在這個階段,需要有很好的技術積累和背景。 注意點:很多技術人員開始轉向管理,結果技術和管理都是半桶水,技術首先要達到一定的深度再考慮管理方向。小公司技術總監,技術停留在用,很多技術原理都不知道,如何做技術規劃呢? 工作十五年 - 要有很強的業務和技術規劃能力,在公司內有影響力,可以影響團隊和公司的技術發展方向。也可以嘗試換下工作,去成長性好的公司做技術總監,擴充套件下技術視野。 十五年以上 - 這個我說不好,歡迎通過評論提建議。 如何進入BAT 達到以上要求就可以進入BAT,但是我分析了下最簡單進入BAT的方式是工作5年以內的技術人員,因為應屆生要求TOP院校的TOP學生,工作八年以上的要求又非常高。 主要用到的技術棧 面試大公司基本都會問的技術,也是大公司經常用到的一些技術 效能調優 效能優化如何理解 效能基準 什麼是效能優化 衡量標準 JVM調優 jvm虛擬機器的記憶體解析 垃圾收集器 實戰調優案例與解決方案 JVM執行時區 Java程式設計師效能優化 優雅的建立物件 注意物件的通用方法 類的設計陷阱 泛型需要注意的問題 java方法的那些坑 程式設計的通用規則 Tomcat 執行緒模型分析 生產環境配置及調優 執行機制及框架 Mysql 探析BTree機制 執行計劃深入分析 Mysql索引優化詳解 慢查詢分析與SQL優化 應用框架原始碼解讀 Spring IOC/">IOC Spring Aop Spring MVC Spring5的新特性 Mybatis Spring IOC SpringFrammework體系結構 原始碼分析 BeanFactory原始碼分析 BeanDefiniton原始碼分析 Bean生命同期 依賴實現 Spring Aop Aop原始碼分析 transaction事物分析 Springcache框架原始碼分析 Spring MVC MCV簡介與設計思想 SpringMVC組成 原始碼解讀DispatchServlet Spring5新特性 容器增加 函數語言程式設計 webFlux模組介紹 kotlin介紹 Testing改進 相容性問題 Mybatis mybatis組成 核心原始碼分析 手寫Mybatis 分散式架構 網際網路分散式架構是非常重要的一個技術,基本上所有的大公司都會用分散式 分散式架構思維 大型網際網路架構演進過程 架構師應具備的分散式知識 主流分散式架構設計詳解 架構開發基礎 多執行緒開發 高效能NIO框架 架構核心服務層技術 服務的前世今生 深入理解通訊協議 基於 分散式RPC解決方案 dubbo全解析 架構關鍵基礎設施 分散式環境指揮官zookeeper 分散式訊息通訊非同步與MQ 分散式快取 資料儲存SQL&NoSQL 高併發分流技術Nginx 分散式解決方案 分散式解決方案 Session跨域共享實戰 分散式事物解決方案實戰 分散式鎖解決方案實戰 分散式單點登入實戰SSO 分散式排程任務系統 分散式配置中心 微服務架構技術 微服務這塊應該不用多說了,知道微服務技術的至少能多加5k薪資 SpringBoot SpringCloud Docker虛擬化技術 SpringBoot 與微服務的區別於聯絡 快速構建SpringBoot工程 SpringBoot核心元件剖析 快速整合mybatis實戰 快速整合Dubbo及案例實戰 構建整合 redis及案例實戰 構建Swagger外掛實現API 管理及介面測試體系 SpringCloud Zuul路由閘道器詳解原始碼探析 Ribbon客戶端負載均衡原理 Feign宣告式服務呼叫方式 Eureka註冊中心構件 Config配置服務中心 svn、git快速整合 Sleuth呼叫鏈路跟蹤 BUS訊息匯流排技術 Docker虛擬化技術 介紹、安裝與使用 compose部署指令碼 service服務編排 redis分散式叢集部署 docker file構建 通過maven外掛打包映象 部署及執行應用程式kubernetes編配 構建Mysql叢集實戰 高可用SpringCloud微服務與docker整合實現動態擴容實戰 團隊協作開發 這個是常用的開發工具類的,提升團隊效率 Git Maven Jenkins Sonar 加群:795632998,即可獲取往期Java高階架構資料、原始碼、筆記、視訊 Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、 高併發等架構技術,獲取以上資料 架構師視訊資料   