掘金 后端 ( ) • 2024-06-25 14:22

PHP,在咱们这是最好使的背锅侠

最近在清理一些收藏夹的一些旧的文章,无意间看到了当年自己收藏的几篇讲某某公司为什么从PHP转Go、转Java、转Python,当然后面几个还有互转的,但我始终没发现有人写过哪家公司是从其他语言转PHP的,这个现象让我陷入了一些沉思,我发现PHP真的是咱们这最好使的背锅侠。也可能是因为它的Logo是个大象所以比较能背吧

五六年前我还很爱看这些帖子,觉得这些文章里说的都好有道理,五年后再经历过上家公司隔三差五换CTO、被驱赶着一会儿砌东墙一会儿垒西院后,我发现文章里说的那些因为性能、成本、团队发展、业务发展因素绝对不是一个中型规模的公司换技术栈的首要因素,最起码在咱们这不是首要因素。

咱们国内互联网发展的这十几年,PHP真的是最好使的背锅侠,不管你的领导在职场上遇到什么问题,都可以先甩锅给它,它接过的锅包括但不限于:

系统在线上老出问题,怪PHP

系统在线上老出问题,要复盘要背锅,但背锅不能说自己水平不行呀,算了怪PHP吧,反正它也不会反驳。怪PHP是动态语言,语言限制不严格,经常注意不到的地方就埋坑了,我们后面一定要重构。

如果还是以前那拨人干这个活,不管拿什么语言重构了,大概率还是以前那个B样,因为他们只是把原来的代码换了一种语言重新写一遍而已,从来不会想自己是不是哪里设计的本来就不对。

更有甚者,拿着PHP的思路写Go、Java的代码,写Go在main方法里手动init一堆东西、代码里定义一堆map[string]interface{} ,写Java整了个多线程去访问类属性还不加锁,这些都是降本增效后接手了不少离开的人负责的项目后我亲眼见的。

公司IT成本居高不下

系统不停的加服务器,怪PHP性能太低,只能单线程处理。

咱们这有几个公司的访问量那么大呀,大部分一天也没有几个点击,就这还能赖到PHP身上,大概率是一堆慢查询跟那天天执行,你换成C++、RUST 它也不好使啊。

空降Leader 肃清团队

这个现象也特别常见,很多人在网上会问为什么一家公司的系统有三种编程语言,很多人回答这个语言适合干什么那个语言适合干什么,我现在再这类回答就想笑,其实真正的答案是这个公司换过几次CTO,以及它自己带来的人会什么那么这家公司就有几种编程语言写的系统。

空降来的技术总监,想办法肃清团队,把老的不听话的人都清理出去,这个时候怪PHP各种不行,影响我们未来业务发展和上市,当然这种情况团队不管用什么开发语言一般都会被说各种不行,只不过是排除异己的一种手段。

只不过拿PHP背锅,说要换成其他语言的技术栈的时候,底下的程序员没准儿还要叫好呢,你把Java换成Go、或者把Go 换成Java试试,去年我们这空降CTO,让我们从Go转Java 还有同事在某匿名职场论坛上大书特书喊冤,说某某某开历史倒车,带着我们拆了Go做的中台转Java,洋洋洒洒说了一大堆。

其实人家来了看你是Java,还得让你转Go呢,拆中台、转技术栈无非都是肃清团队排除异己的手段,小兵适应好的就留下,大头兵、中层不过来站队的就干掉换成自己带过来的人,哪怕是新招的那也是我的人对吧。

KPI 和 晋升的垫脚石

哪怕没有技术大领导的空降,在这个人人KPI,天天OKR的时代,谁都得没活儿自己给自己想活儿,不然咋显得你的团队干的热火朝天,天天9点以后下班呢 (其实是吃完饭找个会议室开黑开到八点半回工位再喝点公司的水下班)。

那这个时候PHP就是最好的垫脚石了,各种给上级画饼,或者上级也是想让谁晋升啦,赶着晋升窗口前半年就说:xxx系统年久失修恐影响未来公司发展,现在我们要对其进行重构使用的是时下最Fancy的语言XXX,目前这个项目由xx来负责,他在团队中一直是比较能扛事儿的。

你看这样一通操作下来,晋升不敢保证,最起码高绩效有了。

好吧,以上就是我对这个现象背后原因的一些分析和个人的一些观点,不一定全对,也不适用于分析那些真正以技术为驱动力的公司。

大家爱给编程语言比高低,其实适合自己的就是最好的,比高低这个事儿就跟互联网上非得给那些足球、篮球明星排历史等级一样,更多的都是主观的,不管你是把天赋不停地带到其他地方终于被吹成副Goat,还是在母队跌倒了再爬起来的图图、约胖们(寄姆姑我不知道算不算在这里面)都有吹点和黑点,毕竟人爱看,爱看了就有流量,有流量就能养活一大帮人。

最后

文章持续更新,可以微信搜【网管叨bi叨】阅读,宫粽号实时获得文章推送

结尾推荐一下我研发的画图课,这周更新的两篇文章 从零开始学会画系统架构图 手把手带你用公式拆解系统、画架构图,专栏正在更新中,涵盖了多个程序员内功的提升,现订阅人数已过百,,希望大家多多支持。

订阅方式一:宫粽号专栏《程序员的全能画图课》

订阅方式二:小报童渠道 https://xiaobot.net/p/dev_img 。