找回密码
 立即注册
搜索
查看: 11072|回复: 49

[职场] 码农笑传之吃吃粑 (入职大礼包篇)

[复制链接]
发表于 2025-10-17 21:51 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 Klaudia 于 2025-10-21 20:06 编辑

===================================
2025.10.21更新一下
看了两天终于把生产上的脏数据还原回正常数据了,也知道为什么会出现这么**的bug了
这个功能本身业务逻辑很简单,但每个环节都会出小问题,然后也没人发现,这些小问题产生的脏数据会继续影响后续业务,然后滚了三个月雪球,知道我入职后的某一个风和日丽的下午,直到一位交易员选择导出数据时才发现这坨大shit

功能简要描述,就是交易员选择未确认的交易指令,推送到后台执行确认逻辑
首先问题1,交易指令是每日定时脚本生成的录入表里的,没有主键没有主键,而是用三个字段(业务日期,指令序号,指令次序号)当联合主键,且也没加联合约束,纯靠代码逻辑来约束,我草立德太变态了
问题2,后端逻辑写的乱七八糟,本来是拿所有指令以日期为key分组,然后在各自分组里用指令序号和次序号进行更新操作,然而之前的老哥写错了,没用分组结果for循环,而是继续拿传来的所有数据循环,分组分了个寂寞了本来到这一步就该让人奇怪的,这么写竟然在刚上生产环境时没出问题?
后来查看需求变更记录才破案,原来这个功能最开始强制要求交易员选日期筛出数据再操作,这样传到后台的指令的业务日期都是同一天的,就算for写错了也没问题,分组照样分了个寂寞(别问为什么前端只能选同一天的指令,而后端却要对不同日期分组处理,只能说在这种规范管理下前后端各写各的,能调通接口属实是天时地利人和)
直到两个月前某一天,交易员嫌每次都要选日期很麻烦,且可能会有不同天数的未确认指令,交易员懒得一天一天的批量确认,所以交易员让前端把选日期的前置操作优化了,然后直接进界面全选一把梭
于是就出现了选择多条不同日期加多个序号组合(指令序号+指令次序号)能拼出无数多的个key的神奇情况,导致一些属于其他交易员的指令,或者当前交易员没有授权的基金产品的交易指令都能被更新,甚至这个接口不止更新还能新增,刚才那一坨拼出来的不存在的key就被当成新数据新增了。。。
再加上前端没有锁界面的设置(就是点一个按钮,在请求得到响应结果前锁界面不给继续操作,我工作3年了第一次见过这种前端项目,甚至还是和钱有关的证券基金系统。。。。)
而且也没有分页(因为最开始交易员不想一页一页确认,这时候你可能会问那为什么还要把数据全传回前端,直接整个一键全部批量推送确认的接口不就行了吗,别问,问就是一天一天确认交易指令的仪式感,前面几天可能会一条一条看,后面就懒得看了直接进界面列表左上角全选一把梭哈)

就在这种神奇前端+神奇后端的组合下,交易员进界面,数据太多卡爆了,列表左上角全选一键梭哈,然后界面转圈圈请求半天没响应,交易员疯狂点确认,后端拼出一堆虚空key和大量重复key,确认到其他交易员的指令或者当前交易员未被授权的基金产品的交易指令,虚空key重复生成的超绝巨量脏数据被识别为未交易指令继续出现在其他交易员的交易列表中,其他交易员继续进界面全选一把梭哈,无限滚雪球滚了2个多月

到家了写不下去了,等明早上班在地铁上再写后续


以下原文
===============================
一家普通的证券基金公司
刚入职两周,就遇到了逆天功能逆天bug

至于为啥不跑路,是因为之前躺了一段时间,空窗期太长了(一年半),找了一个月才找到工作

