我把“批量导入”做成了法拉利,结果用户拿去当轮椅:一个程序员的自我消化史

01 需求下来时,我以为要拯救世界

产品经理原话:
“哥,客户要导 Excel,最多 10 万行,能不能搞?”
我当时的内心 OS:
10 万行?那不得上微服务?得上分片?得上消息队列?得上幂等?
于是,我拍桌子:
“能!给我两周,我给你一条数据高速公路!”

02 两周后,我交付了“数据界的港珠澳大桥”

功能清单:

  1. 前端拖拽 → 分片上传 → 进度条实时到 0.01%。
  2. 后端 SpringWebFlux 响应式背压,背压值精确到 byte。
  3. 消息队列用 Kafka 三副本,一条消息跑 3ms,比我家 Wi-Fi 还快。
  4. 数据库 Bulk Insert,批大小动态调整,自适应内存,自适应 CPU,自适应我的发量。
  5. 异常行自动进入“重试坟场”,可单条复活,也可一键超渡。
  6. 最后生成一份 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 报告》高清相纸,
回家贴墙,时刻提醒自己:
“别问,问就是记事本。”

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注