在技術上你有獨當一面的能力,還需要哪些方面的能力

Laravel00發表於2021-12-10

每一個技術方向的背後都包含了眾多技術細節,以開發一個分散式系統來說,需要分散式儲存/資料庫/快取、中介軟體、RPC、訊息系統、分散式一致性處理等多種技術。怎麼去解決這些問題呢?

1、 能夠知道面試官講的具體內容,即包含了哪些技術點

比如分散式系統中常用的RPC技術,其背後就涉及到網路IO、網路協議、服務發現、RPC服務治理(限流、熔斷、降級)、負載均衡等。

2、 能夠清楚各類技術之間的區別和聯絡

在分散式系統領域中,有很多相似技術點,但又分佈在不同的產品或層級中。比如負載均衡,DNS、LVS、Ngnix、F5等產品都能實現,而且在大型分散式系統中他們會同時存在,那麼就要搞清楚他們各自的位於什麼層級,解決了什麼問題。

如果你仔細去觀察,高階PHP總是能對整個技術體系瞭如指掌,從而在系統設計與技術選型階段就能夠做出較為合理的架構。

而PHP學到極致勢必涉及到設計模式,Swoole協程程式設計、微服務、多執行緒、Laravel核心架構等不一而足;

這裡還整理了一下高階PHP學習體系!學習需要堅持,耐心,時間!繼續看

一:常見模式與框架

學習PHP技術體系,設計模式,流行的框架

常見的設計模式,編碼必備

Laravel、TP開發必不可少的最新框架

YII、Symfony4.1核心原始碼剖析

二:微服務架構與效能優化

業務體系越來越複雜,Swoole協程程式設計,PHP併發程式設計、MySQL底層優化是架構升級的必經之路,PHP效能優化和微服務架構相關的技術有哪些呢?

Tars分散式RPC框架

Swoft微服務框架

伺服器效能優化

演算法與資料結構

三:工程化與分散式架構

任何脫離細節的PPT架構師都是耍流氓,向上能運籌帷幄,向下能解決一線開發問題,PHP架構師需深入工程化、高併發,高可用,海量資料,沒有分散式的架構知識肯定是玩不轉的:

Linux操作/shell指令碼程式設計

docker容器/自動化部署

分散式快取/訊息中介軟體

分散式架構原理/高併發分流

能掌握以上技術這些人必然具備在技術上有獨當一面的能力,然而,除了你必備技能外,你還需要必備哪些條件,才有個當技術主管,技術總監,才有點老大的樣。所謂品學兼優,除了技術外,你還具備:

一、平靜的心態

和大多數程式設計師一樣,要敲一手好的程式碼,當然沒有好的心態是不行的。遇事不可急躁,不可輕言放棄。

在開發過程中,尤其是初中級,寫出的程式或架構會遇到很多問題,其中一些問題比較弱智,而有些問題根本沒有碰到過,這時候不可太過急躁,應該逐個排查問題的最初源泉,將其幹掉。急躁的心態去開發系統是對專案的一種不負責。急躁會讓人學會將就,讓人學會逃避。

為什麼將心態列入其中,我是想說明:PHP開發不同於銷售的職能,不需要很大激情澎湃,而是需要靜靜的思考。

二、一套爛熟於心的問題解決思路

每解決一個bug,就給自己一個提升。的確,沒有真正解決過無數的bug或問題的程式設計師,談不上專家,談不上高階程式設計師。而一個高階程式設計師正是從這種解決問題的過程中不斷的歷練自己,形成一套爛熟於心的問題解決思路,要自己強大的。

這裡簡單說一下PHP程式設計師成長過程中經常遇到的一些問題,如果你一個也沒遇到或很少遇到,那麼您就是兩個極端的人:要麼初級入門,要麼高階了。

1、編碼問題

2、PHP和SQL資料庫執行效率問題

3、Session和Cookie域和加密解析問題

4、程式的執行順序問題

5、程式編寫的多環境適用問題

6、分類的構建和結構設計問題

7、字串處理問題:正規表示式處理或簡單PHP字串處理函式來處理

