加班内卷的IT行业,我选择躺平 —— 一个Spark老油条的清醒自救指南
我是谁?北京某中厂的大数据开发,Vim党,通勤地铁上刷LeetCode,下班路上听《硅谷101》,干了三年Spark,头发没掉光算我命硬。每天和shuffle、OOM、YARN调度斗智斗勇,偶尔还要帮前端同事 debug 他们传过来的 null 值——别问,问就是“后端接口有问题”。
上周五晚上9点,我在公司改第8版的DWD层清洗逻辑,窗外国贸的霓虹灯亮得刺眼。隔壁工位的小哥还在调一个离线跑批任务,产品经理在钉钉群里@全体成员:“明天上线前必须搞定!”那一刻,我盯着终端里不断滚动的GC日志,突然问自己:我到底在卷什么?
内卷的尽头是自我消耗
去年双11,我们团队搞大促实时看板。凌晨三点,集群炸了,因为某个UDF里用了Javascript引擎做动态规则解析(别笑,真有这种骚操作)。运维甩锅给数据倾斜,测试说数据对不上,产品说“用户等不及”。我一边查YARN日志,一边啃冷掉的煎饼果子,脑子里全是面试题:“Spark shuffle 过程中如何避免数据倾斜?”——可现实哪有标准答案?
那段时间,我天天加班到十点,回家倒头就睡,周末补觉。体检报告出来:轻度脂肪肝、颈椎曲度变直。女朋友说:“你最近说话都带Kafka offset味儿了。”
我知道,这不是个例。身边太多人陷入“加班=努力=升职”的幻觉。但真相是:老板要的是结果,不是你的工时打卡记录。你熬到深夜修bug,不如白天花半小时把代码写得更健壮;你反复返工,不如一开始就跟产品确认清楚需求边界。
躺平 ≠ 摆烂,而是高效输出
很多人误解“躺平”是放弃奋斗。其实不然。我的躺平哲学是:用最小必要努力,达成最大确定性结果。听起来像职场厚黑学?不,这是工程师思维。
举个栗子。以前我写Spark作业,总想着“一步到位”,结果逻辑复杂、调试困难、上线即崩。现在我拆成三步:
- 先跑通最小可行版本(MVP)
- 加监控+告警(比如用Prometheus抓stage duration)
- 再逐步优化(比如用broadcast join替代shuffle)
上周有个需求:清洗用户行为日志,过滤无效点击。旧方案是用Scala写一堆嵌套filter,跑一次2小时。我改成用SQL + Delta Lake的Z-Ordering,配合合理的partition策略,时间压到25分钟。省下的1小时45分钟,我准时下班去健身房了。
关键是什么?不追求炫技,只解决真实问题。你说我躺平?可我的SLA达标率全组第一。
技术人的“反内卷”武器库
1. 面试题不是背出来的,是“用”出来的
很多新人疯狂刷面经,背“Spark宽窄依赖区别”“RDD vs DataFrame”。但真正能让你在职场立住脚的,是把知识转化为生产力。
比如,你知道coalesce和repartition的区别吗?背定义没用。但在实际场景中:
- 数据量小 → 用
coalesce减少分区,避免小文件 - 数据严重倾斜 → 先
repartition打散,再join
理解原理,才能灵活应对线上事故。去年我就靠这招,在凌晨两点快速定位了一个因分区数不合理导致的OOM问题。
2. 别让“伪紧急”绑架你的时间
产品经理总说:“这个需求很急!”但真的急吗?我学会了问三个问题:
- 用户今天不用会死吗?
- 能否先上线核心功能,边缘case下周迭代?
- 如果延期,最坏后果是什么?
90%的情况,答案都是“其实没那么急”。学会管理预期,比盲目加班更重要。
3. 工具链自动化,解放双手
作为Vim党,我坚信:重复劳动是程序员的敌人。
我把常用Spark调优参数写成模板:
spark-submit \
--conf spark.sql.adaptive.enabled=true \
--conf spark.sql.adaptive.coalescePartitions.enabled=true \
--conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
...
还用Shell脚本自动检查HDFS小文件、YARN资源使用率。每天省下至少1小时人工巡检时间。这些时间,我用来读论文、学新框架,或者——真的躺平。
关于JavaScript的冷思考
你可能纳闷:一个大数据开发,提JavaScript干嘛?其实,技术栈的边界正在模糊。
上个月,我们BI团队要用Apache Superset做可视化,里面嵌入了自定义JS组件。我顺手帮忙调了个图表交互逻辑,结果发现:懂点前端,反而能更好理解数据消费场景。
更重要的是,JS社区那种“快速迭代、小步快跑”的文化,值得后端借鉴。他们不会为了“完美架构”拖半年,而是先上线再优化。这种务实精神,正是对抗内卷的良药。
躺平之后,我反而升职了
今年Q2绩效面谈,领导说我:“交付稳定,故障率低,还能带新人。”——而那些天天加班到深夜的同事,有的因为频繁出bug被问责,有的 burnout 请假三个月。
公司不傻。它要的是可持续的战斗力,不是燃烧殆尽的火柴。
现在的我:
- 早上9:30到公司,梳理当天任务优先级
- 中午雷打不动午休20分钟(用番茄钟)
- 晚上7点前尽量走人,回家学点新东西(最近在啃Flink源码)
- 周末绝不碰工作消息(除了线上P0事故,但三年来只遇到两次)
通勤地铁上,我不再焦虑地刷招聘APP,而是听播客、看电子书。因为我清楚:我的价值,不取决于加班时长,而在于解决问题的能力。
给同行的几句真心话
| 误区 | 真相 |
|---|---|
| 加班=努力 | 高效=产出 |
| 多学框架=竞争力 | 深挖原理=护城河 |
| 听老板的话=安全 | 管理预期=专业 |
如果你也在被deadline追着跑,被需求牵着走,不妨试试我的“躺平三原则”:
- 守住底线:不接受无意义加班,不背不属于自己的锅
- 聚焦价值:只做对业务有直接影响的事
- 持续精进:每天留30分钟学习底层原理(比如Spark DAGScheduler怎么切分stage)
真正的职业安全感,来自不可替代性,而不是工位上的时长。
最后,送大家一句我在Spark源码里看到的话(其实是自己编的,但很有道理):
“A resilient system isn’t built by burning out its operators.”
北京的秋天来了,今晚我打算早点回家,煮碗面,打开Vim写个自动化脚本。毕竟,代码可以重跑,人生不能重来。
共勉。

评论 0