前情提要可以看看这个帖子,是我刚入职几天时发的,简单介绍了下逆天的开发环境
https://stage1st.com/2b/thread-2263992-1-1.html
简要铺垫一下
1.因为数据保密,理论上分为开发环境,测试环境,uat,生产环境,各个环境之间数据和接口彼此隔离。因为各个项目服务之间都相互依赖,且还有一堆银行的其他证券公司的外围接口和服务。公司大部分人都嫌麻烦,再加上技术规范管理不严格,久而久之各个小组负责的项目的开发环境都缺少维护,相当于废了。最后大伙都把测试环境当开发环境来用,ust当测试环境。
那么问题来了,出了bug要怎么找出问题呢,因为没法本地运行打断点一步步排查,只能在写的时候祈求一把过,在关键节点加打印日志,出了问题就去服务器调日志文件看报错信息排查问题
2.对于数据管理非常混乱,表和视图相关sql没有统一管理,导致一张表里的字段信息基本看当初创建表的人良不良心有没有写注释,枚举类字段没有文档说明,只能去看源码
3.代码规范更是重量级,乱中爆乱,基本上能在各大码农社区看到的吐槽代码规范混乱的段子你都能在我们公司见到(没开玩笑,认真的)
4.需求文档这种东西基本等于没有,除非要离职了,就会象征性的写个信息含量基本等于0的交接文档

好,铺垫到此结束,正文开始
========================
入手第二周,业务员发现了生产环境里有个“小”bug,组长就分给我看顺便让我熟悉业务,这个功能已经在生产环境上部署了3个月才被业务员发现,由于时间太久了业务员自己甚至都不记得是怎么操作才会产生bug的
前面提到过,因为没法本地打断点,且没有文档,且业务员忘记了怎么操作导致的,所以不知道bug复现步骤
全靠自己造测试数据,一步一步走,加打断点,才“初步发现”问题所在
有一个定时任务,根据脚本每日定时生成未确认的交易指令录入表中,推送给基金经理确认
生成的交易指令,没有主键,是根据三个字段拼成的一个key来当主键用(当天日期,指令序号,指令次序号)
然后这个业务流程有点长,且这个交易指令表还关联了一堆其他表的数据
然后在后续的一堆逻辑中,这三个字段能在那一坨业务里被“更新”,这就很恐怖了,因为会产生了“主键”相同的交易指令数据
然后这个指令表关联的其他表也是根据这个“主键”来进行各自的业务流程的
然后就炸了,那一堆关联数据被更新的乱七八糟,关联关系炸裂中的炸裂
我所在小组的技术组长一开始也以为是个小bug所以分给我看,但我在看的过程中因为有些地方理解不了就去问他让他看看,问多了才发现如此恐怖的地方
,他也震惊了,我边上看他排查,他频频脱口而出“我草”
然后我实在忍不住问了一句,当初为什么要这么设计,他带着哭腔说他也不知道能写的这么逆天,但现在已经错过了重构的机会,因为在生产环境上躺了几个月了,产生了一堆实际业务数据
现在只能看看在不重构的情况下,修复bug+把数据还原回正常数据,今天看了一天只是初见端倪,具体还有哪些问题+解决方案下周再说
今天是我入职第一次加班到9点,道心破碎,一个不怎么难的小功能,在一堆负面buff叠加下就已经如此恐怖了,之后要是遇到业务逻辑稍微复杂一些的,工作难度可想而知
看着项目启动时的banner,再看着聊天记录里技术组长那一句“我草”,只能感慨钱难赚shit难吃


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2025-10-17 21:55 来自手机 | 显示全部楼层
这样再往后可能会有一个新功能,修数单
回复

使用道具 举报

     
发表于 2025-10-17 22:19 来自手机 | 显示全部楼层
证券公司普遍代码水平一般,我司也是
回复

使用道具 举报

     
发表于 2025-10-17 22:22 | 显示全部楼层
本帖最后由 oyss 于 2025-10-17 22:24 编辑

服务器也可以远程打断点的.就是你调试的时候别人用不了这台服务器了.测试环境总不会只有一台服务器吧.
回复

使用道具 举报

     
发表于 2025-10-17 22:26 | 显示全部楼层
上一帖说过了,没uat测试出问题了就你们背锅了。
建议早点把“需求-开发-内部测试-上uat-uat测试-发生产”的流程给确定下来。
回复

使用道具 举报

     
发表于 2025-10-17 22:38 | 显示全部楼层
驼峰跟下划线共存不是什么大事,我们也是这样的,关键还是命名要能解释其用途,名字起的好加上代码注释得当,这样也就不依赖技术文档了

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2025-10-17 22:40 | 显示全部楼层
证券直接管钱,开发和测试的区分都不在乎和不在乎桥塌凑合搭架子有什么区别,以为是数据就不会死人没事吗,能早跑尽早跑。
回复

