1. 程式人生 > >程序員為什麽會憂慮自己的未來?

程序員為什麽會憂慮自己的未來?

程序員


從去年開始,我參加了一些分享交流,也對外發過一些自己對工作所遇問題的思考。不少程序員加我好友咨詢問題,幾乎每個人問的問題都跟職業規劃有關。這提醒了我,其實我自己也一直在思考同樣的問題並嘗試規劃未來。於是想和大家分享一下自己在這方面的感悟。

本文僅從我自己的角度來剖析對程序員職業規劃的看法,並不全面。而下文中提到的程序員群體也泛指在一線具體執行編碼任務的程序員,不包含一些高精尖技術崗位的專業技術人才或是已經有自己明確職業規劃,已經進階成功的工程師。

什麽引發了焦慮?

互聯網是一個新興但高速發展的行業。新興意味著沒有那麽多的職場楷模給新人指明方向,也沒有一套公認的穩定可復制的職業發展路線。高速發展意味著變革與競爭,大量新人因為行業紅利湧入,你無時無刻要跟一群優秀的熱血青年同場競技。

互聯網行業工作強度很大,而中國的互聯網從業者更忙。程序員更是戰場中的排頭兵,身體健康的透支導致很難長期抗戰。當你意識到自己跟不上節奏的時候,不管是出於對身體狀況的擔憂,還是對未來潛在威脅的恐懼,又怎會不感到焦慮呢?

而程序員的職業特性加劇了這種焦慮,主要表現在以下幾方面:

一、程序員職業復利性較低。

什麽叫復利性?

就如同利息的計算方法一樣,在本金相同的情況下,復利獲得的利息回報要高於單利,而年期越長,復利效應越高。職業一樣有復利效應,一個復利高的職業在職業生涯中後期會展現出越來越高的價值。醫生、律師都是復利性很高的職業。

而程序員職業復利性較低,主要有兩個原因:

  1. 專業性強,通用性差。不同技術種類有著自己的技術棧,共用的只有設計思想、編程範式,基礎技術等通用知識。

  2. 在沒有明確規劃的情況下,大多數程序員日常工作積累的不是通用知識與綜合能力,而僅僅是某項技術的熟練度與經驗。這是根本原因。

這造成了一個問題——當職業生涯遇到瓶頸時,程序員很難完成一次完美的進階。讓我們分析下最常見的三類方案:

  1. 技術職位之間的轉崗。這是最普遍的一種情況,Android轉IOS,後端轉前端等都在此列。雖然設計原則、編程範式等技術知識是通用的,但作為一線的執行者,技術的熟練度才是影響你工作效率的最大因素,你必須對技術棧非常熟悉才能體現工作的專業度。 轉崗往往是無奈之舉。

  2. 技術轉產品/運營崗。很多工程師抱怨產品經理設計的產品有問題,邏輯不嚴密,用起來很別扭。但讓工程師做產品,問題一般會更多。為什麽呢?最大的原因在於程序員的思維模式或多或少會受到編程的影響,偏向理性與具象化,缺少了感性的察言觀色以及換位思考的能力。設計好一個產品,邏輯嚴密只是條件之一,但並不是最重要的條件。產品經理需要從用戶的行為中挖掘出用戶真正的需求,提煉歸納並設計成一個可用的產品。這是大多數程序員很難做好的事情。

  3. 技術轉管理崗。BAT都有自己的M崗位,高工都可以選擇是繼續走技術路線還是嘗試走管理路線。很多程序員安慰自己,哪天真寫不動代碼了,那我就做技術經理吧。但我認為管理崗的轉變比前面兩類都難。管理是一門很深的學問,執行和管理是兩回事,需要從根本上改變思維模式。評判一個工程師的好壞可以看工程師的產出,而評判一個管理者的好壞在於整個團隊的產出和效率。很多優秀的程序員自己技術能力很強,卻很難帶領整個團體一起向前進。

二、程序員職業的壁壘沒想象中高,魯棒性低。

魯棒性也指抗變換性,一個好的職業需要有高的魯棒性。大部分程序員把自己的職業與某項技能綁定。做過編程的都知道,一個高耦合低抽象的編碼魯棒性一定低。互聯網行業變化太快,回頭看下諾基亞的發展,Windows桌面應用開發,整個行業如同大浪淘沙。隨著雲平臺的崛起,公有化平臺的發展,API服務的開放,可以預見從業者的工作效率會大幅提高,同時很多職業可能會再次洗牌:基礎運維工程師,DBA,基礎算法工程師,安全工程師,圖像算法工程師,數據工程師等等都在此列。

