首頁 >頭條 >PHP程式設計師職涯規劃:如何快速成長為不可或缺的技術人才?

PHP程式設計師職涯規劃:如何快速成長為不可或缺的技術人才?

PHPz
PHPz原創
2018-07-11 11:38:568693瀏覽

前言:學PHP過時了嗎? PHP開發人員如何快速成長?怎麼進行職涯規劃?特別是近幾年非常火熱的人工智慧,機器學習,區塊鏈技術等等,這多少會帶動一些人盲目跟風,迷茫等,下面是PHP大牛魏永強帶來的一篇根據自己多年的php工作經驗,帶來關於php和職涯規劃的思考,希望能夠對php中文網的網友們有一些啟發!

作者簡介:魏永強,一直致力於百萬級訪問量企業應用開發,架構工作,參與豬八戒金融產品八戒金融系統的開發,豬八戒BOSS 支撐系統開發,中航地產重慶發表會中負責即時活動系統的架構及開發工作,負責架構及開發了永川萬達微信行銷平台。重慶毅榮德電子商務股份有限公司專案架構技術顧問。喜歡玩兒各種新技術,喜歡探究。

感謝有這樣的機會,能和大家一起來聊聊開發者的那些事兒,把自己的經驗和體會分享給php中文網的網友們。

其實程式設計師危機是一個真實存在的問題。也有人說是網路產業的下滑或是網路產業已經過了風口等等。我在這裡主要談的是 PHP 程式設計師的危機,而這種危機多半來自於豐富的語言種類和公司對語言的選擇。

尤其是近年來非常火熱的人工智慧,機器學習等等,還有推上風口的 python。這多少會帶動一些人盲目跟風。其實開發工程師對自己知識體系的擴充與轉型都需要有明確的目標。跟風是一件比較危險的事情,轉型也不同於丟掉自己所有的東西。我想透過程式設計師的誕生和程式設計師的成長來討論,究竟該如何選擇。

PHP程式設計師職涯規劃:如何快速成長為不可或缺的技術人才?

我將從以下幾個面向來說明:

    PHP 程式設計師的現在員渴望的蛻變;

    乾貨,你所需要的轉型路線;

    總結。



PHP 程式設計師的現​​況



現階段大部分PHP 程式設計師都比較迷茫,初級PHPer 覺得這個行業難,中級PHPer 大都想透過學習來提升自己,但往往會陷入今天追這個技術明天追那個技術的一種情況,
高級PHPer 大都有了自己的知識體系,部分在架構的位置。
程式設計師對自己的產業認識是非常重要的,也就是職涯規劃。這是一個比較難的問題,因為要對自己的職業有所規劃,首先要充分了解產業。這一點和當初為什麼選擇做程式設計師有很大的關係。 一般來說,如果你很難熬過開發生涯的入門期,可能表示你不適合這個產業;如果你無法通過蛻變期,你可能就不會有太大的成就。

每個人開發生涯的入門各有不同,一部分人是對於這個行業感興趣自己心中也有一個目標,雖然沒有清晰的職業規劃,但至少會有一個該領域的偶像。還有一部分人是經過三、四個月的訓練進入這個行業的。 我之前用重慶互聯網學院中某家培訓機構(YMSD)的數據分析過,在這部分培訓進入行業的學生中 2 年後還在這個崗位繼續發展的學生僅僅佔有 20%。也就是說 80% 的學生花錢花時間只是做了回陪跑員。這也從側面說明,如果我們進入這個行業,除了期望讓自己能夠賺到很多錢,也必須對以後的發展有個預期。

一般來說,透過培訓入行的開發人員在工作中會走得非常艱難,因為他們沒有技術路線的體系目標,而在線下培訓機構中接受的是一味地模仿,非常缺乏創新能力。而據我所知,大部分線下訓練機構的課程體系至少和企業場景脫節 5 年。所以這部分程式設計師更應該努力改變自己的現狀,明確自己的處境。

什麼導致了程式設計師分層

程式設計師分層是一個非常明顯的問題,在公司裡直接的體現就是同一類程式設計師的職位差異非常大或薪資待遇非常大。

導致這種分層的原因是什麼?

第一類原因就是程式開發者的工作年資。

其實工作年資也不是一個很重要的因素,確實在之前的面試中,我們遇到過工作年限只有一年但是非常優秀的開發者。但凡是使用求職軟體時就會發現,幾乎所有的職位描述裡都有一個指標──工作經驗年資。

為什麼會有這個東西?因為公司招募人員與眾多求職者逐一溝通是非常耗時間、精力的,所以工作年資就是第一道門檻。

    一般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 等。它有什麼優勢?

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

自娛自樂的人

#有種人就是重複的做同樣的事情覺得很有成就感的,這樣雖然沒有大錯,但會導致我們停滯不前。

