面对水货主管的无奈

51 天前
 Super8

公司新来一个技术 Leader ,提的一些问题总是非常的无语。

一大早的来公司,看不懂我的工程架构设计,工程都封装好了,看不懂工程代码,问我这些问题:

我们系统是云平台,要接入多类业务和各类型设计,为什么要做成 SaaS 服务? 为什么要一个接口要建 vo 类 param 类? 为什么要再自己封装一层分页结果 vo 类,不直接把 mybatis plus 的分页接口结果类返回?

我真的相当无语。

工程我都有写 readme 文档,且代码都有注释的。。。

技术管理我看过很多,但是这种技术水平的,第一次见!

我们系统是云平台,要接入多类业务和各类型设计,为什么要做成 SaaS 服务? 为什么要一个接口要建 vo 类 param 类? 为什么要再自己封装一层分页结果 vo 类,不直接把 mybatis plus 的分页接口结果类返回?

我都不想回答,直接给他复制 GPT 回答的结果:

一、为什么要做成 SaaS 服务?

  1. 多租户需求 云平台通常面向多个企业或业务方接入,SaaS 模式天然支持多租户架构( multi-tenancy ),便于管理不同客户的数据隔离、授权、定制化配置等。

  2. 平台可扩展性强 业务方不再直接依赖你的系统内部实现,只通过 API 或租户配置使用服务。后续你升级、修改功能不影响业务方使用。

  3. 降低接入成本 业务方不需要部署自己的系统,降低技术门槛和接入成本。你平台统一提供账号体系、功能服务、数据接入。

  4. 统一运营和监控 SaaS 平台方便做统一的日志、指标监控、授权、计费、异常告警和租户管理,方便后期商业化和服务保障。

  5. 支持“业务+能力”平台化建设 SaaS 模式可以将你的技术能力(如:设备对接、状态监控、告警处理等)封装为平台服务,实现“能力即服务”,提高复用效率。

二、为什么要为每个接口单独建 VO 类和 Param 类?

  1. 解耦业务逻辑与外部接口 每个接口的参数和返回值不直接暴露数据库实体(如 DO 或 Entity ),而是通过 Param 和 VO 进行封装,可以防止结构变动影响外部接口。

  2. 增强接口可维护性 接口一旦发布就要保证兼容性。用 VO/Param 类结构清晰,后期扩展字段不会影响旧字段使用。 例如:新增字段只需修改 VO ,不必影响其他系统。

  3. 避免 Entity 暴露敏感字段 数据库实体类往往包含业务内部字段、敏感数据、逻辑控制字段(如 isDeleted 、createUser 等),不适合直接暴露给前端或外部系统。

  4. 更好支持校验与文档生成 Param 类中可以加上 @Valid 注解、Swagger 文档注解等,便于接口参数校验和自动生成 API 文档。

  5. 支持多种前端适配/多端渲染 VO 可以根据不同前端( Web 、小程序、App )做裁剪或拼装,更灵活。

三、为什么不直接返回 MyBatis Plus 的分页结果类,而要封装自己的分页结果 VO 类?

  1. 隔离框架依赖 你平台可能以后换成 JPA 、Jooq 、DSL 等 ORM ,直接返回 MyBatis Plus 的 IPage 会让业务逻辑耦合于该框架,不利于未来替换。

  2. 返回字段不够友好 IPage 的字段命名如 records, total, size, current 等可能不符合前端/三方接口标准(比如有些接口需要 pageNo, pageSize, dataList )。

  3. 分页结果 VO 可以统一封装元信息 你可能希望分页结果中统一返回:

code 、message

数据列表( data )

当前页、总页数、总条数等

时间戳、耗时统计等平台级信息

通过自定义 PageResult<T> 类,可以统一返回结构,便于前后端协作。

  1. 跨系统统一分页协议 如果你平台提供 API 给外部调用(例如 SaaS 客户或前端),封装自己的分页结果结构能统一整个系统返回格式,提高规范性和兼容性。
