php高级程序员所要掌握的技能? 财富值49

2016-08-19 07:22发布

PHP高级程序员所要掌握的技能?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
很多工作几年的php开发者都会有这样的迷茫,php开发多了,无外乎“增删改查调接口”,真的是这样吗?

实际上开发者除了把自己当成php程序员,更应该关注php以外的东西,将自己定位于能熟练使用php搭建系统的工程师。

我认为高级php工程师可以往几个方向去发展:
1.深度方向
一个工程师要往高阶发展,必须同时强化几个技术能力:
  • 设计能力:懂得如何利用分层、面向对象、设计模式等设计组织代码
  • 编码能力:熟悉php语法特性,知道怎么用一两行代码代替初级开发者十几上百行代码。
  • 工程能力:学会如何快速构建工程,学会如何构建可读、可扩展性的工程,学会如何避免埋坑给后人,学会如何与人协作维护工程,学会如何保证工程质量,学会如何权衡利弊,学会如何在困难面前妥协。
  • 抽象能力:初级开发者通常会等到逻辑重复时再抽象封装(甚至怕拖进度或者懒惰而放弃),而高级开发者通常一开始写出的逻辑就为了以后的重用,并且深知一开始多付出的思考设计时间最终都会因为复用得到回报。很多开发框架就是一步步抽象/埋坑/优化而来的。
  • 架构能力:一个业务系统如何划分模块,模块之间如何协作通信,每个模块的技术选型如何做,系统细节如何规避问题等等。
  • 优化能力:学会如何评估、分析、提升系统性能。优化途径很多,产品功能优化、业务逻辑优化、基础技术优化、操作系统底层硬件的优化等等。

2.广度方向
php开发基本上离不开操作系统、存储、缓存、网络、webserver等等配套设施,因此这也是高阶必备技能。一旦业务系统出问题了,必须要能快速定位解决(不一定自己解决,但要知道找到哪个负责人来解决)。

比如存储mysql,高级开发者会懂得利用索引、利用分表分库提高查询性能,懂得负载均衡和灾备提高性能提高可靠性(虽然是DBA的工作,但了解了有助于出问题时排查)

比如缓存,高级开发者懂得如何有效且最大限度利用缓存系统提高应用性能。

比如http,初级开发者往往只懂得http网络请求就只一去一回两个包,高级开发者会去深究网络七层模型、会深究http请求的各个环节(DNS、三次握手等等)

比如web前端,学习如何依靠浏览器缓存、CDN缓存、压缩代码、合并文件等等提高前端性能,学习如何进行前端安全攻防。


3,软素质
懂得团队管理,项目管理,沟通技巧等等。(有空再展开)

以上观点同样适用于其他语言的开发者。
这个问题我思考过,并且还在思考
对你的水平不了解,但是可以大概的给些建议
1. 看一个自己喜欢的源码,搞清楚是怎么运转的,大的看不了可以看一些小型的
2. 拓展广度,操作系统,数据结构,网络原理。
3. 服务器编程接触一些,php不光可以搞web
这些会增加你的底气。
我自己在思考的几个方向
1.根据自己的经验写一个自己用起来比较舒服的框架,当然不限于web,也可以是服务器编程方面的。
2.往c语言方面发展
3.用php搞些数据挖掘,类似python 的用途
正好Yii是我最熟悉的php框架,这个问题我想回答下。

你用的CRUD,是用gii生成的吗?操作数据库是用的是ActiveRecord吗?grid用的是zii库的CGridView吗?
这里面其实有很多可以思考的问题,比如
  • gii是一个module,它的源码是如何定制components的?它只用一个密码来管理user的权限,它是如何替换掉你用的WebUser的?
  • 用ActiveRecord进行CRUD的时候,它和DAO的性能差距有多大?它的性能都损耗在了哪里?如何弥补?它与cache如何结合使用达到最优?
  • 用ActiveRecord进行CRUD的时候 ,如何使用after save、after find、after delete这些event以优化代码?再深入一点,event和behavior是如何结合的?
  • CGridView的ajax部分是如何写的? CGridView的filter(就是头部下面那一栏的筛选框)在什么情况下才会出现? 深入一点, CGridView的column如何深度定制?