8、各種模板引擎的編寫侷限性問題

9、PHP和web端資料互動問題(如ajax,介面呼叫等)

三、過硬的PHP基礎知識

沒有過硬的PHP基礎知識,哪怕心態再好,問題解決的能力再強,也只能紙上談兵。過硬的基礎知識會讓你在專案開發過程中游刃有餘。

我也簡單說說哪些屬於PHP工程師所應具備的基礎知識(其實這些在招聘需求中很常見):

1、語法規則,這個不說了,這個不會,就沒入門。

2、MYSQL各種sql語句的寫法,增刪改查基本的不說了,in(),union,left(),leftjoin,as,replace,altertable,where的欄位排序,各種索引建立的方法要特別熟悉。

3、會自己搭建LAMP環境和WAMP環境,用整合軟體一鍵式安裝的不算。開發程式,對於自己開發的環境構建結構都不清楚,怎麼排查問題?所以至少要會用對立的msi檔案來安裝自己需要的開發環境。安裝3-5遍成功,這個算還行,還得會安裝各種擴充套件,配置apache服務,知道各種引數設定的地方以及知道怎麼設定各種引數;會linux作業系統的基本命令。

4、熟悉Web方面的其他程式,因為PHP不是一個完全獨立的東西,他是一個和其他語言和要素配合來完成一個專案的,如果對其他語言和要素不太熟悉,在團隊協作過程中會非常吃力。這些其他要素包括:html,javascript,jquery,xml,http協議,正規表示式等

四、綜合的網際網路應用及專案管理知識和素養

1、見識廣博,擅於學習

只顧自己專研,不看看、學學人家的做法,會像井底之蛙,難以看到廣闊的天空的。所以,不要只顧著天天程式設計,學會抽點時間去看看一些大型開源系統的架構思路,以及大型商務網站的構建方式。向他們學習,補充自己的不足。

比如至少該曉得不同型別的開源系統有哪些吧,比如Uchome,dede,phpcms,wordpress,discuz,帝國等等,看多了,你也會總結發現一些常規性的思路,比如快取的機制,比如模板機制,比如靜態頁面生成等等。

2、專案解決方案選型

不同需求,用不同的機構和選型。也就是常說的”水來土掩,兵來將擋”,有些架構固然強大,但是用於小型專案也會很吃力,就是殺機不用牛刀。根據需求來選型很重要。

選型不是隨口就能定的,需要一個PHP程式設計師用於良好的儲備,個人覺得至少需要以下儲備,才具備選型能力。熟練應用至少一個PHP框架,兩三個PHP開源系統;擁有自己的一套應用系統。

3、良好的專案管理素養

專案不是一直開發過程中,專案也會進入運營期,維護期,這樣,具備良好的專案管理素養會使專案更加穩定,可控。

良好的專案管理素養包括:

良好的專案開發及維護習慣,記住:千萬別為了一時的省力,造成後面多次的重複勞動。時時提醒自己將工作流程化,流程規劃化,規範簡單化。

良好的多人合作管理意識:專案不是一個人的,是多人協作的產物,也是服務於大眾的,因而,要提升協作意識,讓相關人員一同來完善專案。

4、豐富的專案開發應用經驗

學理論,去考試或考核是學校裡面的事兒,沒有專案經驗,就像滿肚子經文,吐也難吐出。這就需要實際的專案將自己的知識去學會轉化為需求實現。

5、良好的開發規範

程式碼可讀性強:物件,方法,函式的註釋,一套成熟的命名規範

程式碼冗餘度底:程式和檔案的重用性大,高內聚,低耦合

執行效率高:用最簡單的程式流程實現應用需求,勿擾大彎子

程式碼安全性好:做一名警惕的程式設計師,任何有使用者輸入和上傳檔案的地方都得額外謹慎,也許一個程式設計師一時的疏忽就會導致一個系統頃刻間崩潰。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
溫馨提示:微信搜尋並關注   學Laravel  裡面有兩套Laravel課程:【laravel7.x 從入門到核心架構講解】 與 【Laravel高階實戰教程42集】,直接獲取就可以了

相關文章