2020 年 PHP 開(kāi)發者應該何去(qù)何從| 掘金年度征文

2021-07-13 查看(4448)

2020 年 PHP 開(kāi)發者應該何去(qù)何從| 掘金年度征文

驕傲的PHP

Web開(kāi)發領域有一(yī)個大(dà)家都耳熟能詳的梗:PHP是世界上最好的語言!!!甚至,圈外(wài)的都對這個梗有所耳聞。

我(wǒ)的入門是在外(wài)包公司的DedeCMS套站開(kāi)始的。當時被推薦,就是覺得PHP入門快,門檻低,對新人友好而入坑。回首這幾年的開(kāi)發,從 DedeCMS / TP / CI / Discuz! / ECMall / ECShop / Laravel 等大(dà)家都很親切的框架或類庫,曾經PHP是何等的風光。

但是随着中(zhōng)小(xiǎo)公司的生(shēng)存環境越來越艱辛,雲計算和微服務技術流行讓Java上項目都有先天的優勢,Python得益于成熟豐富的類庫和人工(gōng)智能,加上Golang和JS全棧技術的崛起,PHP的優勢越來越被弱化。

我(wǒ)們不可否認:PHP仍然是世界上最好的語言,但是作爲一(yī)名開(kāi)發,我(wǒ)們應該清楚的認識到自己的位置和将來的走向,時刻警醒,虛懷若谷——隻會PHP的開(kāi)發的職場競争力越來越弱。

盡管2019年圈裏曾有一(yī)篇文章類似“PHP早已不是十年前的鳥樣”,甚至在2019年的年末,韓天峰以《2020年如何正确使用PHP爲題發表了在新的一(yī)年對PHP開(kāi)發的暢想,回顧PHP發展,表示PHP7的性能改進,PHP8 JIT 性能将直追 Java/C++/Go, 還有Hyperf/Swoole 高性能框架。

image.png


我(wǒ)們都看到PHP生(shēng)态的越來越豐富,甚至在短闆補齊上面都在努力。但是是否考慮了這兩點:

1、廣大(dà)開(kāi)發者是否買賬?比如在考慮性能、微服務這些項目的時候,現有成熟的解決方案,項目選型還會選擇PHP嗎(ma)?又(yòu)爲什麽不是Java / Golang? PHP在此時的優勢是什麽?因爲手下(xià)僅有的幾個PHP boy? 強行用PHP來解決性能和微服務問題是否會更顯得力不從心、捉襟見肘?

2、想想PHP的優勢到底是什麽?強行和其他編程語言拉倒一(yī)個賽道,真的可行嗎(ma)?

處境尴尬PHP

圈裏還有這樣的聲音,在鼓吹或浸淫在PHP的幻想裏:世界上有多少大(dà)網站大(dà)公司在使用PHP。但是機智的你有沒有想過,使用的範圍,支撐的業務?以此來證明“PHP是世界上最好的語言”是否真的站得住腳?

守着 PHP 寫幾個if else 或 Laravel 或其他容器依賴注入和其他設計模式來解決中(zhōng)小(xiǎo)型問題也可行,但是更往上走,更大(dà)的業務規模和團隊,作爲企業級的應用是PHP的尴尬之地。

此處,想起之前分(fēn)享的阮一(yī)峰的文章,大(dà)家也可以看下(xià)是否中(zhōng)肯《PHP很爛?我(wǒ)的看法》,這篇文章還是發表在10年前。

時代的十字路口

在2019年的時間,每當周末或下(xià)班我(wǒ)總會參加一(yī)些技術分(fēn)享,現在回想不少都是偏向于Java中(zhōng)間件、高效運維、ElasticSearch、Serviceless、K8s、Flutter和大(dà)前端、Dubbo和微服務等等,越來越多的新技術、熱門和趨勢好像PHP被邊緣化。甚至在年中(zhōng)傳出小(xiǎo)米技術委員(yuán)會下(xià)文件不再上PHP項目,年末甚至傳出某大(dà)廠直接裁員(yuán)其PHP項目團隊。

我(wǒ)們雖不能講PHP“大(dà)勢已去(qù)”,但是我(wǒ)們都看到PHP遇冷,于是乎好像看到今年越來越多的PHP開(kāi)發者轉向Golang開(kāi)發,所以網上有人說Golang群裏有一(yī)半多都是PHP轉過去(qù)的。雖是調侃,卻不無道理。

我(wǒ)們現在冷靜下(xià)來,除了擁抱Golang還有更好的選擇嗎(ma)?

PHP如何構建自我(wǒ)競争力?

其實,爲何PHP會處于鄙視鏈末端,我(wǒ)想起不知(zhī)是2gua還是誰在知(zhī)乎上說過的一(yī)句話(huà),大(dà)意是并不是鄙視PHP語言本身,而是隻會寫PHP的開(kāi)發。因爲PHP對新人友好,代碼寫的再爛也能跑起來,雖然PHP在5就已經引入了面向對象支持,但是不少人爲了快速上手,思路仍然是面條式的面向過程,一(yī)條線殺到數據庫。PHP代碼雖上手快,但是的難維護、性能不足、bug頻(pín)出是令人诟病的關鍵。誠然,我(wǒ)也見過Java寫出的垃圾代碼,代碼的可維護性和性能并不和開(kāi)發語言有直接的關系。

