起步 php ,用了近 2 年 go ,开发经验 7 年。目前在一家小公司负责研发,目前项目因为人力用 php 开发,纠结重构用 go 还是 java ,目前三线城市 java 岗位多出于这个原因,大家有什么好的建议
1
yinmin 2023-09-26 11:51:09 +08:00 via Android 2
用自己精通的。如果 go 和 java 都精通,选 java 好招人吧
|
2
dzdh 2023-09-26 11:51:56 +08:00
赞同 1 楼
|
3
k9982874 2023-09-26 11:52:11 +08:00
为什么要重构?
|
4
ynxh 2023-09-26 11:53:28 +08:00
这种业务系统能语言扯上啥关系。和 go 半毛关系都没有把
|
5
Jack66 OP @yinmin 原计划 后台 web 用 php ,go 做服务。但现实中有些 it 朋友多次让我转 java ,有大的项目和机会。
|
6
RRRSSS 2023-09-26 11:55:20 +08:00
用顺手的,技术不重要,业务最重要
|
7
Jack66 OP @ynxh 是的业务和语言没关系,但和就业、机会、薪水挂钩。像我们这 php 和 go 就业环境缩水,总之想要可以争取更多的机会
|
8
yuyang1992test 2023-09-26 11:56:49 +08:00
趁机转 java
|
9
Jack66 OP @k9982874 保持现有代码开发,前两个版本就是熟悉业务和打磨,后面用更多的技术栈。小公司基本都是赶时间和人力较少,可选择技术栈更少,因为以上的因素。还是要在不同环境中找出提升的方法。
|
11
sky9401 2023-09-26 12:00:12 +08:00
切换到 JAVA 吧,PHP 以后招人会越来越困难
|
12
Jack66 OP @k9982874 为了快速开展项目,选择 php ,第一个版本基本就是熟悉和练手,迭代优化代码。吃透业务后,用更多技术栈,不至于一直停留在业务开发上。
|
14
coderluan 2023-09-26 12:04:20 +08:00 1
正文没表达清楚吧,楼主是在问要不要借这个机会自己掌握 Java ,而不是项目用哪个好,只考虑项目肯定是选会的,但是楼主想着学了 Java 对自己之后跳槽有帮助?
简单来说,如果你们其它同事有部分熟悉 Java 的话,可以,否则,不行。想快速学习需要跟着正确的流程走,而不是自己边学边踩坑。 |
15
yinmin 2023-09-26 12:04:37 +08:00 via Android
国内的体制内项目 java 的比重很高,另外可以关注信创的产品选型,尽量能靠上去,与信创兼容。将来说不定有个信创项目的机会,有提前准备了能拿下。
|
16
8355 2023-09-26 12:08:46 +08:00 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 就好。 |
17
cosiner 2023-09-26 12:11:21 +08:00
可以混合使用, 纯 API 用 go, 简单快速, 网页相关的用 js, java, php, 不是所有代码都要一种语言, 按领域选合适的和自己熟悉的
|
18
beneo 2023-09-26 12:25:54 +08:00
java 好招人,人便宜门槛低,素质偏低
go 得有人扛大旗,人更贵但是人素质更高 公司有钱就上 go ,业务起得来 go 就玩得转;公司没钱就 java ,反正成本低,公司增长不起来技术花销也不大 |
19
zypy333 2023-09-26 12:30:57 +08:00
我们三线小公司以前也是 go ,转的 java ,原因是招不上人
|
20
jayin 2023-09-26 12:38:30 +08:00
从建立个人的技术壁垒来说,用 Go 吧
|
21
fox0001 2023-09-26 12:52:33 +08:00 via Android
Java
- 容易招人(起码是你说的)。 - 入门门槛低。起码相对 Go 来说,很多计算机专业都有教 Java 。 - 容易替换非核心开发人员。你抓好主要技术、业务,其他开发容易替换。这里是从人员流动问题去考虑。 |
22
Jack66 OP 看了大家的耐心回答,这个答案更明朗了
|
23
janus77 2023-09-26 14:07:03 +08:00
三线纠结啥呢,用 go 你以后出去也是不好找工作的
|
24
yc8332 2023-09-26 14:12:50 +08:00
php 做 web 和接口不好吗?还是非得搞 go 和 java 才高级。。除了长连接的项目,不然我们都用 php
|
25
to2false 2023-09-26 14:15:02 +08:00
这还用纠结啥,java 万金油
|
26
yidinghe 2023-09-26 14:17:00 +08:00
“目前项目因为人力用 PHP 开发,纠结重构用 go 还是 Java” 这句话没看懂
|
27
lsk569937453 2023-09-26 14:25:39 +08:00
不用怀疑,直接用 java 。
|
28
lolizeppelin 2023-09-26 14:26:13 +08:00
如果你们对外接入多建议 JAVA ,估计很多 SDK 都没提供 go 的版本,到时候超级浪费时间
|
29
Dogtler 2023-09-26 14:32:44 +08:00
他的意思大概是原型用 php 写的,当前有重构的需求 在语言选型上考量 go 或者 java, 然后考虑到 java 基数比较大 在 n 小城市 h 招人比较多,但是又保持摇摆。就是我想问下 up 到底是对当前工作/公司摇摆,还是对技术追求有摇摆。
从项目本身角度为今后便于维护 选 java 重构是比较明智的; 那如果项目主导权在 up 手上 且对 go 已经有使用熟练度 那建议就用 go 呗 正好增加不可替代性以及以后好问老板涨工资,毕竟打工人嘛。 |
31
monkeyWie 2023-09-26 15:13:49 +08:00
那肯定是 java 啊,直接上 java 21 ,还有 go 什么鸟事
|
32
xingjue 2023-09-26 15:27:38 +08:00
必须 go 啊 现在学校小年轻大多会 go 了
|
33
OceanBreeze 2023-09-26 15:29:32 +08:00
三线小城市,老老实实用 php 不好吗?折腾啥呢。
|
34
ganbuliao 2023-09-26 15:36:43 +08:00
用 go
|
35
LPJD 2023-09-26 15:53:19 +08:00
51JOB 上面,整个广州招聘 go 岗位的,不到 10 个职位。有时候 5 个都不到。有些 Go 岗位还是招运维岗。说明市场上对 GO 的需求少得很。市场招的人少,用的人就少,开源生态圈活跃部起来。然后写业务时想找个代码复制,找不着,什么都得自己写。
|
36
crackidz 2023-09-26 16:03:32 +08:00
php 招不到人了吗?
|
37
Gota 2023-09-26 16:40:24 +08:00
不如试试 Typescript + Node.js ?万一后端一时招不到人还能拉前端来帮忙开发几个接口。
|
38
QlanQ 2023-09-26 16:56:51 +08:00
干活、招人 go 真的不如 php
建议别重构,说不定你项目还没重构完,公司都没了 别折腾,业务稳定最重要 在原有的 php 上进行优化,适当拆封,重构单个功能或者模块 或者按接口纬度来,小公司重构,上微服务的,活下来的 很少很少 |
39
flowerains 2023-09-26 17:13:41 +08:00
小地方找人是个老大难问题,强如宜昌这样的三线城市,你想招到靠谱的 Java 开发都是一个长期过程。
如果选 Go ,大概率是要学其他语言的转过去写 Go ,那这样你短时间很难顾及开发效率和性能。 我认为一个小公司,在用户数业务量没有爆发性增长的条件下,选择直接 php 和 nodejs 肯定是比写 Java 和 Go 要好的多得多,门槛降低也有利于你直接找刚毕业的学生来培养写业务。 |
40
robbaa 2023-09-26 17:31:15 +08:00
小公司重构就用 golang ,性能好、省资源。
技术栈一旦确定下来就要有人维护,java 人那么多,招来就是工资倒挂,何苦? |
41
usauk1998 2023-09-26 19:00:28 +08:00 via Android
Php+java
|
42
MeteorCat 2023-09-26 19:06:07 +08:00 via Android
我觉得初级起步最好 php ,代码直接所见所在改动,反正接口统一之后迁移成 golang
|
43
Huelse 2023-09-26 19:45:02 +08:00
个人认为 go 不适合承接 php 过来的业务,做些中间件倒是挺合适的。另外从招人的角度来说也是 java 更合适。
|
44
ZZ74 2023-09-26 19:52:35 +08:00
项目性质就适合 java ,.NET
三线城市,找 go ,岂不自找苦吃。 没经验 到时被 go 坑,工作不保 |
45
dz5362 2023-09-26 20:02:03 +08:00
必须用 java ,人比语言更重要
|
46
HENQIGUAI 2023-09-26 20:03:52 +08:00
Java.
|
47
2NUT 2023-09-26 20:17:10 +08:00
为什么要重构? 有什么收益?
|
48
sch1111878 2023-09-26 20:31:41 +08:00
@Gota 并不是语言通就能直接顶的, 做安卓的让他搞 spring 一样很多人搞不定,
|
49
whp1473 2023-09-26 20:38:51 +08:00
go 要造轮子的,人工成本和维护成本会比较高,从技术角度引入不错,有壁垒。从老板角度就。。。
|
50
lsls931011 2023-09-26 20:49:38 +08:00 2
第一、这么说吧,如果你是公司老板,替公司考虑你就使用 java ,因为人非常好招。 如果你是为自己考虑的话,审视一下自己的学历以及经验,思考一下以后被裁,加入 java 大军,你是否有能够竞争过那些 java 卷王。 如果卷不过, 直接 php + golang 技术栈走起。
第二、你使用 java 把公司项目重构了,再过几天老板觉得你年纪大,把你裁员,他可以马上找到合适的 java 程序员替代你。而你使用 go 把公司项目重构了,三线小城市招 go 就很难招合适的人,起码和老板就有谈判的资本。 你一定要深刻明白一点,你就是一个臭打工的,招人是 HR 的事。 |
51
Gota 2023-09-26 21:40:17 +08:00
@sch1111878 不是写完整的后端啦, 只是帮忙填几个接口的程度其实还好, 配合 tRPC 加 Prisma 基本上没有任何难度, 甚至连联调都省了. Java 的 Spring 可比这夸张多了, 没法直接对比.
|
52
rophie123 2023-09-26 21:53:05 +08:00
@8355 完全正确,我这边也是负责研发的,采用的这个方案,php 改起来快,业务起步都是 php ,中后期弱势方面用 golang 补齐,反正后面都是多个系统相互解耦
|
53
ersic 2023-09-26 21:58:59 +08:00
真的到达瓶颈再说
|
54
ibegyourpardon 2023-09-26 22:29:44 +08:00
go 。
|
55
racgas 2023-09-26 22:48:56 +08:00
干的 java ,之前周五因为国庆家庭原因,忙把一个 php 岗给拒了,哎,其实 php 这种火过的语言还是比较好找工作的😭
|
56
beidounanxizi 2023-09-26 23:01:45 +08:00
说 sdk 的 没懂 现在绝大多数后台调外部都是 http 调用 需要啥 sdk 啊 ?
说好招人的 难道不是因为钱没到位啊??? 说并发的 嗯 加钱加机器家人就好了 说什么造轮子的 生态的 java 强? 我到现在为止从来都没有造轮子 反而 java 的工程质量 和可维护 是最差的 ? |
58
awolf 2023-09-26 23:02:36 +08:00
时代变了,没有人推荐 dotnet 了
|
59
encro 2023-09-27 09:20:02 +08:00
我如果下一个项目,会倾向 nodejs ,毕竟前后端一把梭。
|
60
encro 2023-09-27 09:21:36 +08:00
nodejs 无法解决的,会倾向于 python (库多)或则 rust/c++(性能高,偏系统层面)。
|
61
EEEEx 2023-09-27 09:25:33 +08:00
golang, 不用考虑招人问题, 只要你还在就招 PHP 进来转,如果离职了,管他招不招到人
|
62
ysjdx 2023-09-27 09:28:05 +08:00
@flowerains 宜昌老乡好,话说,宜昌算不到三线吧。。。
|
63
yangxin0 2023-09-27 09:58:21 +08:00
没得 20~30 人的研发团队不要轻易选择 Java or Golang 这种技术栈,建议看看 Python or PHP 。
|
64
qiumaoyuan 2023-09-27 10:03:21 +08:00
重写就说重写,重构个啥。
|
66
veni2023 2023-09-27 10:11:46 +08:00
php 工资成本低,学习成本低,只要愿意转什么语言的开发者都能转 php
|
67
xiaocaiji111 2023-09-27 10:27:34 +08:00
@beidounanxizi 写的都是 demo 项目吧,规模项目很多外部没有 sdk 得,等你封装完了,工期也到了。还有 java 得项目非常多,质量参差不齐也正常。高质量 java 项目非常多,模块化我觉得 java 做的很好(当然是 maven 的功劳),可维护性真的很高,反而 go 弄一堆文件夹去区分。大项目真的难顶。
至于楼主,我觉得看下自己城市发展吧。吃饭要紧,语言真没必要纠结,做多了都一样全是槽点。 |
68
BIGBIG 2023-09-27 11:18:05 +08:00
无脑 java 。没有强大的公司背景就不要参与生态建设,直接选生态完备的。。
|
69
WispZhan 2023-09-27 11:52:43 +08:00 via Android
开发 IO 密集型的中间件可以用 go
数据密集型、重业务的就选 Java |
70
zengzizhao 2023-09-27 11:55:56 +08:00
@licoycn #29 长连是 workerman 或者 swoole
|
71
laoyutang 2023-09-27 12:16:05 +08:00 via Android
后端的重点不在于语言,重点是架构设计,领导熟悉啥语言那就啥语言
|
72
yangxin0 2023-09-27 12:51:59 +08:00
@Gota 做需求问题不大,我只是觉得性价比不高。Golang 的价格相对于 PHP 、Python 这些要贵很多,而且招聘也相对来说困难。
|
74
Gota 2023-09-27 13:29:26 +08:00 via iPhone
当然偏单体,重业务的系统我还是推荐 Nodejs T3 那一套,前后端统一技术栈能省不少对接时间。
|
75
testcgd 2023-09-27 14:03:02 +08:00 via Android
就业务来说,你们公司有几个人?人超过 3 个的话建议用 go ,php 转 go 也就一两天的事情,你把框架搭好然后就可以加人出业务了,你一下子转 java ,业务过渡期老板不怼你?其实 go 招人也简单,招愿意转语言的就好。唯一的问题就是基建和搭框架得有人搞不然容易成屎山
就个人来说,你转行 java 其实没啥优势,随便一抓就是十年 java 老兵了,你确定你能竞争得过大厂出来的吗?在现在公司如果 java 架构出了问题,分分钟空降个阿里高 p 来摘你桃子 |
76
beidounanxizi 2023-09-27 14:48:47 +08:00
@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 嘛? 🐶 |
77
xiaocaiji111 2023-09-27 15:50:26 +08:00
@beidounanxizi
不好意思,让您失望了,云原生和业务都搞过,java 和 go 都搞过,还为公司使用 gin 封装过比较完备的开发框架。 |
78
zhouhu 2023-09-27 16:29:48 +08:00
宜昌吗,可以招我过去吗
|
79
zzzkkk 2023-09-27 16:50:46 +08:00 via Android
|
80
beidounanxizi 2023-09-27 16:54:04 +08:00
@zzzkkk 自带的 sdk 库就可以了啊
|
81
beidounanxizi 2023-09-27 16:57:12 +08:00
|
82
zzzkkk 2023-09-27 17:02:30 +08:00
@beidounanxizi
用什么 orm 库 什么 validator 库 什么 mvc 库 用 go 了肯定不用 dao service 层了吧 你 controller 的数据是怎么从 db 里取出来的? |
83
beidounanxizi 2023-09-27 19:43:31 +08:00
@zzzkkk 那套东西 都是通识啊 这些随便找一个不就好了 多的去了
这是软件设计层面东西 跟语言不相关 |
84
zzzkkk 2023-09-27 23:35:27 +08:00 via Android
@beidounanxizi
go 的确有好处 跟 nodejs 比咋样 node 的网络并发比不上 go 没 go 方便 但总比 php python ruby 好了 node 需要安装 go 不需要安装 但 node 写业务比 go 好 因为是动态语言 |
85
dandankele 2023-09-28 14:42:07 +08:00
同样也有这个问题。。如果是出于公司业务增长遇到性能瓶颈等问题,想优化,并且也考虑成本,那么直接试试 swoole 一类的。。如果只是单纯的想提高自己的技能水平,为以后就业考虑,那么 java 吧。。虽说 go 与 php 很搭,但是二三线城市 java 就业机会多啊
|
86
8E9aYW8oj31rnbOK 2023-10-09 22:29:45 +08:00
|