PHP進階程式員所要掌握的技能?

來源:互聯網
上載者:User
關鍵字 PHP CRUD Yii
現在工作快一年了,工作的主要內容就是利用PHP的Yii架構進行開發,主要就是CRUD,還有前台的js效果呈現。現在感覺每天的工作都是重複性的勞動,一點新意也沒有,感覺技術上沒有多大的長進了。不知道如何再提高自己的PHP水平,想知道 :
1.要掌握什麼技能 才能算的上是PHP進階程式員呢。
2.我所在一個外包公司,簽訂了2年合約,現在想跳槽,不知道是否可以,如果可以現在這個時節是否適合跳槽。
3.如果跳槽,1年的PHP開發經驗,公司一般能給多少薪水呢。
4.我是大專學曆。看到許多的大公司都招本科及以上學曆,不知道他們對大專生是否接受,在軟體開發行業對學曆很有要求麼。
歡迎大家來指點迷津。

回複內容:

很多工作幾年的php開發人員都會有這樣的迷茫,php開發多了,無外乎“增刪改查調介面”,真的是這樣嗎?

實際上開發人員除了把自己當成php程式員,更應該關注php以外的東西,將自己定位於能熟練使用php搭建系統的工程師。

我認為進階php工程師可以往幾個方向去發展:
1.深度方向
一個工程師要往高階發展,必須同時強化幾個技術能力:
  • 設計能力:懂得如何利用分層、物件導向、設計模式等設計組織代碼
  • 編碼能力:熟悉php文法特性,知道怎麼用一兩行代碼代替初級開發人員十几上百行代碼。
  • 工程能力:學會如何快速構建工程,學會如何構建可讀、可擴充性的工程,學會如何避免埋坑給後人,學會如何與人協作維護工程,學會如何保證工程品質,學會如何權衡利弊,學會如何在困難面前妥協。
  • 抽象能力:初級開發人員通常會等到邏輯重複時再抽象封裝(甚至怕拖進度或者懶惰而放棄),而進階開發人員通常一開始寫出的邏輯就為了以後的重用,並且深知一開始多付出的思考設計時間最終都會因為複用得到回報。很多開發架構就是一步步抽象/埋坑/最佳化而來的。
  • 架構能力:一個業務系統如何劃分模組,模組之間如何協作通訊,每個模組的技術選型如何做,系統細節如何規避問題等等。
  • 最佳化能力:學會如何評估、分析、提升系統效能。最佳化途徑很多,產品功能最佳化、商務邏輯最佳化、基礎技術最佳化、作業系統底層硬體的最佳化等等。

2.廣度方向
php開發基本上離不開作業系統、儲存、緩衝、網路、webserver等等配套設施,因此這也是高階必備技能。一旦業務系統出問題了,必須要能快速定位解決(不一定自己解決,但要知道找到哪個負責人來解決)。

比如儲存mysql,進階開發人員會懂得利用索引、利用分表分庫提高查詢效能,懂得負載平衡和災備提高效能提高可靠性(雖然是DBA的工作,但瞭解了有助於出問題時排查)

比如緩衝,進階開發人員懂得如何有效且最大限度利用緩衝系統提高應用效能。

比如http,初級開發人員往往只懂得http網路請求就只一去一回兩個包,進階開發人員會去深究網路七層模型、會深究http請求的各個環節(DNS、三向交握等等)

比如web前端,學習如何依靠瀏覽器緩衝、CDN緩衝、壓縮代碼、合并檔案等等提高前端效能,學習如何進行前端安全攻防。


3,軟素質
懂得團隊管理,專案管理,溝通技巧等等。(有空再展開)

以上觀點同樣適用於其他語言的開發人員。正好Yii是我最熟悉的php架構,這個問題我想回答下。

你用的CRUD,是用gii產生的嗎?操作資料庫是用的是ActiveRecord嗎?grid用的是zii庫的CGridView嗎?
這裡面其實有很多可以思考的問題,比如
  • gii是一個module,它的源碼是如何定製components的?它只用一個密碼來管理user的許可權,它是如何替換掉你用的WebUser的?
  • 用ActiveRecord進行CRUD的時候,它和DAO的效能差距有多大?它的效能都損耗在了哪裡?如何彌補?它與cache如何結合使用達到最優?
  • 用ActiveRecord進行CRUD的時候 ,如何使用after save、after find、after delete這些event以最佳化代碼?再深入一點,event和behavior是如何結合的?
  • CGridView的ajax部分是如何寫的? CGridView的filter(就是頭部下面那一欄的篩選框)在什麼情況下才會出現? 深入一點, CGridView的column如何深度定製?
