01 需求下来时,我以为要拯救世界
产品经理原话:
“哥,客户要导 Excel,最多 10 万行,能不能搞?”
我当时的内心 OS:
10 万行?那不得上微服务?得上分片?得上消息队列?得上幂等?
于是,我拍桌子:
“能!给我两周,我给你一条数据高速公路!”
02 两周后,我交付了“数据界的港珠澳大桥”
功能清单:
- 前端拖拽 → 分片上传 → 进度条实时到 0.01%。
- 后端 SpringWebFlux 响应式背压,背压值精确到 byte。
- 消息队列用 Kafka 三副本,一条消息跑 3ms,比我家 Wi-Fi 还快。
- 数据库 Bulk Insert,批大小动态调整,自适应内存,自适应 CPU,自适应我的发量。
- 异常行自动进入“重试坟场”,可单条复活,也可一键超渡。
- 最后生成一份 17 页的 PDF 报告,附带折线图、饼图、雷达图,图多到能当毕业答辩。
上线那天,我给自己打了 99 分,扣 1 分怕骄傲。
03 用户首秀:把我高速路当菜市场
一周后,客户大姐发来感谢信:
“小同志,你们系统太好用了!我打开 Excel,手动填了两行,点上传,比记事本方便!”
手动……两行……
我盯着监控面板,发现:
- 平均文件大小:2 行 × 8 列 ≈ 128 Byte。
- 峰值 QPS:0.0003。
- Kafka 三副本跑了一周,消息总量 14 条,还比不上群里老板发的“收到请回复”。
那一刻,我体会到了“把法拉利钥匙交给轮椅用户”的绝望。
04 我不死心,去现场做“用户调研”
我:
“大姐,10 万行数据呢?您是不是没发现‘模板下载’按钮?”
大姐(淡定嗑瓜子):
“啥模板?我就记个电话号码,要 10 万行干啥?我又不是搞电信诈骗。”
我:
“那您为啥不用记事本?”
大姐:
“记事本不能上传呀!你们这个还能点进度条,多洋气!”
我:
“……”
05 回公司路上,我把性能调优文档删了
什么分片、什么背压、什么自适应发量,全删!
顺手把标题改成:
《如何优雅地支持 2 行数据上传并生成 17 页 PDF 的过度设计反思录》。
06 更惨的还在后头
同事告诉我,大姐嫌我们 PDF 报告太长,直接打印出来当草稿纸,背面给孩子打数学草稿。
我连夜把报告里的饼图改成她儿子最喜欢的奥特曼,
内心求安慰:
“至少……我贡献了教育行业。”
07 彩蛋:需求池里永远躺着下一辆法拉利
昨天,产品经理又拍我肩膀:
“哥,客户说想一次性导 20 万行,能不能再优化?”
我微笑,掏出键盘,新建分支:feature/notepad-plus-plus。
这次我准备直接调用系统 API:
if row_count <= 2:
os.system('notepad.exe')
else:
os.system('start /wait https://www.bilibili.com/video/BV1GJ411x7h7') # 手工教学
感悟:
“用户永远有 1% 的用法,干掉你 99% 的自尊;
但正是这 1%,养活了你 100% 的 KPI。”
08 评论区等你们
来,晒晒你把“航空母舰”开成“儿童泳池”的血泪史,
点赞最高的,我送一张 A0 尺寸《17 页 PDF 报告》高清相纸,
回家贴墙,时刻提醒自己:
“别问,问就是记事本。”