從1.5K到18K 一個程序員的5年成長之路(三)

PHP是最易學的語言,但難點也是這——簡單易學難精通

CSDN:一開始學Java爲什麼會轉到前端?後來又爲什麼從前端跑去做PHP?另外,在Java和PHP間,爲何最終選擇了PHP?你在這個轉變過程中有沒有遇到什麼坎?

雷果國:Java到前端,以及前端到PHP的轉型,都是工作的需要。

在我剛開始學習編程的時候,有一個長期目標是做程序員,有一個短期目標是做好Java編程,當我第一次換工作時,請假來北京找工作,3天時間並沒有找到願意接納我的公司,所以我退而求其次,以前端開發工程師的身份進入到了一家創業遊戲公司。在這裏,我修正了短期目標做好前端開發。後來,我接觸到了PHP,而此時已經做了一段時間前端,我覺得做前端沒有一些藝術細胞很難做到很好,而我是理性思維更多的人,所以我開始學習PHP。這次,我又修正了短期目標做好php編程。

在PHP和Java之間的選擇,是因爲PHP的完全開源,有任何問題,我都能以比較透明的技術手段追蹤到根源。

其實這也是一個職業規劃的問題,我們無法預估十年乃至二十年後自己的興趣和能力,只能按照自己當前的興趣和喜好程度,定出長期規劃和短期規劃,並根據發展的情況做出調整,應該說,只要你把職業規劃當做一件事情來做,那目標肯定會越來越穩定。

轉到前端時,困難比較明顯,我是計算機專業,程序寫的再好,做前端沒有藝術感還是比較困難。而到PHP的轉型,比較困難的就是java語法比較嚴格,到了一個鬆散的語法環境中略有不適,不過這一點相對比較好克服,嚴格要求自己就好。

CSDN:在百度做PHP方面的開發,新公司在技術或文化上哪裏讓你感觸最深?另外工作這麼長時間,你現在如何看待實踐和理論這兩者關係?

雷果國:到百度之後,同事平均素質明顯高於以前的公司,而且百度的文化執行的很好,在一個這麼大的公司,卻明顯能感覺到身邊的人都在執行“簡單可依賴,具有狼性”的文化。

技術方面的感觸,我就說說敏捷開發吧:我是在進入百度後才接觸到敏捷開發的,滿打滿算,才40天時間,但這種開發模式真的對我衝擊很大,它改變了我一個固有的看法——大公司專人做專事、流程化安全而緩慢。

在敏捷的團隊中,大家更多的是強調團隊的產出,弱化個人能力對團隊的影響力,讓團隊成爲一個原子性的整體。對工作量,進度的估算都不再按照個人進行,而是按照團隊爲單位估算,同時強調弱化角色分工,減小團隊對個人的依賴性。

我覺得,站在項目的角度,這一切簡直太美妙了:

 

  1. 進度預估的風險:過去以成員爲單位預估,問題是難於估算,並且準確度低,現在以團隊爲單位估算,成員間的誤差是有互補性的,提高了準確度。

  2. 人力風險:角色的弱化,大家都可以根據興趣或團隊需要做一些其他方面的工作,這使得每個團隊成員都能放寬眼界,提升綜合能力,另一方面,單個成員請假等特殊狀況的風險也可有其他成員互補,降低產生團隊人力瓶頸的風險。

  3. 質量風險:持續集成,持續測試,這使得每一次發佈都是經過集成後測試的,降低了產品質量方面的風險。

  4. 需求變更風險:敏捷要求快速迭代,這就使得我們在迭代計劃的時候,只安排少量高優先級的開發任務,因此,對低優先級的開發任務我們不會花過多時間關注,當需求變更時,多數情況都只是從需求池中將尚未細化的需求拿走,而很少會影響我們已經詳細規劃並進入迭代計劃的需求。

 

當然,站在個人的角度,這其實提出了更大的挑戰,每個團隊成員需要對項目整體負責,需要掌握更多的技能。雖然只接觸了40天,但敏捷開發帶給我的感想是很深刻的,我覺得互聯網公司特別需要敏捷開發,因爲它的目標是快速發佈、擁抱變化和降低風險,這非常切合互聯網產品的特點。

如果沒有實踐,就不會有產出(專門搞理論的科學家,也是要經過實驗驗證理論的),但是如果沒有理論,就只能重複性的實踐,很難提升產出價值。所以,我認爲實踐和理論並沒有孰輕孰重的關係,兩者相輔相成,缺一不可。

CSDN:你比較擅長PHP,能不能就你學習和工作經驗與大家分享下PHP學習如何開始和深入?有沒有什麼竅門?另外,PHP學習有什麼難點?如何解決這些難點?

雷果國:關於語言的學習,每個人有不同的方法,我就說說自己的學習過程:

