您现在的位置是:首页 > 其他

李清波 2017-08-01 其他 2191 复制当前网址

PHP程序员应该如何做职业生涯规划?

我说PHPer的水平区分(转) 


说句实话,写这个真够无聊的。

本来看了某位大虾的类似文章,腹诽了几句也就算了。但是昨天晚上有个客户拿着这篇文章问我: 你丫的自己做外包,你算几段PHPer?遂感觉那篇文章对某些半通不通之人的误导之深。无法只有写此文章表明我对PHPer的水平区分的立场。


关于具体收入水平,总的来说因为这几年PHP培训班的加多,大量PHP新手开始搞乱市场,所以很难说清。在此贸然写出有误导之嫌,而且收入水平和所在地区有很大的关系,例如重庆的同水平PHPer肯定比北京的工资低,但在重庆省着点花钱反而比北京剩的工资多。不过,PHP的市场确实在逐步混乱,目前因为培训班/大学选修课等原因,初级PHPer大量增加,故初级PHPer的工资市场有步asp呈现白菜价的趋势

,但高级PHPer仍然极为缺乏。


但我认为:工资水平和实际技术水平基本成正比,目前业界信息透明,且到目前位置高端PHPer的圈子仍然极小。大家交换信息极为方便。如果PHP水平不高,但拿到高工资的概率不高,即使PHP技术差能拿到高工资也不能长久。


以下观点属于我的一家之言,您不赞同可以拍砖,可以给我发信讨论,我的mail是252588119@qq.com收 。 qq :252588119。(虽然我不原著,但为了方便交流,我留下了自己的联系方式,敬请谅解!) 目前我职业做网站项目外包,也就是大家所说的自由职业者。

欢迎大家访问我的个人博客http://www.liqingbo.cn

  

我对PHPer的定义: PHPer是工作/程序以编写PHP程序为主,其他方面略有涉猎的人。部分由C/C++ 转来的人,虽然也做php程序,但工作重点仍是C/C++。不能说是PHPer或者不能说是纯粹的PHPer。


对PHPer的划分,我对PHPer划分为以下几个阶段:

      a: PHP 爱好者     (半个PHPer)

      b: PHP 初学者     (PHP Beginner)

      c: PHP 初级程序员 (Primary PHP Coder)

      d: PHP 中级程序员 (Junior PHP Coder)

      e: PHP 高级程序员 (Senior PHP Coder)

      f: PHP 工程师     (PHP Programmar)


以下是对PHPer划分的具体描述:

    

    X: PHPer的共同特点:

       0: 会电脑,能上网.

       1: 知道w3c标准,

       2: 会html,会JS,会PHP.会MySQL.

       3: 知道linux.见过linux运行.

       不满足以上内容者别说自己是PHPer.


以下对不同阶段的描述, 每一个高级阶段都需要掌握低级阶段的技能 . 他们之间具有继承关系. 在初级阶段,由于目前国内的情况.经常需要PHPer兼美工/网管的功能.所以也写了一部分其他技能.


    a: PHP 爱好者

    定义: 以PHP程序为业余爱好,建有或正维护着一个或几个使用PHP技术实现的网站/程序的人是PHP 爱好者.

    描述: 这些人一般不以PHP为谋生手段,他们的分布以网站站长及在校学生为主.

    特征: 1: 会用dreamweaver/frontpage等工具制作网页.

          2: 可以对现成PHP程序进行修改.

          3: 爱好PHP.

    技术要求: 无.


    b: PHP 初学者     (PHP Beginner)

     定义: 准备以PHP程序谋生,准备建设或正在维护一个或几个使用PHP技术实现的网站/程序的人是PHP 初学者     (PHP Beginner).

     描述: 这些人已经或即将以PHP为主要谋生手段,他们的分布以即将毕业的大学生及刚刚加入PHP 程序员行列的人为主

     特征: 1: 能够简单维护/操作/优化linux.

           2: 能够编写PHP程序.

           3: 会MySQL.

           4: 会html/js.

           5: 能够构建符合W3C标准的页面.

           6: 能够胜任简单的服务器维护工作.

     

技术要求: 

    1: 服务器运行系统:

        a: linux: 

            I:   能够安装Linux系统、熟练使用Linux常用命令、知道Vim文本编辑器,会软件包管理.

            II:  能够实际操作用户管理、进程管理、文件系统管理、权限管理功能

            III: 知道并会使用Linux网络配置相关文件、基本配置命令、DHCP、VNC、DNS服务器、Samba服务器. 能成功配置并使以下服务平稳运行.SSH、FTP、Apache,站点登录控制、日志管理.

            IV:  能够使用shell对服务器进行维护.

            V:   能够进行Linux系统安全配置、Iptables、syslog日志管理

                   

        b: windows:

            仅为初学者和初级程序员要求.

            I:   能够安装windows、熟练使用windows、能够对IIS进行优化.

            II:  能够正确配置防火墙、对服务器进行管理维护.

            III: 能够抵御普通的网络攻击.


    2 web页面技术及相关:

    其实这不应该算是PHP的技术.但实际工作中,大部分PHP初学者都需要兼前台/后台/网管的角色.故在此提出,仅供参考.

    

        I:   熟练掌握HTML, Dreamweaver、常用标签、图象地图、表格、分桢框架、表单,Header处理,CSS, 样式表的分类、样式则规器使用,常用的样式、层标签,JavaScript

        II: 各种事件及事件处理程序的应用、window对象、document对象、location对象、body对象、form对象、form表单字段元素对象

        III: ajax及其相关技术.能完成常见ajax页面制作


    3 MySQL技术

        I:   熟练掌握SQL语句.

        II:  熟练掌握MySQL的常用操作.包括安全、访问控制和权限、备份和恢复,复制、导入和导出记录.

        III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.

    

    4 PHP技术

        I:   熟练掌握PHP语法,常用函数.

        II:  熟悉PHP的面向对象编程.并能实际使用面向对象思想进行程序写作.

        III: 熟悉PHP常用库.

    

PHP 初级程序员 (Primary PHP Coder)

    定义: 正在以PHP程序谋生,正在建设或维护一个或几个使用PHP技术实现的网站/程序的人,PHP经验有限的人是PHP初级程序员.

    描述: 这些人已经以PHP为主要谋生手段,他们的分布以刚刚加入PHP 程序员行列的人为主,也有部分加入PHP行列若干年的人.

    特征: 1: 能够维护/操作/优化linux.

           2: 熟练编写PHP程序.

           3: 熟练掌握MySQL.

           4: 会html/js.

           5: 能够快速构建符合W3C标准的页面.

           6: 能够胜任大部分服务器维护工作.


    技术要求: 

            1: 服务器运行系统:

                  a: linux: 

                   I:   熟练安装Linux系统、熟练使用Linux常用命令和某些日常使用的命令、掌握软件包管理.

                   II:  能够熟练操作用户管理、进程管理、文件系统管理、权限管理功能

                   III: 能够熟练使用Linux网络配置相关文件、基本配置命令、DHCP、VNC、DNS服务器、Samba服务器. 能快速的配置并使以下服务平稳运行.SSH、FTP、Apache,站点登录控制、日志管理.

                   IV:  能够对MySQL和Apache进行一定的优化以提升网站性能.

                   V:   能够使用shell对服务器进行维护.熟练使用常用的维护工具.

                   VI:  能够进行Linux系统安全配置、Iptables、syslog日志管理

                   

                  b: windows:

                   仅为初学者和初级程序员要求.

                   I:   能够安装windows、熟练使用windows、能够对IIS进行优化.

                   II:  能够正确配置防火墙、对服务器进行管理维护.

                   III: 能够抵御普通的网络攻击.

           2 web页面技术及相关:

             其实这不应该算是PHP的技术.但实际工作中,大部分初级PHP程序员在公司里都需要兼前台/后台/网管的角色.故在此提出,仅供参考.

                   I:   熟练掌握HTML, Dreamweaver、常用标签、图象地图、表格、分桢框架、表单,Header处理,CSS, 样式表的分类、样式则规器使用,常用的样式、层标签,JavaScript

                   II: 各种事件及事件处理程序的应用、window对象、document对象、location对象、body对象、form对象、form表单字段元素对象

                   III: ajax及其相关技术.能完成常见ajax页面制作.

                   IV:  会photoshop在内的一种或多种图片编辑软件

           3 MySQL技术

                   I:   熟练掌握SQL语句.

                   II:  熟练掌握MySQL的操作.包括安全、访问控制和权限、备份和恢复,复制、导入和导出记录.

                   III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.

                   IV:  知道MySQL常见性能瓶颈的原因及解决方法.并能实际解决.

           4 PHP技术

                   I:   熟练掌握PHP语法,常用函数.

                   II:  熟悉PHP的面向对象编程.并能实际使用面向对象思想进行程序.

                   III: 熟悉php面向对象的特性.能够根据实际运行环境选择开发方法.

                   IV:  熟悉PHP常用库.能够使用常用的php库进行项目开发.

                   V:   拥有良好的编码格式习惯,可以规范的进行代码编写.

           5 项目相关

                   I:   实际完成过PHP项目.或全程参与过php网站开发与建设.

                   II:  能够较为快速的进行项目开发.


PHP 中级程序员 (Junior PHP Coder)

       定义: 正在以PHP程序谋生,正在建设或维护一个或几个使用PHP技术实现的网站/程序的人,有几年PHP经验但是尚未积累必要的代码库和快速开发工具的人是PHP 中级程序员 .

       描述: 这些人已经以PHP为主要谋生手段,他们的分布以加入PHP 程序员行列5年内的人为主,也有部分加入PHP行列更多年的人.

       特征:

           1: 能熟练维护/操作/优化linux.

           2: 快速编写结构清晰,代码格式优美的PHP程序.

           3: 熟练掌握MySQL的操作和常用优化.

           4: 熟悉程序性能的出现瓶颈的常见原因,并能在实际编写过程中避免出现性能瓶颈.

           5: 能够使用某些框架/类库加速项目开发进度.

           6: 能够胜任大部分服务器维护工作.

     技术要求: 

           1: 服务器运行系统:

                  a: linux: 

                   I:   熟悉操作一种版本linux,并能对此版本的linux进行一些调整优化

                   II:  能够进行不停机维护升级.

                   III: 能够熟练使用Linux命令行下操作.

                   IV:  能够对MySQL和Apache进行优化以提升网站性能.

                   V:   能够配置小型服务器集群(双服务器或三服务器).

                   VI:  能够进行Linux系统安全配置、Iptables、syslog日志管理

                 

           2 web页面技术及相关:

               到中级程序员,一般公司都有专门的美工和前台程序员配合工作.故页面制作技术要求同初级程序员.

                   I: 熟悉常见的通信标准.可以根据手册编写出符合通信标准的程序.

           3 MySQL技术

                   I:   熟练掌握SQL语句.

                   II:  熟练掌握MySQL的操作.包括安全、访问控制和权限、备份和恢复,复制、导入和导出记录.

                   III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.

                   IV:  知道MySQL性能瓶颈的原因及解决方法.并能实际解决.

           4 PHP技术

                   I:   熟练掌握PHP语法,常用函数.

                   II:  熟悉PHP的面向对象编程.并能实际使用面向对象思想进行程序.

                   III: 熟悉php面向对象的特性.能够根据实际运行环境选择开发方法.

                   IV:  熟悉PHP常用库.能够使用常用的php库进行项目开发.

                   V:   拥有良好的编码格式习惯,可以规范的进行代码编写.

           5 项目相关

                   I:   实际完成过PHP项目.或全程参与过php网站开发与建设.

                   II:  能够较为快速的进行项目开发.

                   III: 有自己的代码库.可以在项目中进行复用

                   IV:  形成了良好的编码习惯,编写的程序代码清晰,注释清楚.

                   V:   能够对项目中的难点与新技术进行攻关.


PHP 高级程序员 (Senior PHP Coder)

       定义: 正在以PHP程序为主要工作,建设过多个PHP项目,正在建设或维护一个或几个使用PHP技术实现的网站/程序的人,有多年PHP经验,有自己的代码库和快速开发工具的人是PHP 高级程序员.

       描述: 这些人已经以PHP为主要谋生手段,他们的分布以加入PHP 程序员行列5年以上的人为主.高级程序员是PHP项目的核心力量.

       特征:

           1: 能熟练维护/操作/优化linux.

           2: 快速编写结构清晰,代码格式优美的PHP程序.

           3: 熟练掌握MySQL的操作/优化和多数据库.

           4: 能够快速查出程序性能的出现瓶颈的原因,并能根据实际情况进行调整.

           5: 能够使用框架/类库加速项目开发进度.

           6: 有自己的代码库.

           7: 能够胜任大部分服务器维护工作.

     技术要求: 

           1: 服务器运行系统:

                  a: linux: 

                   I:   熟悉操作一种版本linux,并能对此版本的linux进行一些调整优化

                   II:  能够进行不停机维护升级.

                   III: 能够熟练使用Linux命令行下操作.

                   IV:  能够对MySQL和Apache进行优化以提升网站性能.

                   V:   能够配置和优化服务器集群.

                   VI:  能够进行Linux系统安全配置、Iptables、syslog日志管理                 

           2 MySQL技术

                   I:   精通SQL语句.

                   II:  熟练掌握MySQL的操作.

                   III: 熟练掌握 phpMyAdmin或任意一种MySQL管理维护工具.

                   IV:  能够根据实际运行情况对数据库瓶颈进行调整,并适时改变开发方法.

           4 PHP技术

                   I:   精通PHP语法,常用函数.并有自己专注的方向.

                   II:  熟练使用PHP的面向对象编程.并能实际使用面向对象思想进行程序.

                   III: 熟悉php面向对象的特性.能够根据实际运行环境选择开发方法.

                   IV:  实际使用工厂化开发等开发方法进行项目开发.能够使用PHP的特性提升开发速度和程序运行速度.

                   V:   有自己的代码库,有自己熟悉兵精通的某些共用类库.

                   VI:   拥有良好的编码格式习惯,可以规范的进行代码编写.

           5 项目相关

                   I:   实际完成过多个不同方面的PHP项目.

                   II:  能够快速的进行项目开发.

                   III: 有自己的代码库.可以在项目中使用代码库进行快速开发.

                   IV:  形成了良好的编码习惯,编写的程序代码清晰,注释清楚.

                   V:   能够领导程序员对项目中的难点与新技术进行攻关.

                   VI:  熟悉软件工程,能够根据实际情况选用适当的开发模式. 