從另外一個角度來說,假設你運氣很好,選擇了一項長期熱門的技術比如Web前端開發。但是因為行業紅利太高,無數聰明、努力、上進的熱血青年湧入其中。隨著社區的發展,在線教育的普及,達到同樣熟練度的時間越來越短,而熱門互聯網技術的發展是以月計,你需要花費大量的時間去學習積累新技術。新人與你的差距會越來越小,你會隨時面臨被超車的局面。這意味著,很多時候即使你認為自己經驗更豐富,能力更強,但你卻得不到理想的職位及薪資待遇。

三、程序員職業能撬動的價值有限。

這個概念受啟發於《格魯夫給經理人的第一課》一書。格魯夫試圖定量的分析經理人的產出,於是提出了一個公式:經理人的產出 = 他直接管轄部門的產出 + 他間接影響所及部門的產出。為了定量的分析職業的價值,我也引入了一個公式:產出的價值 = 他自身的產出 + 他直接影響部門的產出 + 他間接影響所及部門的產出

職業能影響的人越多,創造的價值越高,職業的上限價值也越高。

互聯網行業的供求關系以及價值體系,造成了一個現象:程序員供不應求使其入行薪資高,但是工作五年以上薪資趨向於穩定。對於絕大部分公司的絕大部分職位,當熟練度和經驗達到某一個閾值的時候,選擇成本是趨同的,自身效率提高所能帶動的價值提高已經很有限。正因為如此,從業者在享受了薪資高速增長之後,很難接受薪資增幅趨緩,職業生涯遇到瓶頸引發焦慮。

薪資發展

我的規劃是什麽?

分析了這麽多,我最想表達的意思是:所謂的穩定,是最大的謊言。在高速發展的行業,根本沒有一個穩定的職業。解決焦慮的最終辦法是重新定位自己的職業生涯,盡量不以所謂的熟練度和經驗作為自己的競爭力,將自己的職業生涯押註在某項低門檻的技術上,而是根據自身的情況,持續不斷提高綜合競爭力,加強自己的不可替代性。

首先我會分析自己的特點,這是建立與他人的差異性和自己獨特標簽的關鍵所在,也是最值得加強的地方。我最大的特點是什麽?

  1. 有野心。我不想選擇一種得過且過的生活,而會選擇一個產出價值更高的事情來做,影響更多的人,創造更高的價值。

  2. 會溝通。我溝通能力不錯,既可以對外談合作,又可以對內做管理。這會是我相對一般技術型程序員一個很大的不同。

  3. 專業強。在專業技能層面我有較深的認識與理解,雖然談不上頂尖,但我知道怎麽運用自己的知識能力找到最適合現狀的方法解決幾乎所有日常問題。技術積累永遠是我最核心的競爭力。

知道自己特點之後,我會以此為基礎來增強自己的不可替代性。不可替代性不僅僅只是基於個人的能力,還有這幾點是需要日常註意積累的:

  1. 健康的身體。在經歷過一次生病後,我更加意識到擁有一個健康的身體才是最重要的。積極健身可是我們青橙員工的必備素質。

  2. 思想與格局的高度。思想的高度並不是一朝一夕就能拔高的,而是在經歷了來自工作與生活的各種挑戰之後,靜下心來反思總結,從而慢慢積累並提升。

  3. 人脈與影響力。樂於記錄和分享自己的工作感悟。抓住向其他人學習的機會,比如參加一些會議或交流,不管是同行業還是其他行業的,都是很有必要的。人脈和影響力的積累與格局的高度也是相輔相成的,與某些方面比自己優秀的人交流往往會收獲滿滿。

當我有了明確的方向並且每天都能看到自己進步的時候,就會對未來充滿憧憬。我給自己未來的定位是做一名解決者。何謂解決者?面對未知或已知的問題,知道如何分析本質原因,制定並實施解決方案。附加打油詩一首:

文能設計定需求,武可寫碼做架構。

進做招商引融資,退做大V占風口。

產品體驗包上線,還要招人帶節奏。

總結

每個人的情況都是不同的,可以做出的選擇也有無數種。而我對這個問題的認知帶有很強的自我局限性,隨著自身的發展也許將來我的想法也會和這篇文章有出入。但是分析問題的方法是類似的,希望你在看完後會對職業規劃這件事有新的思考,我的知乎名是陳馳遠,歡迎加我討論。如果你覺得文章讓你有所收獲,轉發和打賞都是對我的鼓勵。

