一個PHPer的規劃

前言:學PHP過期了嗎?PHP開發人員如何快速成長?怎麼進行職業規劃?特別是近幾年很是火熱的人工智能,機器學習,區塊鏈技術等等,這多少會帶動一些人盲目跟風,迷茫等,下面是PHP大牛魏永強帶來的一篇根據本身多年的php工做經驗,帶來關於php和職業規劃方面的思考!php

將從如下幾個方面來講明:

PHP 程序員的現狀;

什麼致使了程序員的分層;

高級工程師須要達到的要求;

程序員如何快速成長;

PHP 程序員渴望的蛻變;

乾貨,你須要的轉型路線;

總結。css

PHP 程序員的現狀

現階段大部分 PHP 程序員都比較迷茫,初級 PHPer 以爲這個行業難,中級 PHPer 大都想經過學習來提高本身,但每每會陷入今天追這個技術明天追那個技術的一種狀況,高級 PHPer 大都有了本身的知識體系,部分在架構的位置。

程序員對本身的行業認識是很是重要的,也就是職業生涯規劃。這是一個比較難的問題,由於要對本身的職業有所規劃,首先要充分了解行業。這一點和當初爲何選擇作程序員有很大的關係。

通常來講,若是你很難熬過開發生涯的入門期,可能說明你不適合這個行業;若是你沒法經過蛻變期,你可能就不會有太大的成就。

每一個人開發生涯的入門各有不一樣,一部分人是對於這個行業感興趣本身心中也有一個目標,雖然沒有清晰的職業規劃,但至少會有一個該領域的偶像。還有一部分人是通過3、四個月的培訓進入這個行業的。

我以前用重慶互聯網學院中某家培訓機構(YMSD)的數據分析過,在這部分培訓進入行業的學生中 2 年後還在這個崗位繼續發展的學生僅僅佔有 20%。也就是說 80% 的學生花錢花時間只是作了回陪跑員。這也從側面說明,若是咱們進入這個行業,除了指望讓本身可以掙到不少錢,也必須對之後的發展有個預期。

通常來講,經過培訓入行的開發人員在工做中會走得很是艱難,由於他們沒有技術路線的體系目標,而在線下培訓機構中接受的是一味地模仿,很是缺少創新能力。並且據我所知,大部分線下培訓機構的課程體系至少和企業場景脫節 5 年。因此這部分程序員更應該努力改變本身的現狀,明確本身的處境。
html

什麼致使了程序員分層

程序員分層是一個很是明顯的問題,在公司裏直接的體現就是同一類程序員的職位差異很是大或者薪資待遇很是大。

致使這種分層的緣由是什麼?

第一類緣由就是程序開發者的工做年限。

其實工做年限也不是一個很是重要的因素,確實在以前的面試中,咱們遇到過工做年限只有一年可是很是優秀的開發者。但凡是使用求職軟件時就會發現,幾乎全部的職位描述裏都有一個指標——工做經驗年限。

爲何有這個東西呢?由於公司招聘人員與衆多求職者逐一溝通是很是耗時間、精力的,因此工做年限就是第一道門檻。

通常 1-3 年工做經驗是一個層次,在北京通常薪資範圍是 10-20k 之間;

3-5 年又是一個層次,在北京薪資範圍是 15-25k;

5 年及以上又是多個層次。

固然,1-3 年的工做經驗也可能得到 3-5 年工做經驗同樣的薪資待遇,這個主要看實力,咱們的 Chat 也主要是討論這一部分的因素。

在以前的小節我已經說了程序員大概分爲科班出身和半路出家的兩類,我並非說科班出身的就必定會比半路出家的優秀,這徹底是兩回事。只是科班出身表示他的知識面更廣一些,因此其餘人也應該注重知識面和基礎功。

在此次 Chat 中我並無把問題指向到某一個語言,由於做爲開發工程師太注重語言每每會成爲本身的絆腳石。
前端

追語言的人

常常碰見這樣的問題:和開發的朋友一塊兒聊天,上回見面說在學習前端技術,一個月後見面又說在學習 Python,說仍是 Python 好用。再過一個月見面又說在研究 Go 語言,說 Go 語言之後必定是潮流。這一類人我把他們稱之爲 ‘追語言的人’。

記得不要盲目追隨一門語言,由於你掌握任何一門高級語言後,對於語法的入門來講都是很是快的,並且如今的語言的語義化很是友好,咱們學習及接觸都很是容易。其實咱們最須要了解的是語言的特性。

好比說不少人想學習機器學習都去學習 Python 等,那咱們須要思考的是爲何會選擇 Python 語言,還有 R 語言、Java、JavaScript、C、C++、Scala 等。它有什麼優點?

這樣思考,當公司遇到其餘比當前更爲複雜的場景時,你就能知道這種特色的場景應該用什麼樣的語言及技術棧來解決。你對開發的認識就上升到了另外一個層面。
vue

