V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jack66
V2EX  ›  程序员

起步 PHP ,用了近 2 年 go,开发经验 7 年。目前在一家小公司负责研发,目前项目因为人力用 PHP 开发,纠结重构用 go 还是 Java ,目前三线城市 Java 岗位多出于这个原因,大家有什么好的建议

  •  1
     
  •   Jack66 · 214 天前 · 6526 次点击
    这是一个创建于 214 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起步 php ,用了近 2 年 go ,开发经验 7 年。目前在一家小公司负责研发,目前项目因为人力用 php 开发,纠结重构用 go 还是 java ,目前三线城市 java 岗位多出于这个原因,大家有什么好的建议

    86 条回复    2023-10-09 22:29:45 +08:00
    yinmin
        1
    yinmin  
       214 天前 via Android   ❤️ 2
    用自己精通的。如果 go 和 java 都精通,选 java 好招人吧
    dzdh
        2
    dzdh  
       214 天前
    赞同 1 楼
    k9982874
        3
    k9982874  
       214 天前
    为什么要重构?
    ynxh
        4
    ynxh  
       214 天前
    这种业务系统能语言扯上啥关系。和 go 半毛关系都没有把
    Jack66
        5
    Jack66  
    OP
       214 天前
    @yinmin 原计划 后台 web 用 php ,go 做服务。但现实中有些 it 朋友多次让我转 java ,有大的项目和机会。
    RRRSSS
        6
    RRRSSS  
       214 天前
    用顺手的,技术不重要,业务最重要
    Jack66
        7
    Jack66  
    OP
       214 天前
    @ynxh 是的业务和语言没关系,但和就业、机会、薪水挂钩。像我们这 php 和 go 就业环境缩水,总之想要可以争取更多的机会
    yuyang1992test
        8
    yuyang1992test  
       214 天前
    趁机转 java
    Jack66
        9
    Jack66  
    OP
       214 天前
    @k9982874 保持现有代码开发,前两个版本就是熟悉业务和打磨,后面用更多的技术栈。小公司基本都是赶时间和人力较少,可选择技术栈更少,因为以上的因素。还是要在不同环境中找出提升的方法。
    Jack66
        10
    Jack66  
    OP
       214 天前
    @RRRSSS 嗯是,目前自己的想法是怎么维护好公司项目,顺利快速开发业务模块。最大的事情保全好现有的项目。
    sky9401
        11
    sky9401  
       214 天前
    切换到 JAVA 吧,PHP 以后招人会越来越困难
    Jack66
        12
    Jack66  
    OP
       214 天前
    @k9982874 为了快速开展项目,选择 php ,第一个版本基本就是熟悉和练手,迭代优化代码。吃透业务后,用更多技术栈,不至于一直停留在业务开发上。
    Jack66
        13
    Jack66  
    OP
       214 天前
    @sky9401 嗯今年很明显的缩水,都在缩水。拼的是现存项目,有公司运营项目,就有招聘岗位和人员流动。
    coderluan
        14
    coderluan  
       214 天前   ❤️ 1
    正文没表达清楚吧,楼主是在问要不要借这个机会自己掌握 Java ,而不是项目用哪个好,只考虑项目肯定是选会的,但是楼主想着学了 Java 对自己之后跳槽有帮助?

    简单来说,如果你们其它同事有部分熟悉 Java 的话,可以,否则,不行。想快速学习需要跟着正确的流程走,而不是自己边学边踩坑。
    yinmin
        15
    yinmin  
       214 天前 via Android
    国内的体制内项目 java 的比重很高,另外可以关注信创的产品选型,尽量能靠上去,与信创兼容。将来说不定有个信创项目的机会,有提前准备了能拿下。
    8355
        16
    8355  
       214 天前   ❤️ 4
    其实你没理解这 3 个语言的区别。
    php 一般应用够,开发快,不上到超高流量系统 qps 百万以上没什么太大压力。
    劣势是现在主流中间件没有 php 扩展,很多都是通过 http 方式连接,并不太稳定,或者支持的 api 相对少,依赖开源作者 bug 比较多,随时有弃坑风险。
    go 的优势是弥补了 php 的缺点,开发对比 php 稍慢,招人比较困难。
    java 的优势是全方位成熟稳定,包括人员,语言和架构本身需要人员维护成本,如果是超大型项目超多人开发非常适合,长期小团队的话弊大于利,不如 golang 。

    我的建议是 php+golang ,首先这两个你都比较熟悉了,php 做常规业务,golang 实现个别业务,招 1-2 个 golang 够你用即可,其他堆 php 。
    java 相当于组建全新的团队,内部人员全部要学习新语言坑不会少,主要是其他人员学习意愿问题,php+golang 可以比较平滑的过度不喜欢学习 golang 的继续写 php 就好。
    cosiner
        17
    cosiner  
       214 天前
    可以混合使用, 纯 API 用 go, 简单快速, 网页相关的用 js, java, php, 不是所有代码都要一种语言, 按领域选合适的和自己熟悉的
    beneo
        18
    beneo  
       214 天前
    java 好招人,人便宜门槛低,素质偏低
    go 得有人扛大旗,人更贵但是人素质更高

    公司有钱就上 go ,业务起得来 go 就玩得转;公司没钱就 java ,反正成本低,公司增长不起来技术花销也不大
    zypy333
        19
    zypy333  
       214 天前
    我们三线小公司以前也是 go ,转的 java ,原因是招不上人
    jayin
        20
    jayin  
       214 天前
    从建立个人的技术壁垒来说,用 Go 吧
    fox0001
        21
    fox0001  
       214 天前 via Android
    Java

    - 容易招人(起码是你说的)。
    - 入门门槛低。起码相对 Go 来说,很多计算机专业都有教 Java 。
    - 容易替换非核心开发人员。你抓好主要技术、业务,其他开发容易替换。这里是从人员流动问题去考虑。
    Jack66
        22
    Jack66  
    OP
       214 天前
    看了大家的耐心回答,这个答案更明朗了
    janus77
        23
    janus77  
       214 天前
    三线纠结啥呢,用 go 你以后出去也是不好找工作的
    yc8332
        24
    yc8332  
       214 天前
    php 做 web 和接口不好吗?还是非得搞 go 和 java 才高级。。除了长连接的项目,不然我们都用 php
    to2false
        25
    to2false  
       214 天前
    这还用纠结啥,java 万金油
    yidinghe
        26
    yidinghe  
       214 天前
    “目前项目因为人力用 PHP 开发,纠结重构用 go 还是 Java” 这句话没看懂
    lsk569937453
        27
    lsk569937453  
       214 天前
    不用怀疑,直接用 java 。
    lolizeppelin
        28
    lolizeppelin  
       214 天前
    如果你们对外接入多建议 JAVA ,估计很多 SDK 都没提供 go 的版本,到时候超级浪费时间
    Dogtler
        29
    Dogtler  
       214 天前
    他的意思大概是原型用 php 写的,当前有重构的需求 在语言选型上考量 go 或者 java, 然后考虑到 java 基数比较大 在 n 小城市 h 招人比较多,但是又保持摇摆。就是我想问下 up 到底是对当前工作/公司摇摆,还是对技术追求有摇摆。
    从项目本身角度为今后便于维护 选 java 重构是比较明智的; 那如果项目主导权在 up 手上 且对 go 已经有使用熟练度 那建议就用 go 呗 正好增加不可替代性以及以后好问老板涨工资,毕竟打工人嘛。
    licoycn
        30
    licoycn  
       214 天前
    @yc8332 😂 长连接也可以用 php ,webman 就还不错
    monkeyWie
        31
    monkeyWie  
       214 天前
    那肯定是 java 啊,直接上 java 21 ,还有 go 什么鸟事
    xingjue
        32
    xingjue  
       214 天前
    必须 go 啊 现在学校小年轻大多会 go 了
    OceanBreeze
        33
    OceanBreeze  
       214 天前
    三线小城市,老老实实用 php 不好吗?折腾啥呢。
    ganbuliao
        34
    ganbuliao  
       214 天前
    用 go
    LPJD
        35
    LPJD  
       214 天前
    51JOB 上面,整个广州招聘 go 岗位的,不到 10 个职位。有时候 5 个都不到。有些 Go 岗位还是招运维岗。说明市场上对 GO 的需求少得很。市场招的人少,用的人就少,开源生态圈活跃部起来。然后写业务时想找个代码复制,找不着,什么都得自己写。
    crackidz
        36
    crackidz  
       214 天前
    php 招不到人了吗?
    Gota
        37
    Gota  
       213 天前
    不如试试 Typescript + Node.js ?万一后端一时招不到人还能拉前端来帮忙开发几个接口。
    QlanQ
        38
    QlanQ  
       213 天前
    干活、招人 go 真的不如 php

    建议别重构,说不定你项目还没重构完,公司都没了
    别折腾,业务稳定最重要
    在原有的 php 上进行优化,适当拆封,重构单个功能或者模块
    或者按接口纬度来,小公司重构,上微服务的,活下来的 很少很少
    flowerains
        39
    flowerains  
       213 天前
    小地方找人是个老大难问题,强如宜昌这样的三线城市,你想招到靠谱的 Java 开发都是一个长期过程。
    如果选 Go ,大概率是要学其他语言的转过去写 Go ,那这样你短时间很难顾及开发效率和性能。

    我认为一个小公司,在用户数业务量没有爆发性增长的条件下,选择直接 php 和 nodejs 肯定是比写 Java 和 Go 要好的多得多,门槛降低也有利于你直接找刚毕业的学生来培养写业务。
    robbaa
        40
    robbaa  
       213 天前
    小公司重构就用 golang ,性能好、省资源。
    技术栈一旦确定下来就要有人维护,java 人那么多,招来就是工资倒挂,何苦?
    usauk1998
        41
    usauk1998  
       213 天前 via Android
    Php+java
    MeteorCat
        42
    MeteorCat  
       213 天前 via Android
    我觉得初级起步最好 php ,代码直接所见所在改动,反正接口统一之后迁移成 golang
    Huelse
        43
    Huelse  
       213 天前
    个人认为 go 不适合承接 php 过来的业务,做些中间件倒是挺合适的。另外从招人的角度来说也是 java 更合适。
    ZZ74
        44
    ZZ74  
       213 天前
    项目性质就适合 java ,.NET
    三线城市,找 go ,岂不自找苦吃。
    没经验 到时被 go 坑,工作不保
    dz5362
        45
    dz5362  
       213 天前
    必须用 java ,人比语言更重要
    HENQIGUAI
        46
    HENQIGUAI  
       213 天前
    Java.
    2NUT
        47
    2NUT  
       213 天前
    为什么要重构? 有什么收益?
    sch1111878
        48
    sch1111878  
       213 天前
    @Gota 并不是语言通就能直接顶的, 做安卓的让他搞 spring 一样很多人搞不定,
    whp1473
        49
    whp1473  
       213 天前
    go 要造轮子的,人工成本和维护成本会比较高,从技术角度引入不错,有壁垒。从老板角度就。。。
    lsls931011
        50
    lsls931011  
       213 天前   ❤️ 2
    第一、这么说吧,如果你是公司老板,替公司考虑你就使用 java ,因为人非常好招。 如果你是为自己考虑的话,审视一下自己的学历以及经验,思考一下以后被裁,加入 java 大军,你是否有能够竞争过那些 java 卷王。 如果卷不过, 直接 php + golang 技术栈走起。

    第二、你使用 java 把公司项目重构了,再过几天老板觉得你年纪大,把你裁员,他可以马上找到合适的 java 程序员替代你。而你使用 go 把公司项目重构了,三线小城市招 go 就很难招合适的人,起码和老板就有谈判的资本。

    你一定要深刻明白一点,你就是一个臭打工的,招人是 HR 的事。
    Gota
        51
    Gota  
       213 天前
    @sch1111878 不是写完整的后端啦, 只是帮忙填几个接口的程度其实还好, 配合 tRPC 加 Prisma 基本上没有任何难度, 甚至连联调都省了. Java 的 Spring 可比这夸张多了, 没法直接对比.
    rophie123
        52
    rophie123  
       213 天前
    @8355 完全正确,我这边也是负责研发的,采用的这个方案,php 改起来快,业务起步都是 php ,中后期弱势方面用 golang 补齐,反正后面都是多个系统相互解耦
    ersic
        53
    ersic  
       213 天前
    真的到达瓶颈再说
    ibegyourpardon
        54
    ibegyourpardon  
       213 天前
    go 。
    racgas
        55
    racgas  
       213 天前
    干的 java ,之前周五因为国庆家庭原因,忙把一个 php 岗给拒了,哎,其实 php 这种火过的语言还是比较好找工作的😭
    beidounanxizi
        56
    beidounanxizi  
       213 天前
    说 sdk 的 没懂 现在绝大多数后台调外部都是 http 调用 需要啥 sdk 啊 ?
    说好招人的 难道不是因为钱没到位啊???
    说并发的 嗯 加钱加机器家人就好了
    说什么造轮子的 生态的 java 强? 我到现在为止从来都没有造轮子
    反而 java 的工程质量 和可维护 是最差的 ?
    zzzkkk
        57
    zzzkkk  
       213 天前 via Android
    @racgas
    php 全世界工资最低
    awolf
        58
    awolf  
       213 天前
    时代变了,没有人推荐 dotnet 了
    encro
        59
    encro  
       213 天前
    我如果下一个项目,会倾向 nodejs ,毕竟前后端一把梭。
    encro
        60
    encro  
       213 天前
    nodejs 无法解决的,会倾向于 python (库多)或则 rust/c++(性能高,偏系统层面)。
    EEEEx
        61
    EEEEx  
       213 天前
    golang, 不用考虑招人问题, 只要你还在就招 PHP 进来转,如果离职了,管他招不招到人
    ysjdx
        62
    ysjdx  
       213 天前
    @flowerains 宜昌老乡好,话说,宜昌算不到三线吧。。。
    yangxin0
        63
    yangxin0  
       213 天前
    没得 20~30 人的研发团队不要轻易选择 Java or Golang 这种技术栈,建议看看 Python or PHP 。
    qiumaoyuan
        64
    qiumaoyuan  
       213 天前
    重写就说重写,重构个啥。
    Gota
        65
    Gota  
       213 天前
    @yangxin0 为啥小团队不建议用 Go? 我在 10 人以下小团队用了快 5 年了感觉没啥问题呀?
    veni2023
        66
    veni2023  
       213 天前
    php 工资成本低,学习成本低,只要愿意转什么语言的开发者都能转 php
    xiaocaiji111
        67
    xiaocaiji111  
       213 天前
    @beidounanxizi 写的都是 demo 项目吧,规模项目很多外部没有 sdk 得,等你封装完了,工期也到了。还有 java 得项目非常多,质量参差不齐也正常。高质量 java 项目非常多,模块化我觉得 java 做的很好(当然是 maven 的功劳),可维护性真的很高,反而 go 弄一堆文件夹去区分。大项目真的难顶。

    至于楼主,我觉得看下自己城市发展吧。吃饭要紧,语言真没必要纠结,做多了都一样全是槽点。
    BIGBIG
        68
    BIGBIG  
       213 天前
    无脑 java 。没有强大的公司背景就不要参与生态建设,直接选生态完备的。。
    WispZhan
        69
    WispZhan  
       213 天前 via Android
    开发 IO 密集型的中间件可以用 go

    数据密集型、重业务的就选 Java
    zengzizhao
        70
    zengzizhao  
       213 天前
    @licoycn #29 长连是 workerman 或者 swoole
    laoyutang
        71
    laoyutang  
       213 天前 via Android
    后端的重点不在于语言,重点是架构设计,领导熟悉啥语言那就啥语言
    yangxin0
        72
    yangxin0  
       213 天前
    @Gota 做需求问题不大,我只是觉得性价比不高。Golang 的价格相对于 PHP 、Python 这些要贵很多,而且招聘也相对来说困难。
    Gota
        73
    Gota  
       213 天前 via iPhone
    @yangxin0 Go 现在价格这么高吗?那应该会吸引更多人加入,未来反而好招人才是啊。
    Gota
        74
    Gota  
       213 天前 via iPhone
    当然偏单体,重业务的系统我还是推荐 Nodejs T3 那一套,前后端统一技术栈能省不少对接时间。
    testcgd
        75
    testcgd  
       213 天前 via Android
    就业务来说,你们公司有几个人?人超过 3 个的话建议用 go ,php 转 go 也就一两天的事情,你把框架搭好然后就可以加人出业务了,你一下子转 java ,业务过渡期老板不怼你?其实 go 招人也简单,招愿意转语言的就好。唯一的问题就是基建和搭框架得有人搞不然容易成屎山
    就个人来说,你转行 java 其实没啥优势,随便一抓就是十年 java 老兵了,你确定你能竞争得过大厂出来的吗?在现在公司如果 java 架构出了问题,分分钟空降个阿里高 p 来摘你桃子
    beidounanxizi
        76
    beidounanxizi  
       213 天前
    @xiaocaiji111 啊? 没写过 go 吧
    go 数据组装聚合 CRUD 构建 编译 运行. 代码可维护性 代码工程质量 都明显高于 java
    java 那坨 脱裤子放屁的 get set 封装 aop

    还有 maven include exclude
    没见过 fastjson 的一些不遵守 json 标准的实现, 奇怪的约定
    没见过 spring 约定大于配置 那堆找不到出处的网易
    没见过 juc 实现的复杂度嘛
    没见过一堆 helper 和一堆 util
    没见过 一包烟 一个 spring 启动半天嘛?
    没见过 NPE 嘛?
    没见过 nosuchmethid exception 异常
    没见过 spring 循环依赖
    没见过 满天飞的 interface 实际 不就是一个实现嘛?
    没见过 跑一个程序 需要 jvm java maven 私服 环境配置
    没见过 xml 满天飞的那年代嘛
    没见过 javaer 最爱的 xxljob dubbo 嘛?

    🐶
    xiaocaiji111
        77
    xiaocaiji111  
       213 天前
    @beidounanxizi
    不好意思,让您失望了,云原生和业务都搞过,java 和 go 都搞过,还为公司使用 gin 封装过比较完备的开发框架。
    zhouhu
        78
    zhouhu  
       213 天前
    宜昌吗,可以招我过去吗
    zzzkkk
        79
    zzzkkk  
       212 天前 via Android
    @beidounanxizi
    你能不能把常用 go 框架 库 分享一下
    大家看看有什么好库
    beidounanxizi
        80
    beidounanxizi  
       212 天前
    @zzzkkk 自带的 sdk 库就可以了啊
    beidounanxizi
        81
    beidounanxizi  
       212 天前
    @xiaocaiji111
    还要 封装 gin, 这是 干嘛啊 ?
    公司 QPS TPS CDN 流量多少啊 ?
    java 一个类一个文件 很顶嘛?
    哈哈哈 🐶
    zzzkkk
        82
    zzzkkk  
       212 天前
    @beidounanxizi
    用什么 orm 库 什么 validator 库 什么 mvc 库
    用 go 了肯定不用 dao service 层了吧 你 controller 的数据是怎么从 db 里取出来的?
    beidounanxizi
        83
    beidounanxizi  
       212 天前
    @zzzkkk 那套东西 都是通识啊 这些随便找一个不就好了 多的去了
    这是软件设计层面东西 跟语言不相关
    zzzkkk
        84
    zzzkkk  
       212 天前 via Android
    @beidounanxizi

    go 的确有好处 跟 nodejs 比咋样

    node 的网络并发比不上 go 没 go 方便 但总比 php python ruby 好了

    node 需要安装 go 不需要安装

    但 node 写业务比 go 好 因为是动态语言
    dandankele
        85
    dandankele  
       212 天前
    同样也有这个问题。。如果是出于公司业务增长遇到性能瓶颈等问题,想优化,并且也考虑成本,那么直接试试 swoole 一类的。。如果只是单纯的想提高自己的技能水平,为以后就业考虑,那么 java 吧。。虽说 go 与 php 很搭,但是二三线城市 java 就业机会多啊
    Leonkennedy2
        86
    Leonkennedy2  
       200 天前
    @licoycn utils.fun 的 屏幕录制是调用的哪个 chrome api
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3050 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 08:38 · PVG 16:38 · LAX 01:38 · JFK 04:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.