使用道具 举报

     
发表于 2025-10-17 23:02 来自手机 | 显示全部楼层
证券公司这不很正常嘛,我呆着的就这样,很快我也融入其中了

—— 来自 鹅球 v3.3.96
回复

使用道具 举报

发表于 2025-10-17 23:07 | 显示全部楼层
证券公司的代码不是一直以笑话著称嘛

回复

使用道具 举报

     
发表于 2025-10-17 23:13 | 显示全部楼层
放宽心啦,这不是才加班到9点
代码质量在哪干都没有保障的,我司更烂,听大厂朋友吐槽,比主楼烂的情况也有不少
泥潭草台论在代码层面上也是成立的
回复

使用道具 举报

     
发表于 2025-10-17 23:15 来自手机 | 显示全部楼层
IT just works
回复

使用道具 举报

     
发表于 2025-10-17 23:17 | 显示全部楼层
一看各种描述
跟我前司简直是一模一样啊
不过你们还能直接修生产已经可以了,我们那会修生产只能等每周定期升级
除非篓子实在太大让大领导去打个申请才能在其他时间升级
回复

使用道具 举报

     
发表于 2025-10-17 23:20 来自手机 | 显示全部楼层
证券公司一直都是草台班子,更别说这种公司里的part支部你完全无法想象他们的理论水平

—— 来自 鹅球 v3.3.96
回复

使用道具 举报

发表于 2025-10-17 23:27 来自手机 | 显示全部楼层
小臻啊你打码没打全
这算不算草台又一力证


—— 来自 鹅球 v3.5.99-alpha
回复

使用道具 举报

 楼主| 发表于 2025-10-17 23:52 | 显示全部楼层
数据库爪巴 发表于 2025-10-17 23:27
小臻啊你打码没打全
这算不算草台又一力证

不要啊

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2025-10-17 23:55 | 显示全部楼层
只要钱没划出去,数据那都可以修嘛。话说这种修数据的活儿不是运维干吗,开发做做配合,大哥这还得亲自上啊?
回复

使用道具 举报

     
发表于 2025-10-18 00:30 | 显示全部楼层
突然感觉我现在这个草台公司也不错了……

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2025-10-18 00:36 来自手机 | 显示全部楼层
咱们智人里面究竟存不存在真正意义上的组织严密令行禁止的团体?
回复

使用道具 举报

发表于 2025-10-18 08:22 来自手机 | 显示全部楼层
所以工资高吗?给钱就行啊。
干长了就知道。这种草台bug一点都不稀奇啊
回复

使用道具 举报

     
发表于 2025-10-18 08:29 来自手机 | 显示全部楼层
铁甲钢弹 发表于 2025-10-17 12:55
只要钱没划出去,数据那都可以修嘛。话说这种修数据的活儿不是运维干吗,开发做做配合,大哥这还得亲自上啊 ...

想多了,一般都是码农自己写sql去修的,现在哪还有运维啊,都是码农一把抓
回复

使用道具 举报

     
发表于 2025-10-18 10:18 来自手机 | 显示全部楼层
我司也是 很多git也不会用 直接推master发布一把梭哈

—— 来自 OnePlus PJD110, Android 15, 鹅球 v3.5.99-alpha
回复

使用道具 举报

     
发表于 2025-10-18 10:34 来自手机 | 显示全部楼层
听着真熟悉啊,要不是我司不是证券公司,以为楼主是我的同事呢

昨天下班前也发现了一个小bug,也上线了3个月多了
代码里找了好半天原因,结果不是代码问题,是配置漏了

----发送自 Sony XQ-AT72,Android 12
回复

使用道具 举报

     
发表于 2025-10-18 11:46 来自手机 | 显示全部楼层
加个自增的主键,然后再加一个字段和这个字段组成唯一键

—— 来自 Xiaomi 23127PN0CC, Android 15, 鹅球 v3.5.99
回复

使用道具 举报

     
发表于 2025-10-18 12:39 来自手机 | 显示全部楼层
问题不大,保险公司生产环境也一坨,什么大国企或者民营500强,洞都一堆

—— 来自 鹅球 v3.3.96
回复

