V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
uxff
V2EX  ›  程序员

CTO 拒绝 golang,坚持 PHP , v 友怎么看

  •  
  •   uxff · 2019-12-29 16:17:30 +08:00 · 25534 次点击
    这是一个创建于 1823 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

    公司原有项目是 php,业务量也不小,每日 100W+订单。

    前部门负责人想在公司内部推广 golang,希望用 go+服务化改造业务,而且推荐内部从 php 转岗,还招了几个 golang 工程师带队。

    一段时间内公司已经改造和上线了 10 多个服务,结合 codepipeline,k8s,ingress 等已经很接近 devops 了。

    但是由于需求变化快,PHP 岗位缺人,大量人力被调去做业务层开发等多种原因,服务化进度其实很慢。

    后来部门负责人走了。

    新来的 CTO 说 golang 产出慢,golang 招不到人,golang 招人成本高,golang 项目不好维护等理由,突然决定公司停用 golang。坚持用 PHP 开发。对业务优化提供了升级 PHP 版本,使用依赖倒置等设计模型,对于业务服务化设计没给出具体指导方案。

    对于升级 PHP 等措施我们是支持的,但是对于拒绝 golang,我们是有些心凉的。

    对此 v 友怎么看。

    175 条回复    2020-05-24 12:28:06 +08:00
    1  2  
    ericgui
        101
    ericgui  
       2019-12-30 07:47:31 +08:00
    @lolizeppelin php7.4 了解一下
    husky2019
        102
    husky2019  
       2019-12-30 08:01:38 +08:00 via iPhone
    我司几亿月活也是 php (逃
    rokeyzki
        103
    rokeyzki  
       2019-12-30 08:28:06 +08:00
    %E8%87%AA%E4%BB%A5%E4%B8%BA%E6%98%AF%E7%9A%84%E5%82%BB%E9%80%BC
    askfilm
        104
    askfilm  
       2019-12-30 08:42:40 +08:00   ❤️ 5
    1. php 可没有那么不堪, 成熟度很高, 稳定性也非常好(包括人才资源稳定性).

    2. golang 小地方招人不好招. golang 人员参差不齐(人才资源稳定性较差).

    3. 稳定的可靠性比较, 例如同样的 go 和 php "初学者" go 写崩的风险要比 php 大很多.

    4. 用 golang 要花更多钱(成本问题), 人工成本提高, 项目重构带来巨大风险和极高开发和维护成本, CTO 还是非常理智的, 人家要向项目和老板负责.
    nnnToTnnn
        105
    nnnToTnnn  
       2019-12-30 08:51:05 +08:00
    我是前端开发的,有一天领导问我能不能接受 vue 开发方向的技术选型( PS: 我是 React 开发工程师用的 antd pro )

    我说:

    1. 第三分团队,如果 vue 前端能够做的比 antd pro 好
    2. 确实很方便提高的我们团队的开发效率
    3. 其兼容性支持 IE9
    4. 不耽误项目进度

    如果能满足以上的几点,转 vue 我们团队是没有任何问题的。但是如果转了之后没办法保证项目进度,甚至比之前的技术更加坑,那我们为什么要转?


    --------------------------------------

    这是我代表团队的观念,同样也合适你们团队。php 转 golang 如果团队在不耽误项目进度上做的更好,那为什么不转? 如果做的没 PHP 好,为什么要转?

    合适的场景选择合适的技术,google,gitlab,github 这些都不是一个技术语言实现的!!!!
    niubee1
        106
    niubee1  
       2019-12-30 08:51:22 +08:00   ❤️ 2
    狗狼粉真的好烦啊。谁不用就怼谁。
    jorneyr
        107
    jorneyr  
       2019-12-30 08:56:40 +08:00
    我要是你们的下下下个 CTO,PHP 和 Go 都不用,必须 Java ^_^
    AlexHsu
        108
    AlexHsu  
       2019-12-30 08:59:21 +08:00
    emmmmm 为什么不用 java
    atonku
        109
    atonku  
       2019-12-30 09:05:44 +08:00
    试试 java 呗🐶
    PhpBestRubbish
        110
    PhpBestRubbish  
       2019-12-30 09:09:10 +08:00
    要么忍,要么滚
    LokiSharp
        111
    LokiSharp  
       2019-12-30 09:09:52 +08:00
    没啥业务是非要用特定语言写的吧
    netChen
        112
    netChen  
       2019-12-30 09:10:18 +08:00
    看到楼主的心凉,能够体会出来这个其实跟开发过程中客户该需求应该是一样的。功能要实现了,突然这个需求砍了。。。一样心凉。。。。
    dnsaq
        113
    dnsaq  
       2019-12-30 09:13:16 +08:00 via iPhone
    没看懂为啥用 go,有的人 php 技术栈都还是半吊子,连自己平时用的都搞不好,就不要用 go 了,每个人水平不一换的成本太高。
    ww2000e
        114
    ww2000e  
       2019-12-30 09:17:18 +08:00
    公司肯定选人多,应用量大的,要么 java,要么 php,go 自己捣鼓捣鼓玩吧
    blless
        115
    blless  
       2019-12-30 09:25:22 +08:00
    @no1xsyzy #99 一开始就说了啊,别的语言工程化也可以啊。只是在我看来没有 Go 简单方便而已,我司甚至专门为了审查某些内部不允许使用的语法改造了一份 go vet,别的语言改造难度多大我没看过,但是 Go 是真的简单。
    jeffc
        116
    jeffc  
       2019-12-30 09:29:33 +08:00
    @hlwjia 这才是人话,点赞!
    lbyo
        117
    lbyo  
       2019-12-30 09:30:38 +08:00   ❤️ 4
    @nnnToTnnn #105 ..前端已经分化出来 框架工程师了吗
    Ant Design for Vue 了解一下
    我认为如果公司钱给够了,让我写什么我都愿意,只要给我时间看文档,让我摸索
    jccg90
        118
    jccg90  
       2019-12-30 09:34:41 +08:00 via Android
    前部门负责人为什么要走?是不是因为推广 go,搞了半天改造,最后失败了,所以背锅走人?
    sunznx
        119
    sunznx  
       2019-12-30 09:36:52 +08:00   ❤️ 1
    php 这么简单都用不好的人,用啥语言都一个 jb 样
    tutusolo
        120
    tutusolo  
       2019-12-30 09:44:25 +08:00
    @KENNHI 公司相同复杂度业务的 php 代码 切换成 golang 以前需要 10 台机器 现在只需要 3 台
    jakychen
        121
    jakychen  
       2019-12-30 09:49:13 +08:00
    没啥心凉的,这个本就是中上层决定的,你只管做就是了,php 的 swoole 化 完全可以顶得各场景运用,没有最牛逼的语言,只有最适合的场景
    saltedFish666
        122
    saltedFish666  
       2019-12-30 09:50:49 +08:00
    谁说了算?
    KuroNekoFan
        123
    KuroNekoFan  
       2019-12-30 09:52:26 +08:00
    那就跳槽
    abcbuzhiming
        124
    abcbuzhiming  
       2019-12-30 10:04:39 +08:00
    有啥好心凉,楼主你自己都说了,你们的第一次 go 语言迁移明显失败了,那么后来的 cto 是来收拾烂摊子,你指望他会对 go 有好脸色?
    在公司干活不是给自己干活,不要总是一副技术长技术短的,谁给钱听谁的。不爽辞,少 BB
    keepeye
        125
    keepeye  
       2019-12-30 10:10:33 +08:00
    不是大厂还是不要轻易尝试吧。像我司刚开始使用 go 开发了所有后端业务,后来随着业务规模扩大,人手不足却招不到靠谱的 goer,以至于决定后面所有的业务用 php 开发,go 只维护原来的核心项目并对外提供接口。
    imkerberos
        126
    imkerberos  
       2019-12-30 10:16:30 +08:00
    你的新 CTO 很靠谱。
    crazjieb
        127
    crazjieb  
       2019-12-30 10:16:36 +08:00
    Tars 了解一下
    tanranran
        128
    tanranran  
       2019-12-30 10:17:44 +08:00
    技术选型是政治问题



    前部门负责人为啥要选,绝逼是为了拿工资学技术
    winiex
        129
    winiex  
       2019-12-30 10:17:48 +08:00
    从公司运营层面出发来做技术决策和从技术研发角度出发的思路是很不一样的,如果不是到了技术方案拖累公司业务的情况下(例如后端程序性能不足导致公司订单增长受限),一般最好不要提前优化,这样很可能是一场折腾。
    robot1
        130
    robot1  
       2019-12-30 10:27:05 +08:00
    可以参考一下成历转型的公司的情况啊,如 知乎社区核心业务 Golang 化实践
    wmwmajie
        131
    wmwmajie  
       2019-12-30 10:28:17 +08:00
    就 go 那个没使用的变量编译不通过这一点我就想打死他。
    要不是我是个爱学习的人我是一点不像了解 go 相关的东西
    passerbytiny
        132
    passerbytiny  
       2019-12-30 10:29:27 +08:00
    我是 Java,半路搞了两年 PHP,最后又回到 Java,对 Go 只有一个“替代 C/C++”的了解。但是我不想对语言做评价。

    楼主,前部门负责人跑路或者被赶走了,新来的 CTO 要搞自己的一套,你倾向于前部门负责人,你竟然还有心思来 V2 划水,还不赶紧跑路。
    wucao219101
        133
    wucao219101  
       2019-12-30 10:32:14 +08:00
    从楼主个人发展来看,有 go 的开发经历,确实发展会比单纯写 PHP 业务更好,跳槽也方便;
    从公司角度来看,如果没有 go 大牛带队,可能有很多不确定性,而且团队原本是 PHP 团队很成熟,没必要折腾浪费时间,没有转型的意义。
    看问题的角度不一样而已。
    luvroot
        134
    luvroot  
       2019-12-30 10:34:26 +08:00
    立场不同,下面的员工希望学到新东西方便跳槽,上面的管理层希望系统稳定不出问题。
    cai314494687
        135
    cai314494687  
       2019-12-30 10:51:55 +08:00
    核心业务可以使用 Golang 开发,但是需求经常变化的业务层推荐还是用 PHP 开发。
    qbhy
        136
    qbhy  
       2019-12-30 10:58:24 +08:00
    CTO 没毛病。
    miniwade514
        137
    miniwade514  
       2019-12-30 11:00:01 +08:00
    并不是换个语言就会变强,对个人和公司而言都是这样。
    hbolive
        138
    hbolive  
       2019-12-30 11:18:51 +08:00
    如果不是出现了某些瓶颈 /近期会出现瓶颈,不建议转语言。。
    julyclyde
        139
    julyclyde  
       2019-12-30 11:58:39 +08:00
    什么叫“很接近 devops 了”
    从这个说法里,我看出……
    fengjianxinghun
        140
    fengjianxinghun  
       2019-12-30 11:58:44 +08:00
    @blless Rust clippy 直接教你怎么写代码,cargo 包管理器秒 go mod。
    bluua1
        141
    bluua1  
       2019-12-30 12:15:46 +08:00
    没啥可说的,觉得合得来,跟着 CTO 干就行了
    bluua1
        142
    bluua1  
       2019-12-30 12:16:07 +08:00
    觉得不行,干 TMD 的 CTO
    mamahaha
        143
    mamahaha  
       2019-12-30 12:20:02 +08:00   ❤️ 3
    用 golang 的人就是一群 端着饭碗等人做饭的,大家都在等轮子。现在不像 Java、php 刚出现那个年代,大家的忠诚度都是百分百,开荒牛遍地都是。
    exploreXin
        144
    exploreXin  
       2019-12-30 12:21:50 +08:00
    千言万语就问一句,前负责人为什么走了?是觉得公司对待自己不公还是自己 hold 不住了?不要说公司无情,是否无情要具体问题具体分析,技术选型方面,公司不会关心用什么语言,公司的目的就是赚钱,能赚到钱的语言就是好语言,对于技术迁移,尤其对已经上线运营一定时间和业务量的项目,不是说改就改的了的,单纯的技术方面可以有具体场景下的应用优劣,但是站在经营者的角度,要考虑更改的各方面成本,一定不只是技术上面的成本考虑。员工写完代码,等着每月发工资,公司经营者可就没这么轻松了,没准下个月公司能不能存活都是要经营者考虑的事情。

    所以对贵司的情况不是很了解,难以做出客观的评价,但技术迁移,不止要考虑技术方面因素,另外技术更改导致的损失和风险,也是要考虑的,并且各方面余量要足够充足,才能产生技术迁移的适宜条件。经营者对技术不了解的情况下,保守使用熟悉的技术,对于公司来讲,也并没有什么特别可以讨论的。
    hantsy
        145
    hantsy  
       2019-12-30 12:21:53 +08:00   ❤️ 2
    >>golang 招不到人,golang 招人成本高,golang 项目不好维护等理由

    我觉得说的很有道理,从公司角度去考虑一点没错。Go 除了让某些人吹牛 B 的时候看起来很 Cool 外,没别的好处。用上最新的 PHP,语法上已经和现代语言在一条起跑线上,开发效率也不错。如果熟悉 Enterprise Application Patterns, 遵循 PSR,那么用 Zend,Symfony,Doctrine 这些框架为基础也是可以写出高质量,可以复用,可维护的代码。
    fox0001
        146
    fox0001  
       2019-12-30 12:49:01 +08:00 via Android
    CTO 没毛病。CTO 考虑得比你多
    coloz
        147
    coloz  
       2019-12-30 13:25:21 +08:00
    没毛病啊,CTO 占公司角度考虑,你可以占你角度考虑,只是最后肯定要服从 CTO
    Chenamy2017
        148
    Chenamy2017  
       2019-12-30 13:26:28 +08:00
    CTO 想的没问题,你可以站在对立面想想。
    fanpei0121
        149
    fanpei0121  
       2019-12-30 13:32:05 +08:00
    我觉得项目处于稳定状态,需要对项目进行重构的话。当然是用更规范的静态语言啊,php 开发起来倒是爽。项目大了动态语言怎么维护呢
    vone
        150
    vone  
       2019-12-30 13:43:01 +08:00
    我站现任 CTO。
    NoKey
        151
    NoKey  
       2019-12-30 13:55:05 +08:00
    都是 CTO 了这事情应该给老板报备过
    下面的人去顶,估计意义也不大
    要不然招我去,我可以让你们把 php 改成 java,怎么样😄
    815979670
        152
    815979670  
       2019-12-30 14:02:48 +08:00
    看楼主的描述需求 只看语言瓶颈来说,php 完全没有达到性能瓶颈,千万日活项目使用 php 都可以完全没问题,当然 如果你们是 php5.x 当我没说
    daodao
        153
    daodao  
       2019-12-30 14:19:06 +08:00
    PHP 已经满足当前业务现状,也远未到瓶颈,为什么要换 golang ??
    golang 招人很难招,一个人离职,后面谁来补?
    andrewDDC
        154
    andrewDDC  
       2019-12-30 14:22:00 +08:00
    感觉选型没有问题呢,语言只是解决问题的工具,什么合适用什么!
    back0893
        155
    back0893  
       2019-12-30 14:29:46 +08:00
    不服对怼,怼了再说
    sonyxperia
        156
    sonyxperia  
       2019-12-30 14:36:33 +08:00
    不如转 Java 啊
    Vhc001
        157
    Vhc001  
       2019-12-30 14:37:40 +08:00
    项目做大之后从 php 转 java 是常态吧,贵司为何选择 golang ?
    deadofpeople
        158
    deadofpeople  
       2019-12-30 14:58:05 +08:00
    @shiny 有内味儿了
    a547926122
        159
    a547926122  
       2019-12-30 15:16:44 +08:00
    “新来的 CTO 说 golang 产出慢,golang 招不到人,golang 招人成本高,golang 项目不好维护等理由“
    ben1024
        160
    ben1024  
       2019-12-30 15:22:58 +08:00
    当前功能能支撑业务,没必要折腾,新技术应该用来解决问题
    rapkey
        161
    rapkey  
       2019-12-30 15:33:13 +08:00
    @uxff #8 从这里就可以看出,支持 golang 重构的大都是奔着学习去的。整个技术团队的语言转型,对于公司来说代价是很高的,时间、人力都是成本,相反收益最大的是员工。
    visonme
        162
    visonme  
       2019-12-30 15:52:24 +08:00
    公司不是个人,不敢随便折腾,CTO 的决定没有什么问题,新语言和技术应该用在解决现有语言不能轻易解决的问题上的,目前 PHP 应用开发良好,完全没有这个必要,至于未来业务增长会不会带来新的选择,而作为一名 CTO 相信他是又考量的。

    旧系统转新语言 /技术开发,成本其实是蛮高的,公司在做选型时候都是需要考虑进去的。
    sweb
        163
    sweb  
       2019-12-30 16:04:15 +08:00
    你们公司没有订单的时候,经不起你这样折腾,你公司日订单 100 万的时候更加经不起你们这样折腾,go 写服务好是好,但产出跟 php 不是一个级别,对人的要求,工作量全上来了,成本可想而知,这次我站 CTO。go 哪怕再牛逼,可 3 台打 10 台服务器的性能,但开发时间可能不止三倍,人值钱还是机器值钱? 楼主让我想起了当年为了一时爽追新技术的搞了一大堆 node 的项目然后拍拍屁股就走人的那批人,现在那 node 项目都不敢 npm install,只能用别的语言重构....
    kkzxak47
        164
    kkzxak47  
       2019-12-30 16:18:29 +08:00
    CTO 决定是正确的。
    wo642436249
        165
    wo642436249  
       2019-12-30 16:57:09 +08:00
    让我去做你们的 CTO 吧,我支持你们用 Golang,让大家够浪
    nnnToTnnn
        166
    nnnToTnnn  
       2019-12-30 17:09:55 +08:00
    @lbyo #117 antd 只是一个设计规范,如果用 vue 肯定是看对面团队的选型。 [捂脸] ,不过目前还是 antd pro 的技术站。

    -------------------

    我就是一个码农,领导怎么说,我怎么做,最多帮忙把把关 。谈不上架构,这边架构都是找大厂咨询的。。 [捂脸][捂脸][捂脸]
    Evilk
        167
    Evilk  
       2019-12-30 18:49:55 +08:00
    这次支持 CTO,可以考虑升级到 PHP7.4,部分高并发业务可用 swoole
    不过,说真的,99%的项目都达不到语言的性能瓶颈,换句话说,这个世界上,能达到这个瓶颈的项目,屈指可数
    zibber
        168
    zibber  
       2019-12-31 11:22:34 +08:00
    公司不用新技术,大家学不到东西,干一段时间也一样跑路
    firefox12
        169
    firefox12  
       2019-12-31 13:35:21 +08:00
    100*10*1000/8.0/3600
    34.72222222222222

    100 万订单 放到 8 个小时 qps 也就是 34 , 大 100 呗,现在最弱的 db, 也能支持下来。

    这是性能问题吗? 不是。

    如果我是 cto, 首先看,原来的架构稳定不稳定,如果不稳定,那是迟早要找出路的, 找什么出路,自己不会 go, 找 go 吗? 还是找 java 吧,成熟 例子多。go 还是差在很多地方,基础框架不如 java 全面,全面监控的方案,全链路监控 有没有。这些都是空白。所以 如果稳 就继续, 或者转 java, go 出局。

    其实 cto 应该尝试把项目转到 k8s 上,解决稳定问题。
    no1xsyzy
        170
    no1xsyzy  
       2020-01-03 10:58:03 +08:00
    @blless 工程性根本不是问题所在,其他语言的工具能做到的,Racket 也能做到,并且可以做得更好
    但是 Racket 用的人还是少
    为什么呢?因为 worse is better ?因为自己构造的工具可以迁移到任何平台而无需考虑不同平台行为不一致?
    我不能确定。但可以确定的是,一直是:最好用的无人问津,最常用的乏善可陈。
    blless
        171
    blless  
       2020-01-03 13:05:59 +08:00 via Android
    @no1xsyzy 你就说说你说的这个语言工程性好在哪啊,说啥 worse is better ? show me the code 好吧
    no1xsyzy
        172
    no1xsyzy  
       2020-01-03 14:08:24 +08:00
    @blless 首先,这和 code 没有任何关系。其次,Racket 的元语言基于 Scheme 语法,语法是如此简单,以致于各类工具都可以做到极为简单。最后,我是把 go 放在偏 “好用而无人问津” 那边的,别的不说,单一个 channel 就秒了 80% 语言了,但相对的,使用量仍然在几个大头剩下的 20% 里争。
    blless
        173
    blless  
       2020-01-03 18:54:56 +08:00 via Android
    @no1xsyzy 首先,我们理解的软件工程不一样。复制一段百科,软件工程过程关注软件过程的定义、实现、评估、测量、管理、变更、改进,以及过程和产品的度量。
    软件工程在语言层面撑死也就是便利一点,做工程更多靠完整约束,标准,规范和制度保证产品质量,效率质量等等因素。机械工程靠设备仪器,软件工程靠工具,go vet 保证基准代码质量,go fmt 保证代码格式,go test 保证单元测试 /覆盖率 /压力测试,go mod 管理代码依赖,go pprof 性能调优,还有 go doc 生成文档。其他语言也能做啊,但是标准就完全是社区要么是内部标准。你说的什么语言跟我说的有半毛钱关系吗?
    no1xsyzy
        174
    no1xsyzy  
       2020-01-04 01:56:58 +08:00
    @blless raco test 单元测试,虽然我记忆中存在
    ```
    (+ 1 1)
    "should be equal to"
    2
    ```
    这样的单元测试语法,但我实在没能找到
    ; 覆盖率其实是幻觉,但姑且有 cover 包(存在于官方文档内)可以 raco cover
    DrRacket (自带 IDE )包含格式化和性能测试
    raco pkg 管理依赖
    scribble 文档工具

    而且重点是,Racket 并非一门语言,而是一组构造语言的工具,并且上述工具对所有构造出的语言通用。
    daoqiongsi1101
        175
    daoqiongsi1101  
       2020-05-24 12:28:06 +08:00
    不一定只用一门语言,php 和 go 完全可以并存,可以把部分性能要求高的接口用 go 重构,另外一些遇到性能瓶颈的逻辑也可以用 go 实现,php 使用 grpc 来调用,这样可以各自发挥长处. 但是直接拒绝 go 确实不应该.
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:43 · PVG 10:43 · LAX 18:43 · JFK 21:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.