PHPer 请停下来好好想一想,你到底想要什么样的出路(上篇)(转)
做 Coding10三年了,恰如每一个职场中人一样,遇到了需要转型的时刻,这个转型不在于个人的意志,而是大环境使然,这使得我们必须在必要的时间节点调整自己的职业规划。
很多人都觉得职业规划是一个很虚飘的事情,其实不然。那些有着坚定奋斗方向并具备关键时刻扭转颓势的人一直都在前方奔跑。
做技术的人,不能太执念于技术,而是应执着于自己的目标和归途。有些公司,有些职业可以随遇而安,甚至彻底躺平。技术行当却绝不可以,那些在应用层求生存、求发展的人尤甚。
记得 5、6 年前,移动互联网的超级爆发时期,满大街都是各种二维码。望京 soho 街区甚至成为扫码一条街,壮观乎异常。当时就感概:「 出来混,迟早是要还的 」。
我做 Coding10 是偶然,或许也是天意安排。07 年底一场病让我只能在家静养,百无聊赖、就把 Coding10 搭起来了,初始写写博客,还是很无趣,在用户怂恿下开始录视频,现在看早期的时候,依旧能感受到彼时自己病怏怏的状态。
初做 Coding10 时,我把目标瞄向了 Laravel,因为在 PHP 这个圈子来说,这个开发框架是最合我胃口的,它追求的是开发效率的极致化,其实这也是 PHP 这门语言的天然基因优势,它帮开发者摒弃了各种限制和细节,让开发者专注于业务的开发,它的过度自由让它在前期澎湃发展,却也因过度自由而丧失了执行效率方面的竞争优势。这也恰如如今的世界,美欧为代表的国家崇尚所谓 “自由”、“民主”,加之党派竞选制度,施政的效率、国家的整体规划能力相较于中国,必然是超大的势差。中国时刻都保持着对自己的绝对掌控,经过了 13 个五年计划,央企更是都被培养成了具备超级竞争力的利矛。
在此我并没有贬低 PHP 或者说西方的体制。在国家执行力的层面来说,中国的体制优势谁也否认不了。就像我们用的编程语言一样,很多搞 PHP 的偏偏看不上 PHP,这是一个挺滑稽但是挺值得大家思考的事情。
出现这个问题,主要就在于 “年轻”,或者说开发者自身的目标不明确,没有对自己的职业做过任何的规划,因此对于自己手中的工具也不会有深刻的认识。
最早我用的语言都是 C,C++,Java,这些语言都是强类型约束的,而这只是语言层面的约束,而使用这些语言的公司还有其它方面的约束,参数的命名,函数的命名、类的命名、文件夹的命名、文件的组织、库的生成、文档、注释等等都是有硬性规范的。包括项目管理更是如此,不管是瀑布、还是敏捷开发等等都具备极正规的流程把控的。在华为更是严苛,当初在华为终端新人必须还要经过这个规范的考核后才能接触初级的编码工作,我考了 3 次才通过。我就是在这种环境下开始并度过了自己的头 7 年职业生涯,当然不是在一个公司,而是我头七年所在的公司都是这种风格,只不过有了华为的折磨,后来的公司认定你必定是合格的,你已经形成了自我管理的习惯,也就完全没必要做无畏的考核了。
接触后台 PHP 开发主要是曾经有项目为 LG 智能电视和现代车载系统做应用,我们一直做的都是客户端,客户端玩腻了之后,总觉得自己的脖子始终被后端卡着,我就奔向了所谓的 “全栈之路”。当初我有 Java 的基础,但是服务器端我没有使用 Java 的后台框架,原因非常简单,因为我自己的目标是成为自由职业,当时的 Java 后台框架都太重了,而使用 PHP,我甚至不用学它,因为有太多的 CMS 可以直接部署,所以 Wordpress 和 Drupal 都折腾过。但是我真的不喜欢它们,因为它们走了另外一个极端,你只能在它们提供的严格规范下工作,你必须采取一种非常丑陋的方式去定制它,去扩展它,而且把大量的时间消耗在处理无聊的兼容性和排错上,工程学上也毫无美感,就是在堆砌各种功能代码,并让它们勉强运行起,太多的层面不由自己掌控,这种感觉很让人沮丧,但 PHP 的开发效率却始终是我的最爱。
后来我不爱用 PHP 了,就是因为它对于喜欢掌控开发过程和整体流程的人士来说不友好,对于公司来说也是如此,你无法使用它进行更好的团队协作。它太自由了,自由到很烂的代码也能跑起来。这绝对不符合公司们的需求,团队项目中非常核心的一个指标就是可控、可协同。而大部分 PHPer 对自己要求太低了,各方面对自己要求都很低,只要让项目跑起来就好,而没有更高的技术追求,至于为什么从未追究过。
我重新回归是因为 Symfony 和 Laravel 这个框架以及 PHP Composer 带来的全新业态,这也是全球 PHP 圈子重新振作的一个非常标志。这让开发者能够主要自己的开发流程,企业也可以使用 PHP 进行更好的团队协作开发,自己也掌握了更佳的主动权,可以更好的优化和组织项目,项目的规划与执行能够结合,每一步都变得可控。,现代化的编程方式让人感觉也非常的爽,你可以好好打磨自己的技术,提升自己的能力,而且开发效率比过去还要高。
然而在此期间,中国移动互联网的世界是另外一个天地,Java 天生就具备项目开发的各种优势,它是一门极其均衡的语言,生态发展得也非常健康,这对于大公司,大项目来说是佳偶良配,大型互联网公司选择 Java 可谓毫无意外。长达 10 多年的 PHP 衰落论从未间断得出现在每一个 PHPer 耳边,它并没有衰落,而是它一直都在自己应该在的土壤和环境中生存,那些超大型的项目为了项目的可控以及运行效率,不用 PHP 是极为正确的技术选型。就像七牛、B 站选择 Go 重构自己的部分业务一样,是因为有些业务某些语言具备天生优势,它处理高并发就是高出其它语言一筹,实现方案简单易管控,能够让企业在服务器硬件节省几万台服务器资源,且提供更稳定可靠的服务,同时运维整个项目的成本也会大幅下降。每门语言都找到了自己的生存空间和生存土壤,可是很多开发者却没明白自己。
选择 PHP 的开发者,一定要深知 PHP 的优势是什么,它的业态环境又是什么?目前 PHP 开发更适应中、小公司的业务;大公司使用 PHP 会用它做探索性、试验性项目的前期市场验证,可以肯定的说,大公司有 PHP 相关的职位,但是并不多。如果你的目标是大公司,那 PHP 真的不是一个好的切入点。
Java 是一门均衡性语言,兼顾了开发效率、执行效率。更关键的是从业者有一个明确的技术线进行学习和提升,这让公司在招聘开发者的时候可以更好的考核开发者的能力水平,这也是大公司喜欢它的一个重要原因,这便于对开发者评级和定价。进一步保证了能够找到能力合适的人参与公司的项目,保证项目的可控和质量。开发者需要花费更多的时间和精力才能搞定它。
Go 是 很多 PHPer 转型时走的另外一个极端,Go 的就业市场相较于 PHP 只低不高,大部分公司用它只是做辅助性的开发,而非主体语言。PHP 虽然执行效率上比不上 Java 和 Go,但是满足中小型项目却是绰绰有余,生态比 Go 也好很多。很多人转型选择 Go,无非就是因为它简单易学,或者说更重要的原因是跟风,被自媒体的风向所诱导。
另外作为开发者,永远不要指望一门语言管咱们一辈子的饭,多学那么几门语言都是很正常的,不存在转不转的问题,为什么要把自己局限住,我们又不是美团、淘宝,它们逼着商家二选一是出于自身利益,我们逼着自己搞二选一干吗?坑自己吗?
我们一定更要明确自己的目标,你追求什么样的目标,你就朝着什么方向去走,你就得借助能够达成这个目标的最有力的工具和手段。当你的目标和你目前的努力方式完全不同轨的时候,你每天都是痛苦的,渐行渐远的折磨极耗人的心神,甚至于你早上刚起,你就已经自己已经被掏空了。
至于我为什么选择 PHP,那是因为我想成为一名自由职业者,我需要以最高的效率、尽可能多的时间把全局的技能全部掌握,PHP 能够让我更好达成这个目标,让我有更多的机会去跟人接触,跟外界的机会接触。
PHPer 想在公司里拿高工资的只是少数,大部分人技术水平并不高,PHP 简单易用导致很多开发者对自己也很放纵,没有好好提升自己。很多工作多年的 PHPer 拿不到高工资也挺正常,想拿高工资,你就得提升自己,让自己在这个圈子有存在感,默默无闻没人会看重你。
我们的目标也不是所谓的 “全栈工程师”,不是什么管理层,在国内公司们内卷的太厉害了,一批批的公司倒下,一批批的公司起来,然后又一批批的倒下、一批批的起来,你如何保证你到了下一家公司还是管理层?下一家公司又能存活多久?你的下下家呢?管理层的岗位会比技术岗更丰富?它只会更少,我们能走多远多高,不取决于咱们的技术水平,我们的个人品质和为人处世更重要。
有点累了,咱们下次再聊吧,请大家记住一点,如果你选择了 PHP 并想长期走下去,你的目标不是全栈,而是成为一名自由职业者,而这也是 Coding10 转型重点要做的事情。元旦前 Flutter、小程序的内容我都会制作完成,让大家在前后端都能搞定,技术只是一方面,合理的规划和执行才是重中之重,有了技术上的优势,一定要转化为职业发展的优势,有了机会一定要去抓,觉得自己抓不住也要上,不上永远没机会。这事儿不像大家想的那么难,因为你身边就有很多这样的人,很多用户不也是看着我从零开始一步步做起来的吗?