在學習PHP之前,我有3種語言的經驗,所以就隨便找了本入門書籍,花一週時間,看看語法和函數庫就上手做事情了。對PHP瞭解的第一次進階,是閱讀PHP手冊,PHP的手冊非常棒,組織結構清晰,講解詳細,內容涵蓋面非常廣,認真讀一遍,收穫非常大。

接下來是兩個方向:工程設計和底層實現。工程設計方面,主要是找一些設計模式、持續集成和開發方法方面的書籍,廣泛的閱讀,並嘗試在實際應用中去領悟書中所講的內容。底層實現方面,主要就是先去了解操作系統和網絡等一些底層的知識,掌握C語言,然後去閱讀PHP的源代碼,看看PHP怎麼運轉。

衆所周知,PHP是最易學的語言。但我覺得這就是PHP最大的難點——簡單易學難精通。這方面,我認爲要克服的主要還是心理因素,千萬不能有“已經學會PHP”的想法。另外,PHP語法靈活,很難把握到底該怎樣去寫,這方面需要量的積累以及不斷的思考。還有一點,PHP從內核的設計上,比較強調自由的擴展,所以對PHP內核的瞭解也很重要,這一點難度也很大,需要大量的基礎知識積累,要克服也只有玩命的學了。

CSDN:你是什麼時候開始接觸CSDN的?它對你學習和工作都帶來哪些影響?另外,你對CSDN有什麼建議和期待嗎?

雷果國:我大概是2008年接觸CSDN的,到現在也5年多時間了,起初它是我求知的主要平臺,後來它是我分享的主要平臺。一直以來,CSDN上的大牛們都是我奮鬥的目標,當我低迷的時候,我就會想,或許有一天我也能成爲那樣的大牛。

也許是我最近兩年逐漸轉向博客,BBS這邊光顧的少,目前對CSDN的感覺是在媒體方面的力度比社區方面大。從技術人員的角度來看,當然是希望CSDN這樣的大平臺更多一些社區特性,能夠刺激國內技術人員的交流和成長。

寫在最後:

在與雷果國的交流中,他還和我分享了一些總結,記者覺得這些分享蠻有價值,雖然有的點或許會與專訪內容重複,但絲毫不影響其中傳遞出來的另外一種心態和觀念,有心的朋友可以看下。

內容摘錄如下:

心態上:我開始學習編程的時候,已經大三第二學期了,當時有自己的質疑,有周圍人的質疑,"現在學還能來得及嗎?",對於跟我一樣,在大學的最初幾年已經荒廢的同學來說,這個心態的調整很重要,就是堅信自己能行。

 

  • 期望值:不少同學(包括那時的我),在剛畢業的時候,覺得自己給老師做過項目,就感覺自己找工作會很容易,導致對自己期望過高。其實,就我自己的發展而言,如果不是這幾年惡補基礎理論,肯定不會走進自己夢想的企業。

  • 目標定位的問題。我覺得很多大學生甚至畢業一兩年都找不到自己的人生定位。我自己在剛開始學習編程的時候,已經有了一個目標定位,就是做程序員,這個目標定位非常符合我的興趣,所以我可以5年間絲毫不改變這個目標定位。

  • 態度上:分三個方面來講,一方面是要付出很多努力;另一方面是不能認爲自己已經付出了很多努力,就要求短期回報,而是向着長遠目標看齊,寧肯放棄一些短期回報;還有一個方面就是持之以恆的堅持前兩點。

  • 方法上:堅持讀英文,堅持讀源代碼,碰到問題就死磕,我在剛學了半年的時候,在沒有網絡的條件下,碰到一個問題靠跟蹤源代碼,花了7,8個小時才找到一個異常的根源。

  • 情緒培養上:要學會管理自己的情緒。可以刻意找一些讓自己興奮的事情,在寫程序時激發自己的潛能。同時生活中有不順心事情的時候,儘量減少編碼,防止這種心情潛在的影響自己對編碼的看法。

  • 熬夜的問題:有不少人表示自己做不到,或身體不行。其實,都是對自己要求不夠(當然,不可避免有些人確實會受身體因素限制)。

  • 碼品如人品:我以前是一個邋遢的人,但是自從我刻意的去規範自己的編碼風格後,我自己也變得不那麼邋遢了,同時改變他的代碼風格,也會潛移默化的改變他處世風格。

  • 分享會迎來進步和尊重:樂於分享是非常重要的。因爲一次分享過程,收益最大的通常不是聽的人,而是講的人。我翻譯了很多文檔,錄製過視頻教程,這背後最大的受益者其實是我自己。並且除了自己知識上的收穫,分享者還能得到更多人的尊重。

  • 實踐與理論孰輕孰重:實踐決定你能不能走路,理論決定你能走多遠。(文/張勇 責編/魏兵)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章