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