大学生学习编程(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

相关文章
相关标签/搜索