阿里P8架構師講述:3—5年程序員的發(fā)展和出路在哪里?
工作3—5年后,程序員們的成長將邁入一個全新階段。這既是程序員們的黃金時期同時又是最迷茫的時期,因為大家必須要要思考一下今后的職業(yè)方向。
3—5年程序員的發(fā)展和出路在哪里?
是繼續(xù)做技術人,還是向管理者發(fā)力?是繼續(xù)留在大公司,還是轉投潛力小公司?如果沒有核心競爭力,入行一兩年的新程序員朋友是可以替代你大部分工作的,而且薪資還低,要怎么辦,何去何從?
中堅力量的程序員們,是相對穩(wěn)定的一群人,整體跳槽率低于三年以下經(jīng)驗的程序員,但是結合開頭的迷茫,這個穩(wěn)定其實也有點尷尬。
5年的程序員們正在面臨的窘境是,必須快速成長,成為技術總監(jiān),否則很可能會被0—3年物美價廉的程序員替代。
那么程序員究竟要有怎樣的核心競爭力,才能不迷茫,完成進階呢?
1、從思維角度理解
正確認識自己
很多人會笑?最了解自己的人當然是自己。沒錯,但正視自己的優(yōu)缺點,客觀做出正確的選擇卻很難。
有了5年的工作經(jīng)驗之后,你應該非常清楚自己適不適合IT這個行業(yè),并且對于自己將來走技術路線比如成為架構師;還是走管理路線比如成為CTO還是創(chuàng)業(yè)有一個大致的思考。
但是這些必須基于你對自己的了解,如果你性格非常內(nèi)向,不喜歡和別人溝通,但做事有條理,無瑕疵主義,細心嚴謹,就算不為了工作自己也會寫開源代碼,并且樂在其中,說明你很適合做技術方向,想要做管理崗位還需要更多磨練。
回歸編程的本質
讓我們回歸編程的本質,重新去理解程序員這個職業(yè)。
很多人認為程序員只要能按照需求寫代碼就可以了。雖然這也沒什么錯,但以上的工作,即使你完成了,依然很難拉開你與別人的差距,拔高自己。
有三點建議:
(1).用代碼解決問題
寫代碼的最終目的什么?是為了產(chǎn)品的誕生。對產(chǎn)品功能進行分析、思考、代碼落地的能力是重中之重。
寫代碼不是在完成一個任務,而是在解決一個問題,你需要了解清楚這個問題的前因后果,調(diào)查清楚同類問題的相同點、關聯(lián)性、痛點,舉一反三,真正去解決問題所以程序員不就能之糾結于代碼是否寫得漂亮,而應該落實到它是否能解決問題。
(2).理解產(chǎn)品和用戶
記得知乎上有一個問題是,程序員應該給產(chǎn)品提建議么?當然應該,不是有句話說,人人都是產(chǎn)品經(jīng)理嗎?何況還是和產(chǎn)品經(jīng)理并肩作戰(zhàn)的程序員。
程序員不僅要提建議,還要給出自己對產(chǎn)品的思考、理解、規(guī)劃。代碼寫出來的是是實實在在的產(chǎn)品,只有理解產(chǎn)品和用戶才能真正生動起來。
(3).商業(yè)思維
我們要從更高層面去看待和理解編程的工作。
我國不像美國那樣有那么深的技術積累,在技術創(chuàng)新方面的能力遠遠落后于它,所以我國的互聯(lián)網(wǎng)產(chǎn)品更多是商業(yè)模式的創(chuàng)新,而非技術創(chuàng)新。
程序員所掌握的技術的淘汰速度可能還沒有商業(yè)模式淘汰的速度快,商業(yè)模式的快速進步和更新必然要求技術能夠快速更新以支持其發(fā)展。
2、從技術方面入手
在BAT這樣的公司里,商業(yè)上的變化非常之快,要求技術體系能夠適應這樣的變化,直接導致了幾乎所有的架構體系都不停地往通用性、擴展性方向發(fā)展,都以提供商業(yè)能力為自己的最終目標。如果沒有商業(yè)思維,如何去理解和更新龐大的技術體系呢?
技術為商業(yè)服務、商業(yè)推動技術進步,這是互聯(lián)網(wǎng)公司的基本法則。商業(yè)思維的一個體現(xiàn),可能就是前瞻性了。能看到未來的技術需求和發(fā)展方向,你就是行業(yè)專家了。
現(xiàn)如今互聯(lián)網(wǎng)最火十分新的技術知識有哪些呢?
根據(jù)阿里巴巴的面試入職標準定義
1.架構師筑基專題
(1)并發(fā)編程
并發(fā)編程幾乎是所有互聯(lián)網(wǎng)公司面試必問問題,并發(fā)編程是Java程序員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對計算機較底層的運作原理有深刻的理解,同時要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程并發(fā)程序。目前網(wǎng)上沒有系統(tǒng)的全面的并發(fā)編程學習大綱,我搜集了很多資料總結出來一個最全面的學習大綱:
(2)JVM性能調(diào)優(yōu)
性能一直是讓程序員比較頭疼的問題。當系統(tǒng)架構變得復雜而龐大之后,性能方面就會下降,特別是阿里巴巴這樣的一線互聯(lián)網(wǎng)公司最為注重,因此想進入阿里,性能優(yōu)化一定是要去深入學習與理解的一環(huán),本人在性能優(yōu)化這一塊雖然不能算專家,也可以自信的說是精通了(注意:自己的簡歷上一定不要寫精通xxxx,要不然面試官會懟死你。好在本人這一塊還算自信)
(3)網(wǎng)絡編程和高效IO
(4)Tomcat進階解析
(5)MySQL深度優(yōu)化,Linux基礎及進階以及設計模式實戰(zhàn)
2.開源框架解析專題
閱讀、分析源碼是程序員最基本的碼代碼能力也是碼農(nóng)的根本所在,學習經(jīng)典源碼中所用到的經(jīng)典設計思想及常用設計模式,能夠幫你了解大牛是如何寫代碼的,從而吸收大牛的代碼功力。在阿里面試中,MyBatis,Spring等框架的底層原理是經(jīng)常會被問到的
3.高性能架構專題
阿里巴巴有很多大團隊,這種大團隊里有很多小團隊,到小團隊之后,做的業(yè)務都不相同,如果想立足成為一線互聯(lián)網(wǎng)公司中的全能選手,最主流的分布式架構中有很多知識都是必須要去了解與學習的。并且在阿里面試過程中,面試官會問到實際應用場景的問題:比如微服務化、用戶量、并發(fā)量、業(yè)務復雜度以及可擴展程度等,這里不多贅述。本人提供一個分布式架構的學習思路也是自己目前還在學習中的體系:
(1)分布式架構思維以及分布式協(xié)調(diào)和分流
(2)異步與消息中間件
(3)緩存和Nosql
(4)高可靠數(shù)據(jù)存儲以及分布式常見場景解決方案實戰(zhàn)
4.微服務專題
微服務是現(xiàn)在互聯(lián)網(wǎng)架構技術中最火熱的話題之一,也是本人目前正在學習研究的方向。在阿里面試過程中,面試官很少會問到關于微服務相關的問題。但作為一名開發(fā)者,一名有技術夢想的程序員微服務架構是現(xiàn)在必須要去了解的主流技術
(1)springboot,springcould,Docker虛擬化技術
(2)dubbo應用及源碼解讀,RPC原理
5.DevOps(架構師工具箱)
6.B2C商城實戰(zhàn)