還有一些別的問題,也可以思考
  • 你寫的js,是如何和Yii結合起來的?是用的Yii::app()->clientScript嗎?是用的registerScriptFile或registerScript方法嗎?它們又是如何向view插入script標籤的?Yii在這塊是如何最佳化的?
  • Yii用AssetManager來管理私人的css js檔案,這東西用的時候有什麼不方便的地方嗎?如何最佳化?
  • 再問得大一點,一個request,Yii完整的處理步驟是什麼,涉及了多少個class?

拋開Yii,也有很多問題可以思考
  • 前台的js效果,是否夠用就好?稍微長一點的js代碼,是不是也應該考慮一下可維護性?
  • 很多js效果,都是重複重複再重複,我們是不是有辦法將他們模組化,提高可重用性呢?
  • 用jQuery外掛程式的時候,是否會遇到有相互依賴的外掛程式?有沒有用js就能處理依賴問題的辦法?嗯哼,js loader?哪個loader比較好用?seajs?
  • 再問個無聊的問題,js css有沒有『時髦』的技術呢?coffee script?less?nodejs?咱有必要玩一玩嗎?

好吧,其實我想說的就是,『進階程式員』之類不過就一頭銜,有人覺得你是,你就是,但它根本不能作為你技能水平的標杆。
我也不覺得一個程式員有什麼一定要掌握的技能,我只知道『 一個個解決每天所能見到所能想到的問題,這本身就是對自己最好的提高』。一個用PHP很多年(1999年開始自學)的屌絲給你一些小建議:
(前提是假設你往web方向發展)
1、PHP運行環境可以非常熟練的搭建,環境問題也可以很容易判別。
這個絕對不是用yum ,apt-get可以學會的;數年以來,我都是 make 環境的,不下1000次。環境一般涉及 Nginx、PHP、MySQL、memcached、radis、sphinx 以及 PHP的擴充。可能比較費時間,就把交女朋友、約炮的時間拿來學這個吧。
2、開源的PHP項目多閱讀
我用心閱讀過比如 discuz、phpwind、Yii 等。時間不夠同上。
一般什麼模組劃分、業務抽象、代碼風格、解耦都能在裡面看到一些(不是系統性學習,而是潛移默化的影響);如果你夠好奇、有刨根問底的精神,會有很大進步。
3、空的時候看看設計模式、軟體工程、重構相關的書
有興趣就看下去,沒興趣就換一本看;全部都沒興趣就換行業。

以上搞定,差不多可以有自己的技術方向了。我的看法:其實沒有所謂的進階,把一個一個bug解決,一個一個功能實現就好了(最好可以用不同的方法),能力就自然上去了吧可以嘗試著用yii開發一個小網站,加深自己所學的,然後激發更大的興趣,我就參照了知乎的樣式結合yii,開發了一個類似班級論壇的系統初級程式員不要考慮薪資問題,如果當前公司做的項目技術含量很高(資料量大,訪問量大)別想其它,好好想想怎麼把當前的項目做的更好,如果當前項目不行,想辦法找相對好一點的公司,程式員有了本事工資自然不是問題。這個問題我思考過,並且還在思考
對你的水平不瞭解,但是可以大概的給些建議
1. 看一個自己喜歡的源碼,搞清楚是怎麼運轉的,大的看不了可以看一些小型的
2. 拓展廣度,作業系統,資料結構,網路原理。
3. 伺服器編程接觸一些,php不光可以搞web
這些會增加你的底氣。
我自己在思考的幾個方向
1.根據自己的經驗寫一個自己用起來比較舒服的架構,當然不限於web,也可以是伺服器編程方面的。
2.往c語言方面發展
3.用php搞些資料採礦,類似python 的用途yii是個不錯的架構 現在都yii2了,只用過yii1我倒是比贊同什麼這個那個的。。 化繁為簡吧。。。PHP 代碼的特性 感覺不適合 過深的對象化
所以我有時候 不太喜歡 什麼 路由機制。。什麼架構。。。
一個進階程式員 應該是能解決 業務上的所有有必要解決的問題
這些問題 並不是 怎麼對象化 怎麼路由機制 又或什麼這個那個機制
進階PHP 程式員 應該更注重實用化。。至少會一個LINUX 上的軟體 來解決問題
當然如果會C就可以 修改PHP 以及修改LINUX 軟體。。 一般php搞到最後都得向C發展。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.