程序员说 “这个做不了”:背后大多不是技术不行,而是这三层现实约束
在产品、运营、业务和技术协作的场景中,经常会出现这样的冲突:业务方提出一个看起来很简单的需求,比如 “就加一个按钮,增加一条筛选条件”,结果被程序员一句 “做不了” 直接驳回。业务方容易理解为技术人员推诿、能力不足;但实际上,纯粹受物理、数学约束而完全做不到的事情非常稀少,绝大多数 “做不了”,翻译过来是成本太高、副作用太大、外部条件不允许,只是技术人员没有完整解释背后的权衡逻辑,造成沟通错位。本文结合软件研发实际场景,拆解 “做不了” 背后的三类真实含义,区分 “权衡取舍” 和真正的技术硬限制,同时给出业务、产品、技术双向高效沟通的实操方法,减少团队协作内耗。
一、程序员口中 “做不了” 的三层真实含义
第一层:技术可以实现,但综合成本太高,收益不匹配
表面看只是增加一个按钮、一个筛选字段,但在技术视角,改动牵一发而动全身。一个字段变更,可能要同步修改数据库、多个上下游关联系统,重新编写逻辑、完整回归测试、协调多团队上线,还要承担上线之后故障的维护责任。投入的人力、时间成本,远高于这个需求本身带来的业务价值。
人话翻译:能做,但是代价太大,这件事不值得投入这么多资源。
常见现象:业务只看到前端一个小交互,看不到背后整套链路的改造。如果直接说 “成本太高不划算”,又容易被理解为抵触业务,于是简化成 “做不了”。
业务方正确提问方式:不要问 “能不能做?”,改为问:“实现这个需要改动哪些模块,预估需要多少工时,会带来哪些风险?”把判断题变成事实陈述题,让业务方掌握成本信息,由业务来判断值不值得投入资源。
第二层:功能可以实现,但会带来严重副作用,破坏原有系统稳定性
部分需求直接开发确实可以完成,但会损害现有系统的性能、数据一致性,引发隐性 bug。举一个典型例子:新增一条查询筛选条件,直接改写 SQL,会导致数据库索引失效。小数据量看不出问题,一旦数据规模上涨,查询速度急剧恶化,整个页面接口卡顿超时,影响全量用户使用。新增的小功能,会把原本稳定运行的老系统拖垮。
人话翻译:能做,但是做完之后,现有业务会出问题,我们需要做取舍。
这种场景下核心不是 “做不做”,而是业务要做权衡:是优先上新需求,还是优先保障原有系统稳定运行?需要双方对齐业务优先级,而不是单纯把问题丢给技术拍板。
第三层:受外部条件约束,是真的客观无法实现
这种才是真正字面意义上的 “做不了”,不是开发能力问题,卡点来自外部,常见三类来源:
[*]第三方接口与平台规则限制:外部开放 API 本身就没有提供对应能力,调用频次、返回字段存在硬性限制;逆向破解、爬虫抓取又会违反平台协议,甚至触碰法律风险,开发者无权突破外部规则。
[*]权限不在己方手里:需要修改别的团队维护的系统,对方排期、资源不支持,自己无权改动。
[*]合规、监管硬性要求:隐私、数据安全、支付监管等法律条文明确禁止该行为,强行实现会带来处罚风险。
人话翻译:不是我们不想写代码,外部条件卡死,绕开就会违规。
遇到该类情况,沟通重点不再是评估开发工时,而是一起寻找替代方案,或者推动外部合作方调整规则。
二、真正技术上 “完全做不到” 的少数场景
大部分需求属于成本与取舍,只有少数受物理、数学、分布式理论约束,属于客观硬限制,无论投入多少人力物力,都无法实现:
[*]客户端无法做到绝对安全:客户端代码运行在用户设备上,用户可以逆向、抓包、篡改本地数据。无论怎么加密,都无法彻底杜绝篡改,只能提升篡改成本。
[*]多副本数据无法瞬间全部彻底删除:数据会存在主库、多套备份、缓存、日志多套副本,无法一瞬间把所有地方的数据全部抹除,只能按照流程逐步清理。
[*]分布式系统 CAP 不可能三角:分布式系统网络分区不可避免,一致性、可用性、分区容错性三者不能同时完美满足,必须做业务取舍,不能同时追求永远不宕机、数据绝对实时一致、性能极速响应。
这类约束是底层客观规律,不是开发人员主观推脱。
三、团队沟通矛盾根源:结论式沟通 vs 问题式沟通
矛盾的根源来自两边表达习惯错位:
[*]技术端习惯直接抛出最终结论:“做不了”,省略中间成本、风险、约束推理过程。
[*]业务、产品听到的是态度,默认对方不想干活,双方陷入情绪对抗,忽略背后客观现实。
高效沟通的核心:业务不要上来就指定解决方案;技术不要只给 “行 / 不行” 的二元结论。
✅ 业务 / 产品侧:不要直接提方案,描述业务问题
错误方式:“给页面加一个导出按钮”(直接指定实现手段)正确方式:“现在运营人员需要导出 XX 条件的数据做报表,目前手动复制耗时 2 小时,我们想要解决这个耗时问题”(描述业务痛点与目标)
同一个业务目标,往往不止一种实现手段。想要把钉子敲进去,不一定非要买锤子,可能有成本更低的替代方案36氪。
✅ 技术侧:不要只说做不了,把信息完整交还给业务
技术人员沟通时,避免只输出结论,补充三件信息:
[*]如果硬要做,需要改动哪些地方,预估工时;
[*]会带来什么副作用、风险;
[*]是否存在替代折中方案。
不需要技术自己拍板要不要上,而是把成本、风险摆出来,让业务结合业务价值做决策。
四、完整协作沟通简易清单
业务方提需求前
[*]描述业务痛点、使用场景,而不是直接指定按钮、字段这类实现方案;
[*]明确这个需求的业务价值,解决什么问题,可以带来什么收益;
[*]当得到 “做不了” 的答复,追问三点:需要多大成本?存在什么风险?有没有折中替代方案?
技术收到需求反馈时
[*]区分三类情况:成本收益问题、系统副作用问题、外部硬约束;
[*]输出评估结果:工时、改动范围、风险点、备选方案;
[*]将决策交还给业务方,而不是直接拒绝需求。
五、全文总结
“做不了” 三个字,绝大多数情况并不是程序员技术能力不足。更多是三种情况:实现成本远大于业务收益、会破坏现有系统稳定性、受到第三方 / 合规等外部客观条件约束。真正受底层物理、数学规律限制完全无法实现的场景其实非常少。
团队很多内耗来源于沟通模式错位:业务直接给出解决方案,技术直接给出二元结论,中间的成本、风险信息被省略。业务方尽量描述要解决什么问题,而不是指定怎么做;技术方不要只简单回复做或不做,把成本、风险、备选方案完整输出,把决策交还给业务,才能减少协作冲突,做出更合理的项目判断。
页:
[1]