https://www.jianshu.com/p/9d04cb10bdbe 原文
估計如今市面上大多說的程序員能夠劃分爲初級開發和高級開發,固然也有架構師。前端
IT 人的工資當然和相關技術的使用年限有關,但同時也發現,若是候選人的技能沒法跨越到更高層次的話,他們的收入也就會停留在當前級別,哪怕工資年限再多,也沒法提高工資。linux
好比,我和一些 比我大年的程序員在交流的時候,我發現他們的技能也就停留在CRUD階段,個人定義是初級程序員的水平。更可悲的時,我發現他們甚至不知道上升的途徑,能夠這麼說他們有 10 年經驗的時候仍是初級程序員。程序員
在通常的公司裏,對初級程序員的要求大多也是會CRUD,熟悉基本的業務,並且很多公司不會讓他們幹更高級的活。若是你在創業公司裏以上高級的活都要你處理,這樣的話對你的成長會比較好,我說的創業公司指得不是外包公司。3 ~ 5 年經驗的人差很少,這就進入了初級程序員的收入瓶頸。面試
好比 PHP 方面,他們僅僅會用技能,好比集數組,數據庫等,也會在 Laravel/ThinkPHP5 框架下幹活,SQL 方面,僅會寫基本的 SQL 語句,或者是直接使用ORM ,或許還會使用簡單的索引等技能。但若是問些設計模式在場景的解耦,他們知道得不多,問及 Laravel/ThinkPHP5 等框架知識,他們只會告訴我如何配置,如何在現有框架裏幹活。LInux 下的部署和日誌排查,他們大多就不知道了。對於項目管理的工具,好比 Jenkins,gogs 等,他們可能都沒據說過。redis
他們在面試的時候僅表現爲會幹活,不過給企業提出解決方案,能力也就是初級開發。這樣的話,在深圳,按當前行情,估計最高也就 12k 了,同時,若是幹了 5 年仍是這樣的話,那麼競爭力會大大下降。那麼如何提高到高級開發呢?數據庫
在平時得熟悉調試代碼,而且,一旦組裏出了問題,得儘可能參與,剛開始可能分析和解決問題的能力不行,但慢慢就好了。設計模式
多看些優化方面的技能,以及比較熱門的技術,好比數據庫方面,別單純看 ORM 的增刪改查,能夠看些 NoSQL 甚至 redis 緩存,而後看下 SQL 調優技能。數組
有時候在架構選擇上,會對問題處理獲得更大的提高。緩存
多關注些Github優秀的項目和開源中國觀察些管理軟件,如禪道 \ Jenkins 等。服務器
得多和別人交流,好比多和需求方溝通需求,多和測試方溝通問題重現步驟,多和組員領導溝通問題的實現方式。(這個我在17年~18年和上司討論最多的話題)
其實初級開發升級到高級開發相對容易,只要主觀上態度上端正,別固步自封,而後處處看些資料多和人交流便可。
高級開發論技術,有必定的項目經驗,和業務處理能力,也有必定分析日誌解決問題的能力,也能 debug。論解決問題的能力,也能和別人溝通,從而接簡單的需求,並能分析和解決一些問題。論團隊合做,也能帶 3,4 我的一塊兒開發(這裏要說一下,不是噹噹安排工做,而是把他們培養你的樣子,這樣的話他們的成長,你的工做能夠分給他們來處理,本身有時間能夠往架構師/產品經理方向發展[業務]/或者往技術總監發展[須要你把前端知識補一下,而後面向更大的架構師處理問題])。其實這類能力,對工做個 3 年的程序員來講,不難達到,若是在節奏比較快的互聯網公司裏,甚至 2 年便可達到。
論工資水平,當前在深圳,高級開發拿個 15k 都算低,若是進個大公司,外帶 5 年左右開發經驗,估計能到 20k,若是在互聯網公司甚至能更高,但瓶頸估計在 25k 左右。
他們通常基礎知識比較紮實,好比 PHP 集合內部的實現代碼,高併發的諸多類,或者 Swoole 框架的一些關鍵底層代碼,都能說得上來。通常給個人高級開發的標準是,所需初級開發的技能,並在此基礎上具備必定的調優能力,經過日誌定位問題,設計解決方案和解決實際問題的能力,並且 linux 上也能部署代碼。只要能說得上來,通常能給到高級開發的工資,就多少的問題。
可是和架構師相比,高級開發對於分佈式組件或基於雲組件(好比 k8s)或其它高併發分佈式組件,有些人可能用過,但僅限於會用其中的 API,讓他們搭建一個集羣,他們可能就力所不能及了,若是再問他們分佈式組件在項目開發時經歷過的坑,他們大多也說不上來。
好比我和其餘人交流的時候k8s 裏通信協議有哪些?高級開發通常能說得上來,由於這有現成資料,但我再問,根據大家的業務實際狀況,大家用的是長鏈接仍是短鏈接方式?爲何要用這種協議?他們估計就很難回答。若是我再問,若是要處理高併發的請求,須要在 k8s 裏作哪些配置?如何同其它組件搭建成集羣?高級開發就更難回答了。
PS:其實我本身也不懂。不過我得和人交流才知道要怎麼學習。
高級開發和架構師的區別在於,架構師是集羣處理問題,而高級開發是單機處理問題。負載均衡,容錯處理,通信協議和流程等問題的處理。
理論知識不可少,甚至在本身電腦上,能夠搭建個腳手架項目,好比本身裝個虛擬機,搭建個 k8s 集羣等。
最好要找個互聯網公司實踐下,哪怕在互聯網公司乾的是高級開發的活,必定也有機會接觸分佈式組件,這樣就有相關經驗了。
目前在深圳,架構師的月薪廣泛在 30k 以上,若是稍微資深點的話,35k 也不是問題,若是是一個公司的主心骨的話,就更沒上限了。
[畢業3年間,我是怎麼完善本身的單體服務器架構的?
](https://www.jianshu.com/p/e25...
這是個人工做經歷,在開發的工程中,多多少少也算是初級架構師吧。但是我在的城市是三線城市,因此給給的工資沒有30k這麼多,但是在小城市仍是能夠。
我尚未獲得更多的經驗,這裏我就不能多說,由於我沒有那樣的環境,能夠處理5000w的海量數據,幾百w的數據和pv仍是處理過的。
不過我能感受到,架構師 與 高級開發和初級開發不同,他們每每須要在項目實踐中成長,高級開發和初級開發只用在本機把東西搭建好了,就能夠了運行了,但是架構師在搭建集羣的時候,若是沒有經驗他是沒法搭建處理的,由於你沒法知道,可否承受那個壓力,還有就是服務容器是否存活,若是不存活你須要怎麼處理?每每在這些問題,用你本身的電腦你是沒法模擬,架構師我感受,通常都是須要一我的帶的吧。
我如今也比較苦難,由於本身的學歷問題,有好多的崗位,我都沒法好企業HR的眼裏,就算有,也是一些爹媽不認的上司企業外包部。
若是你是大專學歷,那麼要往架構師進步,那麼提升本身的學歷。 多交流,多看GitHub代碼,多上思否,看本身關注的技術大牛。網上不少資料,要多本身去搜索,要多本身思考問題,遇到問題要本身多承擔,不要紙上談兵。 多總結經驗,好比寫博客這類的。