做碼農差不多十五年了,聊聊程式設計師十五年內職業生涯規劃,共勉之

java天坑發表於2018-10-17
做碼農差不多十五年了,聊聊程式設計師十五年內職業生涯規劃,共勉之

前言

很多人以為技術人員可以做一直做下去,但是最近我發現這個觀點不完全正確,因為能一直做下去的技術人員非常稀少,因為不同的年齡段,公司對技術人員的要求會不一樣,如最近傳言華為計劃裁掉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優化

應用框架原始碼解讀

  1. Spring IOC
  2. Spring Aop
  3. Spring MVC
  4. Spring5的新特性
  5. 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薪資

  1. SpringBoot
  2. SpringCloud
  3. 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整合實現動態擴容實戰

團隊協作開發

這個是常用的開發工具類的,提升團隊效率

  1. Git
  2. Maven
  3. Jenkins
  4. Sonar

加群:795632998獲取往期Java高階架構資料、原始碼、筆記、視訊

Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、

高併發等架構技術,獲取以下資料

架構師視訊資料

15396704691659157597030
153967046918019c5064362
153967046906052e7af604f


相關文章