还有一些别的问题,也可以思考
  • 你写的js,是如何和Yii结合起来的?是用的Yii::app()->clientScript吗?是用的registerScriptFile或registerScript方法吗?它们又是如何向view插入script标签的?Yii在这块是如何优化的?
  • Yii用AssetManager来管理私有的css js文件,这东西用的时候有什么不方便的地方吗?如何优化?
  • 再问得大一点,一个request,Yii完整的处理步骤是什么,涉及了多少个class?

抛开Yii,也有很多问题可以思考
  • 前台的js效果,是否够用就好?稍微长一点的js代码,是不是也应该考虑一下可维护性?
  • 很多js效果,都是重复重复再重复,我们是不是有办法将他们模块化,提高可重用性呢?
  • 用jQuery插件的时候,是否会遇到有相互依赖的插件?有没有用js就能处理依赖问题的办法?嗯哼,js loader?哪个loader比较好用?seajs?
  • 再问个无聊的问题,js css有没有『时髦』的技术呢?coffee script?less?nodejs?咱有必要玩一玩吗?

好吧,其实我想说的就是,『高级程序员』之类不过就一头衔,有人觉得你是,你就是,但它根本不能作为你技能水平的标杆。
我也不觉得一个程序员有什么一定要掌握的技能,我只知道『一个个解决每天所能见到所能想到的问题,这本身就是对自己最好的提高』。
我的看法:其实没有所谓的高级,把一个一个bug解决,一个一个功能实现就好了(最好可以用不同的方法),能力就自然上去了吧
初级程序员不要考虑薪资问题,如果当前公司做的项目技术含量很高(数据量大,访问量大)别想其它,好好想想怎么把当前的项目做的更好,如果当前项目不行,想办法找相对好一点的公司,程序员有了本事工资自然不是问题。
可以尝试着用yii开发一个小网站,加深自己所学的,然后激发更大的兴趣,我就参照了知乎的样式结合yii,开发了一个类似班级论坛的系统
建议在以下三个层次做深入学习,
第一个层次是PHP技术的深度学习:如PHP字符串、数组、文件和PHP的高级特性以及PHP运行原理等;
第二个层次是Web技术的深度拓展:如深入Http协议、Linux技术、Web服务器技术、前端JS技术、MySQL和NoSQL技术等;
第三个层次是编程思想和能力的拓展:如数据结构和算法设计、设计模式、好代码的原则和技巧、大规模网站开发技术等。
参考 :sijiaomao.com/course.ht
yii是个不错的框架 现在都yii2了,只用过yii1
我倒是比赞同什么这个那个的。。 化繁为简吧。。。PHP 代码的特性 感觉不适合 过深的对象化
所以我有时候 不太喜欢 什么 路由机制。。什么框架。。。
一个高级程序员 应该是能解决 业务上的所有有必要解决的问题
这些问题 并不是 怎么对象化 怎么路由机制 又或什么这个那个机制
高级PHP 程序员 应该更注重实用化。。至少会一个LINUX 上的软件 来解决问题
当然如果会C就可以 修改PHP 以及修改LINUX 软件。。
一个用PHP很多年(1999年开始自学)的屌丝给你一些小建议:
(前提是假设你往web方向发展)
1、PHP运行环境可以非常熟练的搭建,环境问题也可以很容易判别。
这个绝对不是用yum ,apt-get可以学会的;数年以来,我都是 make 环境的,不下1000次。环境一般涉及 Nginx、PHP、MySQL、memcached、radis、sphinx 以及 PHP的扩展。可能比较费时间,就把交女朋友、约炮的时间拿来学这个吧。
2、开源的PHP项目多阅读
我用心阅读过比如 discuz、phpwind、Yii 等。时间不够同上。
一般什么模块划分、业务抽象、代码风格、解耦都能在里面看到一些(不是系统性学习,而是潜移默化的影响);如果你够好奇、有刨根问底的精神,会有很大进步。
3、空的时候看看设计模式、软件工程、重构相关的书
有兴趣就看下去,没兴趣就换一本看;全部都没兴趣就换行业。

以上搞定,差不多可以有自己的技术方向了。

一周热门 更多>