如果你不能用一(yī)種語言裏面的基本特性寫出好的代碼,那你換成另外(wài)一(yī)種語言也無濟于事。你會寫出一(yī)樣差的代碼。我(wǒ)經常看到有些人 Java 代碼寫得相當亂,相當糟糕,卻罵 Java 不好,雄心勃勃要換用 Go 語言。這些人沒有明白(bái),是否能寫出好的代碼在于人,而不在于語言。 -- 王垠 《如何掌握所有的程序語言

提高編程能力的萬無一(yī)失的方式,還是閱讀更多好代碼

而不隻是學幾個設計模式,這方面有太多文章可以參考。這方面,抽出更多時間去(qù)Github逛逛,看看最新的代碼,看大(dà)家是如何寫的,并不一(yī)定上來就看某框架的大(dà)型項目的源碼,可以先從小(xiǎo)而精美的類庫開(kāi)始,慢(màn)慢(màn)培養興趣和習慣。

雖然很多人隻是爲了混口飯吃,但是還是希望你能在編程中(zhōng)找到樂趣

因爲IT行業的火(huǒ)熱,越來越多的人甘願爲“碼農”,雖然是自嘲,但是真不建議我(wǒ)們要這麽想,我(wǒ)更希望大(dà)家都覺得自己是一(yī)名“創造者”,是靠創意和點子來完成一(yī)個産品或一(yī)項工(gōng)程。

We are Makers.

We are Software Engineers.

不卑不抗,這是一(yī)個最好的時代,也是一(yī)個最壞的時代。

不以程序員(yuán)多麽高薪或高大(dà)上而自居看不起其他行業(相比投入和報酬,程序員(yuán)并不見得是高薪),也不以碼農(搬磚者)讓自己麻木的投入到體(tǐ)力勞動者或隻是一(yī)份工(gōng)作而已定位自己,學會平衡工(gōng)作和生(shēng)活,持續學習。

補足計算機及軟件其他方面知(zhī)識

如果非要說混口飯吃,那麽我(wǒ)們也是在吃專業的飯。

技術活,憑本事吃飯,不管你是科班出身還是半路出家,既然投入到軟件開(kāi)發行業,都應該精益求精,讓自己專業起來,而不是PHP給人的野路子印象,簡單粗暴,能用就行。憑着 var_dump die 調試走天下(xià)。

如果數據結構、算法感覺距離(lí)太遠,那麽也應該了解操作系統Linux基本運維、分(fēn)布式數據存儲、高性能緩存、常見業務場景解決方案、軟件開(kāi)發流程有所了解總結,能夠獨當一(yī)面解決問題。了解越多,越會融會貫通,解決思路無外(wài)乎“分(fēn)層設計”、“分(fēn)而治之”、“空間和時間的權衡取舍”、“提效降耗”、“專業的人做專業的事兒”等等。

職場競争力

想下(xià)自己的興趣,轉一(yī)門開(kāi)發語言并不一(yī)定是唯一(yī)解,要了解技術,莫過于留意技術論壇,特别是技術活動宣講的是什麽,或者招聘網站的崗位JD。



虛懷如谷,持續學習

不要把自我(wǒ)定位在某一(yī)個編程語言的開(kāi)發者,故步自封,自高自大(dà),抱殘守缺。關注技術趨勢,擁抱時代,才不會被淘汰。因爲你不自我(wǒ)革命,就會被時代革命而下(xià)崗。程序員(yuán)的價值就是解決問題,軟件開(kāi)發的價值就是盡早把更多的有用的功能實現給用戶使用。

關注開(kāi)源文化,不要把精力浪費(fèi)在已經解決的問題上。

溝通及自我(wǒ)管理

溝通态度、情緒控制、語氣、多方協調、工(gōng)作總結反思等

PHP何去(qù)何從

PHP的開(kāi)發崗位在減少,如果你留意招聘網站,PHP開(kāi)發的崗位大(dà)概在兩類:1、後台或OA開(kāi)發;2、開(kāi)源電(diàn)商(shāng)網站維護或二開(kāi)。

如此之外(wài),我(wǒ)們還有别的選擇嗎(ma)?

  1. Golang等中(zhōng)台或中(zhōng)間件開(kāi)發

  2. Java生(shēng)态及微服務等分(fēn)布式系統

  3. Python及DevOps

  4. Docker及k8s雲原生(shēng)架構

  5. Vuejs/ReactJs/Flutter等大(dà)前端

以上

此刻,2020年1月3日淩晨1點半,終于沉下(xià)來做了一(yī)個反思和總結。也是和更多PHP開(kāi)發的交流和分(fēn)享,以上是個人感悟,如有偏頗,請指正批評。

今年你的開(kāi)發之路怎麽走,想好了嗎(ma)?


補充

最近幾天再次和朋友聊起這個尴尬的話(huà)題時,自己也在思考“swoole和Hyperf能再次撐起PHP?”,剛還在知(zhī)乎看到一(yī)個想到中(zhōng)肯的評論,摘抄如下(xià),如果對這個問題感興趣也可以看>> 原貼


image.png


image.png


image.png


image.png


image.png


最後

開(kāi)放(fàng)的心态,努力向前(錢)看,工(gōng)具和編程語言都是爲了解決問題而生(shēng),都有擅長或不擅長的場景和領域。



掃二維碼與項目經理溝通

我(wǒ)們在微信上24小(xiǎo)時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流

鄭重聲明:郑州禾木网络技术有限公司網絡科技有限公司以外(wài)的任何單位或個人,不得使用該案例作爲工(gōng)作成功展示!