Issue #9 - 有关产品创新
TL;DR
首先我们需要理解这个世界,理解当中不合理的存在,然后尝试去对抗和改变这种不合理。这种力量源于不断的质疑,并有勇气从根本上重塑现有的系统和流程。最重要的是,不要对这个世界妥协。
一次与朋友聊天的时候聊到如何发现产品的机会点,我当时并没有答案,但我也一直在思考这些问题。我想从两个我最近使用的产品说起,一个是 Linear,一个是 Vercel。
Linear 是一个项目管理工具,对标 Jira。我很早就知道并且尝试过 Linear,但一直没有用起来,很大的原因是我当时并不认为它和 Jira 有什么区别,除了明显感觉到的「快」之外。Linear 的「快」让我都怀疑这真的是一个网页应用吗,Jira 同样也是网页应用。这点算是 Linear 向客户传递产品价值时并没有说的很清楚。但从能力上来对比 Linear 和 Jira,后者显然更强大,我想不到有什么理由我会需要用到 Linear。至于说速度,因为 Jira 功能更多,更复杂,也让我觉得它「慢」是有慢的道理的。因为 Jira 复杂,面向大客户,有很多复杂的逻辑在里面,所以它就应该慢。这种把复杂和慢捆绑起来的想法,在我看来就是理所当然。我虽然不清楚这背后的技术原理,但乍一听也合乎逻辑。我回头去看我们自己的产品也是非常复杂,同样也很慢,所以似乎也说得通?
「慢」如果是形容一个人,我们可能说是效率低下,但是对于复杂产品怎么就成了理所当然呢。「慢」的软件显然也会让使用的人慢下来。举个例子,在 Jira 里面,如果你是用 Scrum 类似的产品开发流程,上个 Sprint 里面没有完成的任务是需要继续放在下个 Sprint 里面,这点 Jira 已经自动化了。但是有些任务在上个 Sprint 已经消耗了一部分点数,但 Jira 的逻辑是只有当任务被完成之后才会记录点数。因此那些还在进行中但没有做完的任务就被算作是没有做,显然不合理,当然有 Workaround,我们可以修改这些任务的故事点,然后关闭它们,在新的 Sprint 里面在复制一批一摸一样的,然后重新估算点数即可。整个操作可能要花费半个小时的时间,而类似的操作在 Jira 里面非常的常见,并且每个操作都要等个 1–2 分钟,但是每天都这样做会浪费大量的时间。这当中有很多操作本来就不是必须的,只是因为 Jira 无法满足我们的需求,而不得不去做的 Workaround。另外一种方式就是我们改变行事方式,适应 Jira 所谓的流程来进行产品开发,但这根本就是要人命,人怎么能去适应软件呢?软件应该适应人才对,所有好的软件应该就是非常直觉的。
Jira 的「慢」逐渐成为一种麻烦,而麻烦会让本来不愿意去做的事情变得更不想做。项目管理这件事情在软件开发中本就不是重点,我们的目标是交付产品。项目管理是一种需要管理可能出现的风险而不得不引入的事情,它是额外的负担,在经济学中被称之为「交易成本」。项目管理虽不可避免的,但应该最小化。一个配合密切的团队也需要项目管理,但只需付出很少的成本就可以让整个项目跑的很好。
Usually, every team and company started with a quite casual way of managing work, but later needed some tracking system, and often ended up using something like JIRA. I could see how the team motivation sank and how much time the team wasted arguing against it. Eventually, people give up, since they have to use something and there aren’t any great options really.1
Linear 实际上就是在降低交易成本,而这种交易成本虽然我最初也知晓,但因为习惯了 Jira,认为复杂性带来的交易成本是理所当然,也就没有去深究。倘若我最初不接受这种设定,并努力对抗这种「理所当然」,我们应该是可以发现更好的方案。我庆幸最终发现了 Linear 的价值,倘若 Linear 这款软件不存在,我不确定我能否像这些开发者一样,打破这种固有的认知,设计出一个和 Linear 一样的产品。
我一直认为,一个好的软件的设计者,或者说最初发起这个产品的人,一定是在这个行业里有过多年的经验,他很清楚行业中存在的交易成本,并且有能力去跌幅这种固有的流程,这样的产品应该就是一个伟大的产品。但反过来想,行业中多年的经验是否会习惯了所谓的「理所当然」,让他即便知道问题也不会做出改变呢,我没有答案。不过有一点我可以确认的是,一个外行大概是不能设计出一个好的产品的。
这里的另外一个问题是为什么 Linear 不是由 Jira 创造出来的?难道 Atlassian 内部没有人觉得 Jira 已经变得非常难用了吗?Clayton M. Christensen 在《创新者的窘境》这本书中已经给出了答案,它们过于专注于当前客户的需求和现有市场的利润模式,从而忽视了新兴市场和技术的发展。
第二个我想聊的产品是 Vercel,与 Linear 类似,我也是很早就知道了 Vercel,但从来没有机会去尝试。在我看来,像 AWS 这样的 IaaS 平台很成熟,功能也很强大,为什么我还要用 Vercel 呢?一个偶然的机会让我对 Vercel 的「快」印象深刻。我们的一些合作伙伴使用 Gatsby 作为前端并部署在 Vercel 上,同样使用 Gatsby 的我们,网站速度虽然也很快,但当我打开合作伙伴的网站时能够很清晰的感觉到它们的速度更快。一番研究之后发现它们的网站是部署在 Vercel 上,而我们用的是 Cloudflare,对比之下,从客户端请求到 CDN 的时间,Vercel 是 27ms,而 Cloudflare 是 103ms,我们对此都非常吃惊,我的经验告诉我 Cloudflare 提供了非常专业并且非常强大的 CDN 服务,居然跟 Vercel 有这么大的差距。虽然我产生了一个想法,就是把博客部署在 Vercel 上,我倒是要看看到底有多快。一番折腾之后终于有了结果,不过这次让我感到惊艳的地方不是速度,而是整个的部署体验。
先说一下我们当前的部署流程,首先需要把代码从一个分支合并到发布的分支,当 PR 合并之后才能进行部署。部署的时候工程师需要去到另外一个系统里面进行操作,这个发布系统有自己的版本和标签体系,因此工程师要仔细的对比这上面最新的版本是不是 GitHub 上刚刚合并的,如果不是那就要想办法了,或者刷新试试看。确认没有问题就可以点击部署了,然后是 20–30 分钟的等待。因为没有通知,工程师不定时的上去看看状态。等发布成功之后,工程师会通知设计师和产品经理去某个环境验收,然后丢出一个网址。设计师和产品经理打开网页,发现问题之后一边截图一边在 Slack 里面 @ 工程师哪里有问题,如果问题比较多的时候干脆直接开一个 Google Sheet 把截图都放进去,然后再加一列来标记工程师是否修复了这个问题。然后不断的重复上面这个过程。这当中没有一个人是快乐的,每个人都很痛苦,设计师很痛苦,工程师很痛苦,产品经理也很痛苦,但是有什么好的解决方案吗?我们尝试过去做一些改进,但是这个框架就是那样,最终大家还是只能痛苦着。
Vercel 的整个流程也是从一个 PR 开始。当一个 PR 被创建的时候,Vercel 就会进行部署,当部署完成后 Vercel bot 会在 PR 下面 comment 部署情况和预览的网址,在预览环境中,设计师可以直接在网页上 comment 某个元素,comment 的数量同样会同步到 PR 中,如果有尚未处理的 comment,那么 PR 就不能合并。再也不需要在 Slack 里面 @ 人,再也没有 Google Sheet 了,所有的操作都那么的直觉。用完之后我的感觉就是,产品验收流程就应该是这样。
这不仅仅是一个工具上的变化,而是整个工作流程都被简化了。我虽然不是工程师却也能感觉到原本流程中的痛苦,如果你问我应该如何优化整个流程的话,我未必能够想到像 Vercel 这样的方案。或许是因为在这个系统中待久了,觉得很多东西理所当然,在思考解决方案的时候也会被这些理所当然所束缚。就好像当福特问他的客户想要什么时,他们可能会说更快的马。而我可能希望更快的 CI。能够提出最佳解决方案的人首先深知其中的问题,不是表面的问题,而是挖掘到问题的第一性原理。从那里开始思考解决方案。
有时候解决方案不是一个软件/工具那么简单,有时候还需要思维上的改变。前面提到 Linear 在价值传递上不明显,从我个人选择 Linear 的过程来看,这个价值并不仅仅是 Linear 这个工具,还包括 Linear Method 所提到的软件开发方式。因为 Jira 慢这个件事情也不是一天两天了,我最初意识到我们需要优化我们一直使用的 Scrum 流程,在《Scrum is a Cancer》介绍了背后的思考,而新的方式更接近于 Linear Method,这个时候我才发现 Jira 已经无法满足我们的方法,然后尝试去使用 Linear。在用了 2 Sprint(6 周)之后才算真正认识到了 Linear 的价值所在。
对人来说,包容可能是一种美德,它们代表着理解和耐心。但在软件设计中,包容会成为创新的障碍。它们束缚了我们的想象力,限制了我们探索新可能性的能力。软件的创新恰恰源于对现状的不满。首先我们需要理解这个世界,理解当中不合理的存在,然后尝试去对抗和改变这种不合理。这种力量源于不断的质疑,并有勇气从根本上重塑现有的系统和流程。最重要的是,不要对这个世界妥协。
We believe people with passion can change the world.2
- Starting Linear by Karri Saarinen, CEO & Founder of Linear ↩︎
- Steve Jobs most innovative speech - YouTube ↩︎