工程化專題

工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具。提升開發效率和團隊協作效率,讓自己有更多時間來思考

面向人群:具有1-5年工作經驗的人群

Maven

技術分享圖片

生成可執行jar、理解Scope生成最精確的jar

類沖突、包依賴 NoClassDefFoundError問題定位及解決

架構師必備之Maven生成Archetype

Maven流行插件實戰、手寫自己的插件

Nexus使用、上傳、配置

對比Gradle

Jenkins

技術分享圖片

搭建Jenkins自動部署環境

Jenkins集成maven、git實現自動部署

testpreproduction 多環境發布

Jenkins多環境配置、權限管理及插件使用

Sonar

技術分享圖片

使用Sonar進行代碼質量管理

關於代碼檢查工具FindBugs/PMD的運用

SonarQube代碼質量管理平臺安裝及使用

使用Jenkins與Sonar集成對代碼進行持續檢測

Idea與Sonar集合的使用

Git

技術分享圖片

什麽是Git以及Git的工作原理

Git常用命令Best practise(避坑教學)

Git沖突怎麽引起的,如何解決

架構師職責:Git flow規範團隊git使用規程

團隊案例分享(買不到才是最貴的)

技術分享圖片

技術分享圖片

1、掌握自動化部署技能;

2、對於來時小白可以快速提升

3、對於資深開發人群可以加分

源碼分析專題

詳細介紹源碼中所用到的經典設計思想,看看大牛是如何寫代碼的,提升技術審美、提高核心競爭力。

1-10年工作經驗的人群

幫助大家尋找分析源碼的切入點,在思想上來一次巨大的升華。知其然,並知其所以然。把知識變成自己的

常用設計模式

技術分享圖片

1、Proxy 代理模式

2、Factory 工廠模式

3、Singleton 單例模式

4、Delegate 委派模式

5、Strategy 策略模式

6、Prototype 原型模式

7、Template 模板模式

技術分享圖片

Spring5

技術分享圖片

1、IOC容器設計原理及高級特性

2、AOP設計原理

3、FactoryBean與BeanFactory

4、Spring事務處理機制

5、基於SpringJDBC手寫ORM框架

6、SpringMVC九大組件

7、手寫實現SpringMVC框架

8、SpringMVC與Struts2對比分析

9、Spring5新特性

技術分享圖片

技術分享圖片

MyBatis

技術分享圖片

1、代碼×××

2、MyBatis關聯查詢、嵌套查詢

3、緩存使用場景及選擇策略

4、Spring集成下的SqlSession與Mapper

5、MyBatis的事務

6、分析MyBatis的動態代理的真正實現

7、手寫實現Mini版的MyBatis

技術分享圖片

技術分享圖片

分布式架構

迎接高並發大數據的挑戰,從深度到廣度完善知識體系,成為下一個互聯網高薪人才。

理論結合實戰,透徹理解分布式架構及其解決方案。

面向人群

1、工作1-5年需要突破瓶頸;

2、傳統行業轉型進入互聯網行業的人群

分布式架構原理

技術分享圖片

1、分布式架構演進過程

2、如何把應用從單機擴展到分布式

3、CDN加速靜態文件訪問

4、系統監控、容災、存儲動態擴容

5、架構設計及業務驅動劃分

6、CAP、Base理論以及其應用

分布式架構策略

技術分享圖片

1、分布式架構網絡通信原理剖析

2、通信協議中的序列化和反序列化

3、基於框架的RPC技術Webservice/RMI/Hessian

4、深入分析Zookeeper在disconf配置中心的應用

5、基於Zookeeper實現分布式服務器動態上下線感知

6、深入分析Zookeeper Zab協議及選舉機制源碼解讀

7、Dubbo管理中心及監控平臺安裝部署

8、基於Dubbo的分布式系統架構實戰

9、Dubbo容錯機制及高擴展性分析

分布式架構中間件

技術分享圖片

1、分布式消息通信ActiveMQ/Kafka/RabbitMQ

2、Redis主從復制原理及無磁盤復制分析

3、圖解Redis中AOF和RDB持久化策略的原理

4、MongoDB企業級集群解決方案

5、MongoDB數據分片、轉存及恢復策略

6、基於OpenResty部署應用層Nginx以及Nginx+lua實踐