自娛自樂的人

有種人就是重複的作一樣的事情以爲頗有成就感的,這樣雖然沒有大錯,可是會致使咱們停滯不前。

常常能聽見有人這麼說:咱們公司事情少,作完就沒事幹了,很無聊。其實這就說明他放棄了本身成爲更優秀的程序員的機會,學習是進步的階梯。就算當前大家公司沒有用這個技術,你也應該利用空閒時間去學習。

其實致使程序員分層的主要緣由就是學習的習慣。爲何這樣說?由於致使分層的最直接緣由是知識面,而知識面的造成須要不斷學習,學習的效率也很關鍵。以前我從不少人口中聽到他們抱怨技術主管的技術水平不如他們。這也是兩個層次程序員不一樣的表現吧,由於看待問題的角度不一樣,沒能將解決問題和提供方案二者的關係搞清楚。java

程序員如何快速成長

咱們主要是探討,拋磚引玉。

首先咱們要看到的字眼是成長。

我以前帶過一個程序員,他也是作了一年的開發了。我讓他經過 User-Agent 來判斷用戶是否是在微信中訪問的,結果他問我什麼是 User-Agent。你們別以爲好笑,其實不知道的人大有人在,爲何呢?由於他們只注重於本身的 CURD 能力了。我不是說 CURD 很差,只是由於 CURD 就像瞭解 User-Agent 同樣只是基礎。

對於開發人員來講了解計算機網絡方面的知識很是重要,計算機相關專業畢業的都學習過計算機網絡這門課程。非計算機專業也沒有關係,最基本的 http 請求報文和相應報文的結構都應該瞭解一些,這些都是基礎。

以前我在培訓機構機械化時,我讓學生背誦的面試題中還有 mysql 的 InnoDb 和 MyISAM 引擎的區別,每當看到學生回答一個支持事務一個不支持事務,而後看着領導高興到想笑的表情時,我就想笑。

支持事務是一個區別,那我不須要支持事務,我使用 InnoDb 的引擎又有什麼問題呢?因此我以爲脫離場景談知識點每每是程序員被歸爲底端序列的最直接緣由。

以上只是一個例子,只是說明學習也須要分場景。學習語言也是同樣的,咱們要想一想爲何不用當前的語言而要再選擇一種新的語言。好比爲何不用 PHP 作機器學習?可能說到這個問題不少人就想笑,‘PHP 是世界上最好的語言’(由於喜好因此容我自黑一下)。

可是咱們再來嚴肅的思考這個問題,請你思考一下。不少學習機器學習的人也是被潮流推着走,別人都學習 Python 來作及其學習那我也要學習 Python。固然人生苦短,你學習 Python 的選擇是沒有錯的。在追着 Python 跑中不乏有一些 C、C++、Java 程序員。參考文章:初入Web開發,php、python和ruby應該學哪一個?

引用別人常常說的一句話 「幾年前一幫人叫苦不迭的說 Java 要死了可是 Java 死了嗎?」 別再看着語言杞人憂天了,你更應該學會的是選擇語言。

固然招聘網站上,企業所需的程序員需掌握的語言種類,也是一部分程序員學習的方向。企業在選擇一個語言的時候考慮的因素很是多,包括了以前項目所使用的語言狀況、遷移的成本、人員培訓成本、語言所耗費的硬件成本、人員溝通成本,最主要的是可否解決當前遇到問題的,以及解決問題須要耗費的時間。

因此快速成長鬚要咱們本身有主見地分場景來仔細探究技術細節,須要有極強的學習能力。
python

PHP 程序員渴望的蛻變

我同事的觀點是這樣的:PHP 程序員轉型發展有兩個方向,一個是更深層次的後端開發,能夠熟悉 Go 或者 Java 語言而後找家這些語言相關的公司。例如在作 PHP 開發時不多有人去了解異步,協程,多線程等問題。另外一個是轉向前端,前端也是一個競爭很是大的區域,並且前端須要學習的東西並不比後端少。

可能有些人說我要作全棧工程師,我和同事一致的觀點是,別作一個樣樣都會,但樣樣都理解不深入的全棧工程師。

固然在這兒要給那些很是缺少安全感的程序員說一聲。PHP 並不會死。

當前新浪、神馬搜索、百度等公司都有使用 PHP 的場景並且設置了 PHP 的職位時,小公司就更沒必要說了。在中小型、短平快的業務中,PHP 依舊是首選。由於 PHP 剛開始的特性就是快速的開發網絡應用。你要追逐其餘的語言也不是不可,可是基礎必定要別忘了慢慢打牢靠。別讓本身的知識體系成爲一個虛胖的胖子。

另外,可能每一個程序員都想趕快投入到人工智能和機器學習中。若是你仍是想當這個領域的碼農,那你能夠看網上的各類文檔教程來學習,像 TensorFlow 這種向外提供的 api 也比較多。若是你想在這個領域發展,仍是得首先把那些經典算法搞清楚。
mysql