常常能聽見有人這麼說:我們公司事情少,做完就沒事做了,很無聊。其實這就說明他放棄了自己成為更優秀的程式設計師的機會,學習是進步的階梯。就算目前你們公司沒有用這個技術,你也應該利用空閒時間去學習。

其實導致程式設計師分層的主要原因就是學習的習慣。為什麼這樣說?因為導致分層的最直接原因是知識面,而知識面的形成需要不斷學習,學習的效率也很關鍵。之前我從很多人口中聽到他們抱怨技術主管的技術水準不如他們。這也是兩個層次程式設計師不同的表現吧,因為看待問題的角度不同,沒能將解決問題和提供方案兩者的關係搞清楚。

程式設計師如何快速成長

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

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

我之前帶過一個程式設計師,他也是做了一年的開發了。我請他透過 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 死了嗎?」別再看著語言杞人憂天了,你更應該學會的是選擇語言。

當然招募網站上,企業所需的程式設計師需掌握的語言種類,也是部分程式設計師學習的方向。企業在選擇語言的時候考慮的因素非常多,包括了先前專案所使用的語言狀況、遷移的成本、人員訓練成本、語言所耗費的硬體成本、人員溝通成本,最主要的是能否解決當前遇到問題的,以及解決問題需要花費的時間。

所以快速成長需要我們自己有主見地分場景來仔細探究技術細節,需要有強大的學習能力。

PHP 程式設計師渴望的蛻變

#我同事的觀點是這樣的:PHP 程式設計師轉型發展有兩個方向,一個是更深層的後端開發,可以熟悉Go 或Java 語言然後找家這些語言相關的公司。例如在做 PHP 開發時很少人去了解異步,協程,多執行緒等問題。另一個是轉向前端,前端也是一個競爭非常大的區域,而且前端需要學習的東西並不比後端少。

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

當然在這裡要給那些非常缺乏安全感的程式設計師說一聲。 PHP 並不會死。

當前新浪、神馬搜尋、百度等公司都有使用 PHP 的場景而且設定了 PHP 的職位時,小公司就更不必說了。在中小型、短平快的業務中,PHP 依舊是首選。 因為 PHP 剛開始的功能就是快速的開發網路應用。你要追逐其他的語言也不是不可,但是基礎一定要別忘了慢慢打牢靠。別讓自己的知識體系成為一個虛胖的胖子。

另外,或許每個程式設計師都想趕快投入人工智慧和機器學習。如果你還是想當這個領域的碼農,那你可以看網上的各種文檔教程來學習,像 TensorFlow 這種向外提供的 api 也比較多。如果你想在這個領域發展,還是得先把那些經典演算法搞清楚。

乾貨,你需要的轉型路線

根據程式設計師開發工作所處的產品層面,程式設計師分為兩類,分別是前端工程師和後端工程師。現在對開發工程師的分類更繁多了。我就從前端和後端這兩類給大家分享。

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

在你考慮轉型之前,PHP 應該已經讓你擁有這些知識。

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

還有一個需要掌握的知識就是http 請求和回應,其實這個知識是我們一直在用的但是很多人都搞不明白,例如我們經常用瀏覽器的開發者模式在Network 中點擊某個請求就可以查看請求的header。

如下圖:

PHP程式設計師職涯規劃:如何快速成長為不可或缺的技術人才?然後就是物件導向的思想,對物件導向,大家褒貶不一,尤其是越來越多的人對於函數式程式設計的推崇。其實兩者各有優點,我們需要的是真正的理解物件導向所帶來的優勢和不足。希望 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。我列舉這些不是讓大家馬上買幾本書來學習。記住,在你想要去學習某個技術之前,一定要先創造一個場景。

程式設計師最需要的,也是每個程式設計師最缺乏的,就是溝通。大家需要和其他程式設計師多交流、多交換意見,這樣很有利於自己的成長。

總結

網路產業不是進入就可以高枕無憂的產業,你需要不斷地學習,提升自己。

想要進入這個行業的準程式設計師也不要洩氣,你要找到正確的方法和途徑。許多線下的訓練機構都稂莠不齊,請慎重選擇。如果你學不會在網路中找資料,那就表示有問題了。因為現在網路資源這麼發達,找資料是比較容易的。

PHP 程式設計師不需要有太大的語言本身的危機感。

快速成長的關鍵是要對自己有一個正確的認識,不要盲目跟風。注意根據場景來學習,能夠思考並解決場景中遇到的問題,解決或優化瓶頸問題。這個過程中也是一個很好的學習過程。

最後,再次感謝PHP大牛魏永強帶來的分享!

【相關推薦】

1. 少走彎路,一個老程式猿談PHP職涯發展規劃

2. 程式猿34歲是一個坎?再談大齡程式設計師的出路

#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn