2019年了,“PHP是世界上最好的语言”这个slogn已经说了四五年了,说的有板有眼,甚至在 2017年被官方认证。这么多年了,PHP的市场依然庞大,100多万的PHP程序员群体,二三线依然旺盛的PHP需求和居高不下的薪资,证明了PHP在中国的生命力之顽强。
前几天,有一篇爆款文章,说PHP 早已不是十年前的模样,文章内容还是比较务实。可惜的是,国内PHP就业者大多还是十年前的模样,PHP面试还是十年前的模样。
我在2003年接触互联网开发,使用过多种编程语言,目睹PHP风云变幻16年,面试过时年最小18岁,最大41岁的web程序员,也被比自己小的95后,比自己大的70后面试过。总结自己这么多年来自己的从业经验,也颇有感触。我面哭过程序员,也被程序员面得欲哭无泪过。
公司:怎么寻找一名PHP高级开发
1.首先写好JD,展现自己的专业。
程序员市场鱼龙混杂,参差不齐,要想得到一名合格的、满意的PHP开发人员很难,很多时候甚至要靠缘分。想要获得千里马,不说学刘备三顾茅庐,至少也得拿出自己的诚意。
比如,乱写JD(job description,是指职位描述),不仅是一种不专业的表现,也是一种毫无诚意的做法。非常荒唐的是,很多高级开发的JD和初级开发的JD并没有任何区别,甚至是从其他公司的招聘启事上抄袭而来,错别字连天。
随便翻一个,比如下面这位:
槽点不少:
- 程序员最忌讳说精通,这倒不是谦虚,而是知之为知之。精通PHP框架、linux系统,前者还好说,后者简直是笑话
- Mencache专业名词拼写错误。
- Apache,Perl 等过时且不合实际的技术名词,说明写JD根本就没用心。
再比如,赶路一小时,等待半小时,面试三分钟,这样真的好吗?
2.明确职位定位
你需要招聘的到底是PHP全站(栈)程序员,还是招聘项目经理,或者只是一个带团队的精神象征,或者你需要的是一个技术专家。
我有一次面试某公司PHP技术总监,对方扔进来一套笔试题,题目大多是
PHP中isset和empty 的区别,怎样用CSS实现圆角,以及CSS绝对定位,用jQuery实现tab切换
这类的烂题。我是冲着你几万一个月的技术总监面试去的,你就给我这种题?
后记:虽然我强忍做完了,但去意已决。
你如果只是要招聘一个全站程序员,就不要打着招聘PHP技术总监/架构师的幌子,坦诚地写上招聘PHP技术主管/熟手即可。
4K的工资招不来技术总监,拿着3W一个月的技术总监也不该去干4K的活。
3.务实、不迷信履历
作为高级开发和管理,其面试需要不同于一般的流程,想要得到一名高级程序员,你就需要有毒辣、刁钻的眼光。
牛人往往有不同于常人的性格和脾气,你如果只是觉得不喜欢这个人的个性,你可能就错失一个人才。你要搞清楚自己需要的到底是什么。
有的公司过于迷信内推和大公司履历,对于内推,连基本的面试都没有,甚至让内推者去面试,这简直是招聘大忌。还有过于迷信大公司履历的,你真的了解面试者本人的真实水平。他是镀金归来的螺丝钉,还是浴火重生的凤凰。
你真的需要他有几十人的带队经验?你真的非本科学历不要?你真的非BAT履历不要?
4.专业的面试
让一个初级程序员去面试一个高级程序员,你觉得能面出真实水平么?
像面试应届生那样去面试一个高级程序员,合适吗?
仅仅面试不到10分钟,你就了解透了?
因为一个失误就全盘否定?很多面试官从来不照着面试者简历去问问题,而是只去问自己拿手的,一旦面试者表示不熟悉,就全盘否定,这种毫不合格的面试官简直是个大败笔。
专业的面试,需要专业的面试官,全方位,多角度了解。在我面试别人的过程中,至少要花费40分钟,才对得起别人来回路上花去的两小时(当然,在面试时间上,我会实现征询面试者后面是否有事要安排)。
求职者:怎样成为一名PHP高级开发
作为面试者,又该怎么做呢?
1.往高看,往广看,不投机取巧
PHP作为一门脚本语言,fast and dirty,可以让人很快获得成就感。但正因为太容易获得成就感,比如学习三天就可以作出一个简单的留言本,这就让很多人迷恋这种粗暴简单的开发模式,沉浸于PHP小世界中,真的是让人遗憾。
我有过很多PHP网友,聪明有余,可惜像王安石笔下的“方仲永”,过早的获得成就,也过早地毁掉自己。
PHP是一个君强臣弱的语言,也就是说PHP的功能很强大易用(尤其是数组,字符串,数据库这三大杀器),开发组也很强,比如有鸟哥这样的牛人。可惜太多人把PHP很强误认为自己很强,成天抱着“PHP是世界上最好的语言,其他语言都是垃圾”,“鸟哥是亚一程,是亚洲最牛的程序员,PHP程序员都很牛”,“PHP程序员前端和运维都是最牛的,甚至比专业运维还牛”这些大言不惭的论调,拒绝接受其他语言。
很多PHP程序员对其他语言,比如Java,有着不共戴天的仇恨。要知道,PHP5在发展中,不知吸收了Java多少营养,比如OO语法完善,SPL,异常体系,直到现在,PHP里最主流的框架如Laravel吸收了Spring体系里多少概念。这些很多PHPer当年嗤之以鼻的Java味道,如今不也很香?
PHP是一个重业务,轻工程的语言,但我不希望你是。这么多年来,其实PHP吸收了不少其他语言的优点,但是输出的大多是一些业务框架,在软件工程如最近几年的微服务上几乎毫无建树,都是被动的跟随。
少一些抵触,多一些虚心学习。
另外,我还认识一些网友,热衷于投机取巧,混各种圈子,copy各种开源框架然后改成自己的名字发在github和各种朋友圈,多次被网友抓到实锤仍不悔改。这真不是一个好现象。
2.扎实的理论基础
不少PHPer草莽出身,过于迷恋“复制粘贴一把梭”,甚至对理论嗤之以鼻,什么英语,什么数据结构,算法,操作系统,统统不入他发眼。反正没有他不会做的网站。
这就是没有正确认识到 网站和软件的区别。网站开发,或称web开发,说的不好听,又叫CURD开发,只是软件开发的一小部分,编程的领域大得多。能实现功能离一名高级程序员还差的太远。
懂一点数据结构和设计模式,你的代码才能算代码。
有些PHPer一看到笔试题就摔门而走,就是轻理论导致的后果。
3.分清工具和技术,保持技术敏感
什么是工具,什么是技术?
比如会熟练配置Nginx,确实是一个了不起的能力,也是工作中必须的,但是,不要太迷恋于自己会的那点工具。学会Nginx配置,基本花一天时间能掌握90%的配置,大部分人止步于此。
要知道的是,你只是熟悉Nginx配置,而不是熟悉Nginx。
很多PHPer迷恋于各种高并发和架构,言必称“集群,分布式”,实际呢?只是迷恋于 MySQL配置,Redis安装,Docker使用等各种工具,一问他
分布式中的CAP是啥?你的架构是CP还是AP?你说你用了MQ,那MQ怎么保证消息到达率?你的redis是怎么做高可用的,一致性hash画个图?MySQL索引怎么优化?为啥B+树能提高性能,能提高多少?
他就懵了。
多踏实一点,多看点源码,比看一堆高性能和架构师的博客要有用的多。把花在折腾框架和配置的时间分一点在源码上岂不是更好?
另外,对前沿技术的热爱,虽然不是判断一个人是否是高级程序员的唯一标准,但也是一个重要的标准。连github都不知道的PHP技术总监,我认为大概率是不合格的。
当然,一个知道swoole的PHPer,也不一定就说明他有多优秀。
4.正确看待技术、管理、业务的关系
“30岁还在写代码是一种悲剧”
“我是技术总监,凭啥要会写代码”
“谁要是面试让我写代码,我就走人”
“技术有啥用?懂业务才是第一”
我只能说,将军都是从士兵走过来的。技术为主,管理为辅,我想会比管理为主有更强的生存空间。至于业务,固然重要,但是流通性远小于业务。
当然,人各有志。
关于这个话题,三言两语说不完,不知大家还有什么看法?
互联网活化石,从事开发16年,如果你热爱编程,请关注我。