乾貨,你須要的轉型路線

根據程序員開發工做所處的產品層面,程序員分爲兩類,分別是前端工程師和後端工程師。如今對開發工程師的分類更繁多了。我就從前端和後端這兩類中給你們分享。

其實 PHP 處於一個奇特的位置也是一件好事。有人說 PHP 是前端語言,有人說 PHP 是後端語言。這個界限也不是那麼明顯,解決表現層工做的語言咱們通常說是前端語言,主要看用 PHP 來處理什麼層面的問題。

在你考慮轉型以前,PHP 應該已經讓你具備這些知識。

首先是 MVC 模式的理解,這個不難,可是要懂得從這一出發點去擴展。例如 MVVM、MVP 模式等等,要可以明白它們之間的區別,可是理論每每是比較單一的東西,記得要結合項目區理解。

還有一個須要掌握的知識就是 http 請求和響應,其實這個知識是咱們一直在用的可是不少人都搞不明白,例如咱們常常用瀏覽器的開發者模式在 Network 中點擊某個請求就能夠查看請求的 header。

以下圖:react

640.png而後就是面向對象的思想,對面向對象,你們褒貶不一,尤爲是愈來愈多的人對於函數式編程的推崇。其實二者各有優勢,咱們須要的是真正的理解面向對象所帶來的優點和不足。但願 PHP 能讓你理解各類類型的變量以及使用方法。

PHP 中有四種標量類型,分別爲 boolean、integer、float、string;三種複合類型,分別爲 array、object、callable; 兩種特殊類型,分別爲:resource、NULL,固然還提供了一些僞類型。

若是你掌握了以上的內容,那你在轉型的道路上可能更爲輕鬆一些。

首先來講說向前端的轉型。

若是要向前端轉型,js 是必需要學習的。可是學習到什麼程度呢?js 要學到什麼程度也是你們最迷茫的一個問題。不少人可能會不斷地啃 js 的語法。可是對於 js 這種知識點很是繁雜的東西,若是一直陷在語法中就得不償失了。

其實最主要的仍是前端的思惟。在掌握了 js 的一些基本類型操做,包括字符串、數組、對象、json 的處理後,就能夠去看看 vue.js 或者 react 這樣的框架。推薦你們從 vuejs 開始,比較簡單,容易入門。固然 html 和 css 的基本用法仍是須要了解的。在學習的過程當中看別人的項目很是重要,能夠去 github 搜索 vue.js 的一些項目,看看別人是怎麼實現的。

另外一種轉型方向是轉向服務端開發。

你須要選定一種比較經常使用的服務端開發語言。java 也好,go 也好,其餘選擇也很是多。從入門開始,若是有基礎的程序員必定不要從厚厚的語法基礎開始學習,由於這個過程很是浪費時間。在瞭解了最基本的語法後就能夠開始選定一個框架來學習,在學習中發現問題,再回過頭來學習語法。

在這兒選擇很是多,我不具體說明了,只給你們一個建議。

不少程序員比較看好的是 go 語言,確實 go 語言相對其餘語言來講簡單,工程化中可靠,並且有着自然的開發標準,goroutine 給服務器開發帶來好處。在國內,七牛雲很早就使用 go 語言了,如今不少大的公司也開始使用 go 語言解決部分問題。

因爲人工智能和 python 的優點,不少人是走 python 路線的,可是若是走 python 路線,就請作好向數據挖掘、處理和計算的方向走。語言的選擇見仁見智,最簡單的依據就是看公司的需求程度。

在深刻服務端開發的路上須要瞭解的知識很是很是多,好比性能優化。不少人提到 redis 就是一句話,當作緩存來使用。這就是我前面提到的業務場景的問題,說明你所理解的業務場景太單一了,致使對於知識的認知不夠。

固然還有通信機制的問題,相信不少人都很是陌生這些技術 MQ、Cron、RMI、RPC。我列舉這些不是讓你們立刻買幾本書去學習。記住,在你想要去學習某個技術以前,必定要先創造一個場景。

程序員最須要的,也是每一個程序員最缺少的,就是交流。你們須要和其餘程序員多交流、多交換意見,這樣頗有利於本身的成長。git

總結互聯網行業不是一個進入就能夠高枕無憂的行業,你須要不斷地學習,提高本身。想要進入這個行業的準程序員們也不要泄氣,你要找到正確的方法和途徑。不少線下的培訓機構都稂莠不齊,請慎重選擇。若是你學不會在網絡中找資料,那就說明有問題了。由於如今網絡資源這麼發達,找資料是比較容易的。PHP 程序員不須要有太大的語言自己的危機感。快速成長的關鍵是要對本身有一個正確的認識,不盲目跟風。注意根據場景來學習,可以思考並解決場景中遇到的問題,解決或優化瓶頸問題。這個過程當中也是一個很好的學習過程。

相關文章
相關標籤/搜索