PHP 工程师     (PHP Programmar)

       定义: 正在以PHP程序为主要工作,并正在进行新产品的研发.可以同时使用C+/perl等辅助提高PHP程序性能的人是PHP工程师.

       描述: PHP工程师是.

       特征:

           1: 精通一种或多种linux.

           2: 快速编写结构清晰,代码格式优美的PHP程序.

           3: 能够进行框架级通用程序的研发.

           4: 能够在程序开发初期就通过项目规划避免未来可能出现的性能瓶颈.

           5: 能够使用框架/类库加速项目开发进度.

           6: 有自己的代码库.

           7: 能够胜任大部分服务器和部分服务器集群优化工作.

        技术要求我就不说了.具体到PHP中级程序员之后,PHP程序员就开始选择发展方向进行分化了.能够到这一步的人,基本都对自己的职业规划有清晰的认识.目前国内此类人才奇少.

  

关于其他:

    1 PHP程序员从中级程序员阶段就开始分化,具体方向根据公司性质,工作条件,自己的兴趣等不一而同.因此需要擅长的详细技能也不太相同.

    例如: 公司使用 joomla 构建网站, 这就要求程序员必须精通joomla. 如果公司使用自研CMS+discuz构建网站,这就要求程序员能够熟练进行DISCUZ的二次开发.强行要求程序员精通这精通那,意义不大.

    到高级程序员开始.PHP程序员由于自己的职业经历.肯定会有自己的专攻方向,有人擅长大负载下程序开发优化,有人擅长项目快速开发.而到这个阶段,如果PHP程序员还需要看这篇文章规划自己的职业生涯.那么请自己列出自己擅长的PHP技术.并选择一种最擅长的技术专攻.

  

    2 关于coder和programmar. 字面上理解第一个是编码员,第二个是程序员.实际因为国内名词的混乱.第一个大多以程序员称呼,第二个目前大多处于项目核心领导层面.故本文暂以工程师称呼.

     coder 是进行少量创新的,大量重复工作的人.

     programmar 是进行新技术摸索开发,并实际领导/带领大中型项目开发的人.

    3 关于 C++ . PHP初期的语法(php3/4时代)和C几乎一样.我当初就是看一下午PHP速成+php手册入的门.但到一定深度之后.有些PHP的特性需要实际阅读PHP源码才能理解(相关文档不全或者不好找到).有些实际项目功能使用C++开发远比PHP效率高.比如我现在做的项目需要爬虫持续海量抓取,当带宽足够的情况时,纯使用PHP实现效率不高.所以必须使用C++. 所以C++到需要用的时候自然而然的就要用了.不过如果有C/C++的基础,学习PHP要轻松很多.

    4 关于面向对象.面向对象还是很帅的,小型工程上使用意义不大,大中型工程可以极大的提升开发效率.在php4的时代对面向对象基本没有什么要求,但是现在需要完整掌握面向对象.

    5 关于JAVA/Delphi 他们和php有关么? 我孤陋寡闻.请牛人指教.谢谢

    6 关于软件工程. 软件工程是一个实际使用中才能学懂的学科.我才疏学浅,在大学的时候楞没学懂.等实际领导项目了.才慢慢的明白其中的含义与奥妙.

    

    8 关于开发模式. 开发模式的好坏直接关系这项目开发的速度与项目的质量.初期死抠模式意义不大.建议有一定积累了再说.

    9 关于名气. 嗯...怎么说呢?高端PHP圈子很小,也就那么些人.水平到了,自然就认识那些人了.

    10 关于第三方库,初期学习掌握一些,比如smarty.到一定阶段需要决定到底是精通第三方库还是使用自行积累开发的库.总的来说,由于第三方库大多是外国人开发,所以国内想要时刻紧跟比较被动,phpBB中文的没落便是一例.如果使用自行积累开发的库,难度较大,要注意通用性和可扩展性.

    11 关于英文. 这个是废话.最低要求是流畅阅读英文文档.


文章来源:https://liqingbo.com/blog-1429.html

评论