大学生学习编程(PHP)
在v2ex上看到一大三的求职实习,然后有人给出了建议,个人觉得也挺好,做个记录。/ 原帖地址
@ARjson问:
大三的学生党,求实习岗位,现居北京。
后端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答:
一答:
我认识一些深圳、杭州、北京的朋友,他们往往更关注以下内容:
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 果然是世界上最大的同性别交友网站,哈哈。但这不是开源。另外,适当使用各自开源工具,可以成倍提升工作效率。
二答:
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 等 现代化的工具辅助你开发
三答:
当下前端开发者应该慢慢学会放下对 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.学习速度。不过,前端相比后端要简单很多,但优秀的前端工程师却是严重的供小于求的状态(各个创业团队基本都是处于跪求前端的状态
大学生学习编程(PHP)的更多相关文章
- DSP28377S - ADC学习编程笔记
DSP28377S - ADC学习编程笔记 彭会锋 2016-08-04 20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...
- 开始学习编程了…… 2015年九月七日 …… 31岁的Me.
给自己下的命令:做今天开始认认真真地开始学习编程,一年后的今天一定要找到一份编程的工作. 为什么要学编程?:因为不想回以前的圈子,“创业”快三年什么都给“创”没了,咳……,不过呢,倒是领略到编程能带来 ...
- 用php理解指针--写给刚刚学习编程的人
在刚刚学习编程时,可能for循环什么的还是可以理解,但是当学习到指针的时候,课上估计很多人就睡觉去了. 现在用两端php程序说明指针 先写一个简单的,大家都理解下 <?php class tex ...
- centos5.5字体为方块问题的解决_深入学习编程_百度空间
centos5.5字体为方块问题的解决_深入学习编程_百度空间 centos5.5字体为方块问题的解决 一.yum -y install fonts-chinese二.yum -y install f ...
- 我的学习工作经历,一个园林专业中专毕业生的IT之路 学习编程 创业
我的学习工作经历,一个园林专业中专毕业生的IT之路 魏琼东,男,1983年生人,祖籍甘肃陇南人,首先得感谢我父亲给我取了这么一个好名字,至少我非常喜欢他,因为目前还没有发现和我同名的人. 我是1998 ...
- 如何学习编程和做好DBA
关于学习编程和做好DBA的关系 我这里只是讨论SQLSERVER DBA 我发现很多DBA都是从程序员开始做起的,一般做了4.5年之后就转型做DBA或者管理或者销售啊. 为什麽一开始不直接做DBA,D ...
- TJ Holowaychuk是怎样学习编程的?
TJ Holowaychuk是怎样学习编程的? 学习了:https://blog.csdn.net/wozaixiaoximen/article/details/49507111 Q:TJ Holow ...
- 看看大神 Paul Graham 对如何学习编程的回答
前言 我翻阅自己之前写的博客文章,发现在 2015 年我刚开始学习编程的时候,翻译了一段 Paul Graham 关于"How can I learn to program?"的回 ...
- 初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!
编程并不是说代码怎么写,框架怎么用,业务怎么转换为代码逻辑,这些都不是编程的要素(但却是工作的刚需......).我认为按照下面这个路线来学习编程,会使自己在学习的路途上少去很多问题(比如为啥会有多线 ...
随机推荐
- Makefile 使用总结【转】
转自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编 ...
- 中颖4位MCU的减法汇编指令
1, SUB M 执行动作: M - A -> A, 如果M-A的过程中没有产生借位,则CY= 1,如果产生了借位,则CY= 0. 其中,A为累加器. 2, SBI M, I 执行动作:M - ...
- Multi-source Replication
MariaDB starting with 10.0.1 Multi-source replication means that one server has many masters from wh ...
- NSAssert用法
今天突然发现了一个开发ios程序时调试的好帮手-NSAssert()函数.而且和NSLog()函数一样简单易用,代码如下: NSAssert(x!=0,@"x must not be zer ...
- YTU 2991: 链表节点逆置(线性表)
2991: 链表节点逆置(线性表) 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 6 题目描述 设计一个算法,将一个带头节点的数据域依次为a1,a2,-,an(n> ...
- XPath 元素及属性查找
实例 1 基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径 /AAA 选择根元素AAA <AAA> ...
- 使用 Filter 完成一个简单的权限模型
****对访问进行权限控制: 有权限则可以访问, 否则提示: 没有对应的权限, 请 返回其访问者的权限可以在manager那进行设置:
- 一些常用的SQL查询语句
学习网站:http://www.w3cschool.cc/sql/sql-tutorial.html 一:查询所有表的属性 SELECT 'ALTER TABLE '+ CASE WHEN O.sch ...
- Poj(1469),二分图最大匹配
题目链接:http://poj.org/problem?id=1469 COURSES Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- myDatePinker设置开始时间不能大于结束时间
操作时间起: <input type="text" name="startTime" id="startTime" style=& ...