V2EX大牛的指点
2019獨角獸企業重金招聘Python工程師標準>>>
first:?
我認識一些深圳、杭州、北京的朋友,他們往往更關注以下內容:?
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 果然是世界上最大的同性別交友網站,哈哈。但這不是開源。另外,適當使用各自開源工具,可以成倍提升工作效率。?
P.S. > 你們的代碼不寫測試么??
P.S. >> 大學里打 LOL Dota2 么??
~ 花了 20 分鐘看了你的東西,并寫下這些,只為了幫助 LZ 并無惡意請圍觀朋友勿噴。
second:
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 等 現代化的工具輔助你開發?
(又是半個小時 ~ 哈哈 ~ 歡迎提問)?
~ ~ 其實,我也是山東的 ~ 哈哈
third:
額,前輩算不算,應該是同齡人吧。我雖然自己業余玩過很多,但談得上做可以嚴謹工程項目的大概只有 Python 了。你說的前端是指的 Web 端么,我們也吧 Android iOS 叫前端。Web 的話依我的看法,當下前端開發者應該慢慢學會放下對 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.學習速度。不過,前端相比后端要簡單很多,但優秀的前端工程師卻是嚴重的供小于求的狀態(各個創業團隊基本都是處于跪求前端的狀態,所以我們采用的方式是去 themeforest 購買模板然后套用、修改 T_T)。
非常感謝 v2exer Feiox,感謝你寶貴的時間和經驗
轉載于:https://my.oschina.net/jasonwung/blog/494690
總結
- 上一篇: 梦到青蛙蛇预示着什么
- 下一篇: UML该元素的行为为基础的元素