7554 次点击
所在节点    程序员
79 条回复
Super8
51 天前
@laminux29 技术沟通我当然愿意参与,甚至很欢迎。可沟通的前提,是彼此做了基本准备,不是把“为什么你们要设计得比我想象中复杂”这种问题当作质询式开场白。
技术 Leader 不是要懂所有技术细节,但应该具备基本的架构思维、文档阅读能力和尊重团队技术积累的态度。
我的问题不是“不愿意解释”,而是“不是第一次遇到不懂装懂的上级”,累的不是解释,是浪费时间在无效沟通上。都已经来快两个月了,还没理解公司业务系统架构和相关技术栈,这是还是我的问题!!!
Super8
51 天前
@Super8 #21 这不是我的问题
Niunai
51 天前
我比较好奇,为啥新来的这么菜,还是你的主管,为啥老板没把你直接升到主管?
tedaz
51 天前
找+2 举报 抄了他
byj66
51 天前
想起来我遇到的一个前端组长,不知道 CSS BEM( https://getbem.com/) 命名规则。让我们要按照她不知道从哪里 copy 的前端规范写,我指出来后,BEM 就加进了规范。但当时因为类似的这些事情搞得太难受,表达上有些问题,感觉得罪了她。之后由于她能力不行,脾气还不小,就被公司开了。

团队代码风格一致确实是有必要的,但是作为主管这种基础的东西都不懂,挺膈应人的。
specita
51 天前
如果以前不是搞 java 的,不太懂这些各种 O 也正常
konakona
51 天前
@encounter2017 emmm ,怎么说呢。这只是冰山一角。当时正在开会,我看到他的操作有些生涩,所以我直接告诉他怎么操作。他依然选择把问题描述给 ChatGPT ,然后按照 ChatGPT 的要求去一步一步来。 🥲
konakona
51 天前
@encounter2017 我本职是程序员,也擅长 DevOps , 所以服务器的运维大部分我上。比如新建一个 Scraper Server ,基本监控。非工作时间,负责 Scraper 程序的同事写的太屎,导致服务器 OOM 宕机,充气服务器后程序不启动的情况下,服务器不会 OOM ,但是一启动程序就 OOM 后再次不可用。于是领导直接把服务器删了,重新购买,重新部署,结果很多东西装不上,一直弄到凌晨 3 点(虽然我很感谢他没有打电话叫我就是……)也没弄好,第二天上班看到这些,我很无语。“严厉的”告诉他不可以再像这样随意的删减服务器,应该侧重程序问题的排查。
moyt
51 天前
我当啥事呢,原来是 java 那套恶心的设计模式,各种抽象,其他语言一句话的事,java 来回啰嗦几个文件,恶心的一逼,虽然我不喜欢甚至讨厌,但换做是我,看到已经写完的玩意,也不会多说啥
ThinkCat
51 天前
我们老大,别的部门转过来的,压根不懂代码。整天和人讲话,非要趴人家耳朵边,悄悄话,搞的什么都见不得人一样。能做的就是上级开会胡扯,然后溜须拍马,功能做出来了,点点功能什么的,然后指点一下江山。有别的团队人家找他,他什么都不懂,就在那胡扯,说的甚至都是错的,听了真想笑😆。他不懂技术,整体方案什么的,也插不上话,张口说的就像楼主感觉一样。不过用他来甩锅到是非常不错,反正下面说啥就是啥。
sir283
51 天前
jvav 是这样的,要是搁 c/c++,早被喷了。😂
htxy1985
51 天前
建议你再多观察一下别人的过人之处。
jqtmviyu
51 天前
@konakona #15 坏了, 我发现自己也是水得不行. ssh keygen 生成 密钥和几种加密类型的命令总是记不住, ssh 目录下的 auth 文件名也默写不出来. 少了 zsh 自动补全, 命令都一堆敲错.
MoYi123
51 天前
写个分页查询也有这么多讲究吗? java 恐怖如斯, 不愧是企业级编程语言.
skipwitit
51 天前
为啥你不是主管?技术自嗨罢了。
sampeng
50 天前
不过,这个为什么。是不懂还是疑问为什么搞这么复杂?不要 vo 就活不下去了?如果人不多,不搞复杂的设计方案,效率是更快的…所以这个“为什么”是指什么?你确定公司黄了之前你会动底层数据选型?我理解你说的 saas 服务是微服务? saas 和云平台是业务领域不是技术领域,没看懂。个人感觉你的 leader 关注的是为什么搞这么复杂。
SimonOne
50 天前
op ,你的主管的小号在上面出现了,当心点
hcy
50 天前
kill9
50 天前
有好多人 ,还是没做过主管,主管和技术关注点不同,你给人家解释也只是你的义务,如果你觉得不想解释那为什么还要回复,你直接开怼就行了,那么为什么你还要上来发文呢,我猜测是不敢直接回怼,又怕给你穿小鞋,既然你真的是大牛又何必害怕。你的这个文章如果真的被主管看见,那么这种做法比你直接当面指出更危险。 一般的主管是部门的主管,主管下面还有组长的啊,你是组长还是技术?如果是组长我觉得你有点幼稚,如果是技术我觉得可以理解。
CJ2r4u3EH4lrM7aR
50 天前
@yosoroAida 为什么不向老板反映呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1138094

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX