大學生學習編程(PHP)

  在v2ex上看到一大三的求職實習,而後有人給出了建議,我的以爲也挺好,作個記錄。/  原帖地址php

@ARjson問:css

大三的學生黨,求實習崗位,現居北京。
後端PHP一年半開發經驗,熟悉speedphp,thinkphp框架,嘗試封裝過簡單框架(https://github.com/Arthurjason/Micro-framework)
兩年WEB重構開發經驗熟悉DIV+CSS佈局,熟悉jquery,可作前端
平時開發可在linux下進行,求大公司實習帶走,謝謝
QQ:351192873
手機:18353580563
簡歷: http://www.wangfengxin.cn/
github: https://github.com/Arthurjason前端

@Feiox答:node

一答:jquery

我認識一些深圳、杭州、北京的朋友,他們每每更關注如下內容: 
1. 代碼(包括註釋)的規範性、可維護性 
2. 參與一些算法的研究與實現、開源庫的建立與維護 
3. 對新技術的探索,包括但不限於:新框架、新思想、新工具 
4. 對 Github 上的做品極其認真負責,包括但不限於:良好的 commit 說明,乾淨的代碼(實驗性或已註釋代碼的不會出如今代碼庫中),以 feature 爲單位進行代碼提交、分支合併、bug 修復,對 Git 這種工做方式瞭如指掌。 
5. 探索多人合做的技巧,並能主動去尋找、求助新的解決方案。 
6. 對開源社羣有深刻的理解,知道開源不等於免費,以及知道什麼該開源什麼不應開源。 

我接觸過不少像 LZ 同樣的剛畢業大學生,若是 lz 不介意我想提一提個人意見: 
1. LZ 應該關注一下代碼規範和設計模式。 
2. LZ 的做品太過於淺顯,並不能體現你的核心競爭力。而且若是着重強調 ThinkPHP 可能會帶來減分的效果(在圈子內你多瞭解一下就知道)。 
3. 樓主的 「 熟悉 div+css 佈局,可用 jquery 寫簡單特效,會使用 ajax 」 這有一種《精通CSS+DIV網頁樣式與佈局》這種書的既視感,你可曾瞭解過 CSS3 Flex Angular.js React.js ?而且,若是你要搞非 MS 系的後端,Linux 是比必備技能,而不是可在 linux 下進行。# 記得剛入學時有個學長在某社團講座中講到 PHP 入門,開發環境要 WAMP 不會的來找我,呵呵,你入門爲何不試一試 `php -S <phpfile>` 命令呢? 
4. 我看到 LZ 的 Github 上的代碼,提交了不少已註釋的代碼,若是你的註釋有助於他人閱讀那是能夠的,不然你本身調試的內容不須要讓別人知道。另外,大家知道 Git 中的 .gitignore 文件用途麼?爲何會出現 ThinkPHP 這個文件夾?再另外,若是你的團隊裏都是中國人,請使用中文寫 commit,並制定團隊規範(好比,咱們就是採用 行爲 + 功能修改 + (可選)涉及 API 變更簡述(包含對應文檔地址)) 
5. 最好能 在簡歷中說明你的團隊工做經歷,代表你已有與人協做的能力。而且能利用 Google StackOverflow 查找英文資料。不少團隊很看重這個。 
6. 對於把 Github 當成團隊代碼庫還不用私有倉庫的行爲,大家不怕有人看過大家的代碼而後讓大家的網站掛掉麼?用 coding.net 不也免費麼。好吧,Github 果真是世界上最大的同性別交友網站,哈哈。但這不是開源。另外,適當使用各自開源工具,能夠成倍提高工做效率。 linux

二答:git

1. 一直不明白爲何如今不少企業要求 PHP 開發者有 HTML CSS JS 能力,如今不是先後端分離了麼,這是要全行業招全棧工程師的節奏麼。因此,我建議 LZ 應該深刻研究一下 計算機網絡 操做系統 設計模式 PHP代碼優化 數據庫等知識,這纔是一個後端程序員正道。(對於有志於從事外包行業的同窗,能夠關本頁了 ~ 多說都是淚,那段時間幾乎天天要去安慰我那朋友,槽點太多) 
2. 學生時代,大多數人寫的最大的項目大概也就是課設、幫老師作外包。因此,對於真正大項目(10w行以上)缺少(徹底沒有)瞭解。對於 MVC 軟件架構 設計模式 軟件工程 這些名詞,徹底沒有概念。簡略說一下咱們團隊的代碼結構,更明確的徹底先後分離的 MVC : 
* 前端:Angular.js + Android + iOS => 公用一套 RESTful API 
* 後端:(注:如下功能只是重要部分,不是項目根目錄下的文件) 
— View 視圖:負責生成 API 
—Controller 控制器:複製將各個接口組合起來,傳遞給 視圖 進行數據渲染(格式化後輸出 JSON) 
—Handler 處理機:被控制器調用,複製對數據進行加工 
—Logic 業務:被控制器調用,負責處理業務相關(例如調用其餘內部、外部 API 等) 
—Model 數據模型,其中有分如下兩個子層: 
—— Data 數據包裝層:對數據庫相關操做進行封裝 
—— ModelDefine 數據定義層:經過 ODM 或 ORM 進行定義 
— Lib 工具庫:封裝各類經常使用的公共功能,使接口統一易用,如日期格式化、隨機數產生、字符串校驗 
— Opt 平臺其餘軟件封裝庫:封裝其餘中間件的功能,如 Redis RabbitMQ 等 
— Dev 開發工具:包括代碼強制分析、執行測試、性能分析等等 
— Test 測試:包含 功能測試、單元測試、集成測試、性能測試等等 

看,實際生產用途的項目是很複雜的。而且咱們內部有一個 109 條的強制性規範(Python 的),從代碼格式、命名定義、功能分割、基本語法優化等方面限制每一個人。這樣的好處是每一個人的代碼都是整潔的,每一個模塊都是去耦合的,能夠分開單獨測試。LZ 可曉得測試驅動開發? 
我是3年前接觸的 PHP,在寫過一些項目後去年初成爲了 PHP 一輩子黑 (哈哈 ~)但,PHP 不多會對代碼進行編譯器級的優化(對比 Java 、V8),多人開發大項目時也容易對項目結構失控。而且,因爲入手很簡單,你可能遇到無數代碼寫得使人髮指的隊友(你見過實習生 徹底不會 PHP 邊學邊作邊往生產SVN中提交代碼 麼?外包公司。。。)這還不包括…… 

但有人說,這是都是工做以後才能夠懂得的,要求大四學生徹底熟悉這個是否是過度了?很差意思,我大三就已經從各自 blog 裏把這些知識補齊了。這就是我一直說的,咱們這些科班出身的和培訓班出來的有什麼區別?由於咱們知道,什麼是科學,什麼是工程。科學:基本知識的深刻理解並能夠運用於實際是工程師的基本能力;代碼的易讀、規範、健壯是必須的,而不是高手才能掌握的。某天,技術領導說咱們要利用 TCP 的特色和新出的長鏈接規範去優化 API 的性能,這時咱們不該該傻掉;某天,產品說要加搜索自動補全的功能,咱們能夠用樹型數據結構來很簡單實現。敲代碼培訓幾個月誰都會,我女朋友是學金融的,她還會用 Python 處理計量經濟學上的問題呢。 
因此,我之因此是回答這麼多,是由於我看到如今有太多人想經過掉代碼得到月薪上萬的收入,太多人想經過互聯網創業來一晚上暴富。敲代碼這個行業頗有意思,你能夠很容易一我的幹4我的的活,也很容易被別人問候你全家人 ~ 最近的帖子如證 http://www.v2ex.com/t/211378 
(寫易讀的變量名是品德,寫註釋是美德,寫文檔是公德,寫了易讀的變量名有寫了註釋還寫了詳細的文檔並讓我維護你的代碼 哦 您是大恩大德) 

最後弱弱說一句,但願 LZ 不要不高興也不要受打擊,把本身沉下來,放下 LOL Dota2 天天學習 10 個小時左右,深刻學習基礎知識。若是想進大公司多學習算法 數據結構 網絡 操做系統 方面的知識,若是想進創業團隊,學習設計模式、數據庫、軟件架構,多寫一些曲折婉轉(大誤,實際上是高度抽象)的代碼,如本身寫框架(必定要脫離業務)寫 ORM 並完善其文檔(這點很重要,在小團隊寫好文檔你隊友會愛上你的),這樣大四再去工做也不遲。 

科班出身的工程師必備知識:(我的觀點歡迎討論、補充) 
《深刻理解計算機系統》《現代操做系統》《計算機網絡——自頂向下方法》 
PHP 高級語法,PHP 代碼優化技巧,《代碼整潔之道》 
《深刻淺出MySQL:數據庫開發、優化與管理維護(第2版)》 
軟件工程 《敏捷開發的藝術》測試驅動開發 RESTful 《大型網站技術架構》 
徹底在 linux 下工做,習慣命令行,並會用各自工具,好比 git docker Vagrant ssh 等等的。 
使用 PHPStorm Xdebug Composer PHPUnit PHP-CS-Fixer 等 現代化的工具輔助你開發 程序員

三答:github

當下前端開發者應該慢慢學會放下對 jQuery 的依賴,Angular.js 和 React.js 是兩種思惟很獨特的工具,而且適當培養在實際項目中本身的思想(如爲何說「聲明式的代碼更適合表現 UI 層」這類問題(咱們在項目中就使用了不少自實現的聲明式的 DSL (SQL 、HTML、CSS 都是應用最廣的聲明式代碼)))。另外,如今的前端開發模式與十年前不一樣了,分絕不差的完成設計師的圖紙是基本要求,但更講究: 
先後端分離、 
* 規範化(瞭解業界規範,如 AMD、REST 等)協做(文檔、註釋)、 
* 模塊化(不管 UI 仍是 JS,都不斷抽象造成公共庫)、 
* 工具化(就是使用 node gulp 等工具)、 
* 敏捷開發(極限開發 TDD BDD 等)、 
* 新技術(HTML5 ES6 Tyescript)。 
整體來講,主要仍是須要四點能力:1.思考 2.抽象 3. 懶(善用工具)4.學習速度。不過,前端相比後端要簡單不少,但優秀的前端工程師倒是嚴重的供小於求的狀態(各個創業團隊基本都是處於跪求前端的狀態ajax

相關文章
相關標籤/搜索