乐于分享
好东西不私藏

90% 的项目翻车,都死在软件工程的三种思维错位上

90% 的项目翻车,都死在软件工程的三种思维错位上
说实话,带软件研发团队这么多年,我见过太多项目最后翻车,但究其原因,死在软件工程的三种思维错位上。
不是技术不行,不是团队不努力,而是项目牵头人从根上就搞错了思维方向:
  • 工程师埋头死磕性能优化,最后做出来的功能用户根本不用;
  • 产品天天追着加功能,完全不管技术落地成本;
  • 项目经理眼里只剩 deadline,赶出来的东西上线出一堆 bug。
软件工程的三种思维缺一个,项目就是半成品,人还累得要死。今天我就拿「3 个月上线一个电商 App」的真实项目,把这三种思维讲透 —— 不管你是开发、产品还是管理,看完至少能帮你少踩些坑。

先搞懂:三种思维到底有什么区别

思维类型

核心目标

核心关注点

决策优先级

典型口头禅

最容易踩的坑

产品思维

做对用户有用的事

用户价值、需求本质、商业闭环

要不要做 > 怎么做

"用户真的需要这个吗?"

贪多求全,什么功能都想加

工程思维

把事做对、做稳

技术合理性、稳定性、可扩展性

怎么做最稳 > 怎么做最快

"这么写以后出问题怎么办?"

过度设计,为了技术而技术

项目思维

按时、按质、按成本把事做成

进度、风险、资源、交付

怎么按时做完 > 做得有多完美

"这个风险我们有没有预案?"

只盯进度,牺牲质量和团队健康

说白了: 
产品思维决定「做不做」,工程思维决定「怎么做」,项目思维决定「怎么按时做成」。 三个维度缺一个,项目必翻车。

拿真实项目说透:3 个月上线电商 App,三种思维分别怎么用

假设我现在是研发总监,客户找过来:预算固定,3 个月必须上线一个电商 App,支持商品浏览、下单、支付、物流查询这些核心功能。 绝大多数团队上来就直接排期写代码,这可以说就是翻车的开始,那应该怎么做呢?

第一步:先用产品思维砍需求 — 做对的事

客户最开始给的需求清单有 20 多项目:要直播带货、要用户社区、要积分商城、要分销返利、要大数据推荐…… 但用产品思维看完后直接划掉 40%。
产品思维的核心不应该是满足客户提到的所有需求,而是应该找到「真正能跑通商业闭环的核心需求」。 
对一个刚上线的电商 App 来说,什么是核心? 用户能搜到商品、能下单、能付钱、能看物流,这四个功能跑通,这个 App 就活了。剩下所有花里胡哨的功能,上线以后再迭代都来得及。
太多项目最后夭折的原因是:总想着一步到位做个完美的产品,最后工期拖了半年,钱花光了,核心功能还没跑通。产品思维就是做减法:先活下来,再谈完美。

第二步:再用工程思维搭骨架 — 把事作对

砍完需求,团队里的年轻工程师提建议:
我们上微服务吧,以后好扩展;
用最新的分布式架构吧,并发高;
数据库搞个读写分离吧,性能好。 
我直接否决了。
工程思维的核心,不是用最牛、最酷的技术,是用最合适的技术。 3 个月工期,小团队,用户量初期不会太大,搞微服务纯粹是给自己找麻烦。最后我们定的方案:
  • 后端用成熟的单体架构,预留以后拆微服务的扩展位;
  • 核心下单、支付链路加缓存和降级机制,保证高可用;
  • 数据库只做基础优化,等以后用户量上来了再拆分。
工程思维就是克制:现在稳,比以后酷重要 100 倍。

第三步:用项目思维控全局 —按时,保质,控成本把事做成

技术方案定了,项目经理排出来的工期刚好 90 天,一天不多一天不少,我直接打回去重排,为什么呢?
项目思维的核心,不是让PM做一个完美的排期表,而是把所有风险和意外都提前算进去。 做项目哪有一帆风顺的?第三方支付联调卡壳怎么办?苹果审核被拒怎么办?核心开发突然请假怎么办? 这些都得考虑进去,最后我们的排期:
  • 核心开发周期 70 天,留 10 天缓冲期专门处理意外;
  • 每周做一次风险同步,有问题提前暴露,绝不攒到最后;
  • 支付、物流这些第三方对接,提前两周开始联调,绝不留到最后一天。
项目思维就是留余量:能落地的进度,才是真进度。

最后想说几句

很多小伙伴觉得,这三种思维是不同岗位的事儿:产品经理想产品思维,工程师想工程思维,项目经理想项目思维。 大错特错。
你是写代码的工程师,你写每一行代码的时候,多想想:这个功能用户真的会用吗?有没有更简单稳定的实现方式? 
你是做产品的,你提每一个需求的时候,多想想:这个需求技术落地成本有多高?有没有更轻量的方案? 
你是管项目的,你排每一个工期的时候,多想想:团队扛得住这个强度吗?有没有什么风险我没考虑到?
走得远的研发团队,从来不是某一方面特别强,而是三种思维平衡得好。 不贪多,不炫技,不冒进。 先把事做对,再把事做好,最后把事做成。 这就是做软件项目最朴素,也最有用的道理。