7、Nginx反向代理服務器及負載均衡服務配置實戰

8、基於Netty實現高性能IM聊天

9、基於Netty實現Dubbo多協議通信支持

10、Netty無鎖化串行設計及高並發處理機制

分布式架構實戰

技術分享圖片

1、分布式全局ID生成方案

2、Session跨域共享及企業級單點登錄解決方案實戰

3、分布式事務解決方案實戰

4、高並發下的服務降級、限流實戰

5、基於分布式架構下分布式鎖的解決方案實戰

6、分布式架構下實現分布式定時調度

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

微服務架構專題

技術分享圖片

圍繞微服務的通用模式,講解Spring Cloud的常見用法及原理。讓微服務的開發更加方便、快捷,讓微服務應用更加穩定、可用。

理論結合實戰,透徹理解分布式架構及其解決方案。

面向人群

1、工作1-5年需要突破瓶頸

2、傳統行業轉型進入互聯網行業的人群

在技術深度和技術廣度上得到飛躍的提升。成為互聯網行業所需要的IT型人才

微框架

技術分享圖片

1、與微服務之間的關系

2、 熱部署實戰

3、核心組件Starter、Actuator、AutoConfiguration、Cli

4、集成Mybatis實現多數據源路由實戰

5、集成Dubbo 實戰

6、集成Redis緩存實戰

7、集成Swagger2構建API管理及測試體系

8、實現多環境配置動態解析

Spring Cloud

技術分享圖片

1、Eureka註冊中心

2、Ribbon集成REST實現負載均衡

3、Fegion聲明式服務調用

4、Hystrix服務熔斷降級方式

5、Zuul實現微服務網關

6、Config分布式統一配置中心

7、Sleuth調用鏈路跟蹤

8、BUS消息總線

9、基於Hystrix實現接口降級實戰

10、集成Spring Cloud實現統一整合方案

Docker虛擬化

技術分享圖片

1、Docker的鏡像、倉庫、容器

2、Docker File構建LNMP環境部署個人博客Wordpress

3、Docker Compose構建LNMP環境部署個人博客Wordpress

4、Docker網絡組成、路由互聯、Openvswitch

5、基於Swarn構建Docker集群實戰

6、Kubernetes 簡介

漫談微服務架構

技術分享圖片

1、SOA架構和微服務架構之間的區別和聯系

2、如何設計微服務及其設計原則

3、解惑Spring Boot流行因素及能夠解決什麽問題

4、什麽是Spring Cloud,為何要選擇Spring Cloud

5、基於全局分析Spring Cloud各個組件所解決的問題

技術分享圖片

深入淺出性能優化

技術分享圖片

理解性能優化

性能基準

性能優化到底是什麽

衡量維度

JVM調優

知其然,知其所以然

詳解什麽是JVM運行時數據區

詳解什麽是JVM內存模型JMM

詳解GC可達

詳解各垃圾回收器使用場景

實戰MAT分析dump文件

Tomcat調優

How if works探查Tomcat的運行機制及框架

分析Tomcat線程模型

Tomcat系統參數認識及調優

基準測試

MySQL調優

理解MySPL底層B+Tree機制

SQL執行計劃詳解

索引優化詳解

SQL語句優化

技術分享圖片

電商項目實戰

技術分享圖片

大型電商分布式系統應用實踐,利用雲服務器搭建真實的開發和部署環境,千人在線參與開發。

由淺入深的,帶你從零到項目發布上線與運維,讓你體驗真實的企業級項目開發過程,掌握大牛的編碼思維、經驗與技巧。

1、具有1-5年工作經驗的人群。

2、具備獨立開發和搭建分布架構系統的能力。

3、學習完後相當於具備2年以上互聯網開發經驗。

用戶認證

用戶註冊

SSO單點登錄

第三方登錄

UI頁面攔截

業務攔截

技術分享圖片

店鋪、商品

聚合檢索

動靜分離

店鋪管理

商品管理

技術分享圖片

技術分享圖片

訂單、支付

訂單號統一生成規則

下單流程管理

庫存管理

購物車

優惠券支付

積分支付

第三方支付

技術分享圖片

數據統計分析

用戶行為分析

行業分析

區域分析

技術分享圖片

通知推送

融雲推送

消息中間件

用戶群聊

點對點聊天

文件斷點續傳

技術分享圖片

想要學習以上課程加Q3064833410咨詢

java架構多線程高性能交流群:454377428


程序員為什麽會憂慮自己的未來?