使用道具 举报

     
发表于 2025-10-18 12:46 来自手机 | 显示全部楼层
描述得这么恐怖的问题才加班到九点 是难得的好公司了
回复

使用道具 举报

发表于 2025-10-18 12:50 | 显示全部楼层
金融公司就这样,纸面上安全要求高,实际资源配置,任务要求上线时间根本不够,只能草台班子做完就行,出问题再说

论坛助手,iPhone
回复

使用道具 举报

     
发表于 2025-10-21 07:45 来自手机 | 显示全部楼层
俺这里也一样

—— 来自 nubia NX712J, Android 14, 鹅球 v3.5.99
回复

使用道具 举报

头像被屏蔽
     
发表于 2025-10-21 07:50 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2025-10-21 08:31 来自手机 | 显示全部楼层
引用第27楼super_uni于2025-10-21 07:50发表的  :
这代码截图看乐了,真的是代码规范执行到位,实际业务流程写得一团糟,现在还大力提倡ai介入占比,以后更......

是啊,人均语文不及格,还妄图用AI来写代码,需求讲得清楚吗就AI,garbage in garbage out

----发送自 Sony XQ-AT72,Android 12
回复

使用道具 举报

     
发表于 2025-10-21 09:20 来自手机 | 显示全部楼层
看了一下时间,楼主应该不是造成我加班的原因。
不过事多不愁,昨天友商有比你严重的多的故障。

—— 来自 鹅球 v3.3.96
回复

使用道具 举报

     
发表于 2025-10-21 09:45 | 显示全部楼层
去年接了个跑路了三个项目经理的项目 那代码和部署文档 简直是赛博考古学
回复

使用道具 举报

     
发表于 2025-10-21 09:50 来自手机 | 显示全部楼层
才加班到9点,问题不大
回复

使用道具 举报

     
发表于 2025-10-21 10:09 | 显示全部楼层
才9点,换个互联网公司,9点能叫加班么
回复

使用道具 举报

     
发表于 2025-10-21 11:06 | 显示全部楼层
这都2025年了,证券公司怎么会业务员发现bug直接给开发的?
不应该是测试去复现问题,再提正式bug给开发吗?
回复

使用道具 举报

 楼主| 发表于 2025-10-21 11:41 | 显示全部楼层
伊谢尔伦 发表于 2025-10-21 11:06
这都2025年了,证券公司怎么会业务员发现bug直接给开发的?
不应该是测试去复现问题,再提正式bug给开发吗 ...

流程规范一坨中的一坨

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2025-10-21 13:57 来自手机 | 显示全部楼层
卧槽,竟能如此相似。开发环境那段的描述,跟我现在处境完全一样。。。

—— 来自 Xiaomi 2311DRK48C, Android 15, 鹅球 v3.4.98
回复

使用道具 举报

     
发表于 2025-10-21 15:25 | 显示全部楼层
本帖最后由 boozer 于 2025-10-21 15:26 编辑


其实这种能定位或者说能大致定位的bug都还好了, 无非是多花些时间处理脏数据了, 又不是不给你时间修, 那种超出你知识范围的bug定位不了的才抓狂
一次集文化差异、网络工程与诸多巧合于一身的debug!https://qualityfocus.club/fun-debug
回复

使用道具 举报

     
发表于 2025-10-21 15:35 | 显示全部楼层
项目启动时还用banner,只能说是闲的,看起来就像养老公司。
回复

使用道具 举报

     
发表于 2025-10-21 15:39 | 显示全部楼层
CosineG 发表于 2025-10-18 10:18
我司也是 很多git也不会用 直接推master发布一把梭哈

—— 来自 OnePlus PJD110, Android 15, 鹅球 v3.5.9 ...

git这种东西对于硅农来说不够直观简洁,不如Perforce,不过用多了也学会了rebase。
话说你们这边没有CI流程吗?
回复

使用道具 举报

     
发表于 2025-10-21 15:49 来自手机 | 显示全部楼层
bankofsoul 发表于 2025-10-18 00:36
咱们智人里面究竟存不存在真正意义上的组织严密令行禁止的团体?

看你怎么定义团体。
5人通灵学院也是团体。
10人黑上也是团体。
40人mc也是团体。

5人本我还是见过组织严密令行禁止的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2026-6-21 07:00 , Processed in 3.163892 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表