汪·课
github-circle-white-transparent
“汪·课” 欢迎您!
作者:
汪志成
发表:
2020年7月20日
修改:
2020年8月2日
收录:
技术原创

在疫情期间疯狂……加班!

疫情期间你在干什么?是闲得无聊还是借机充电?我不一样!我加班都快累死了。坐下来,听我给你讲一个很长的关于“产品开发”的故事。

疫情的冲击仍未结束,但终于可以松一口气了,很多人的工作和生活也逐渐回到了正轨。但我不一样,我的工作一直都在“正轨”上。

故事开始于春节之前。

梦想起飞 —— 做个产品吧!

出于业务形态和市场定位等方面的考虑,ThoughtWorks 是个很少做产品的公司。即使在全球范围内,除了 Selenium 这样的少量开源产品之外,商业产品屈指可数,更不用说成功的商业产品了。

然而,在 ThoughtWorks,还是有一帮小伙伴的心中装着一个产品梦,当他们在机缘巧合之下聚到一起的时候,一段有趣的故事就开始了……

ThoughtWorks 的主营业务是咨询与交付。咨询团队主要是帮助传统行业进行数字化转型,并帮助他们提升技术能力,而交付团队则常常扮演特种部队的角色,负责为长线项目打下坚实的基础或者逐步驯服庞大的遗留系统。

像很多咨询公司一样,我们会接触很多客户,既传授知识,也学习经验教训,以及更重要的:分析、总结、创新。但与传统咨询公司不同的是,我们的很多小伙伴经常会在咨询类角色和交付类角色之间反复切换。这样一来,我们既能了解到客户的战略层痛点,也能了解到客户的战术层痛点,既能眼到,也能手到。

在多年的咨询与交付经历中,我们发现即使对于以“落地”见长的我们,咨询方案也仍然存在落地难的问题。这一部分来自其内稟复杂性,另一部分则是因为缺乏合适的落地工具。

这就是一切的缘起。

在和笪磊碰了几次之后,我们决心做一个产品,为咨询方案的落地提供帮助!我们要把咨询过程中发现的落地问题,设计出解决方案,并将其融入一套工具中。让这套工具与咨询、交付工作相互促进、相互弥补,我们就可以走出一条有 ThoughtWorks 特色的产品化之路。

这个产品,叫做 Gaia,大地之母。这是笪磊给起的名字。

钱不是问题,问题是没钱!

ThoughtWorks 当前的体制不太适合做产品,因为我们的成本核算是以项目为单位的,而产品需要相当大的投资。和外部创业团队不同,我们不能拉风投,况且风投也不一定能给我们充分的信任和支持,因此,拉投资就只剩下一条路:向公司要投资。那个时候,疫情还连点苗头都看不到呢,而公司的业务正欣欣向荣,眼前一大堆订单发愁没人做。让公司决定把本可以拉出去赚钱的精兵强将调出来做产品,其难度会有多大,可想而知。

好在我们咨询部门早就定下了“愿意支持产品化尝试”的原则性政策,因此经过几次正式和非正式的面谈,我们争取到了两个全职人头和几个兼职人头来做一个 POC,把我们的想法可视化,顺便证明一下可行性。这个 POC 不但需要实现常规的操作界面,还有一个作为技术核心的绘图模块。我是两个全职人员之一,另一位同事冷旭波则是只有一年多经验的新前端。虽然略有担忧,但是鉴于他前一阵子的工作表现相当不错,我还是把常规功能部分的开发工作完全交给了他。事实证明,这次的“大撒把”成功了。而我则开始进行绘图模块的选型与验证。我们的产品团队就这样以最小功耗模式一步三摇地启步了。

时间紧迫,不顾一切往前冲

大撒把之后,旭波就自我驱动着往前跑了,而我这里的任务更加紧迫。首要的任务就是技术选型。

在以前的项目中,我曾经做过一个图形编辑器,按照原来的思路重写也是驾轻就熟,复用她、看着她一点点成长的冲动无比强烈。其优点也是很明显的:完全可控,成长空间无限,成就感。但是缺点也很明显:时间。在抱着不甘心的心态做了一个几天的 SPIKE 之后,我还是忍痛放弃了这个方向。也许在很久之后它会以另一种形态重生,但在目前的境况下,不行 —— 她不足以在规定的时间、规定的地点,成长为撑起全村人期望的顶梁柱。

之后,我评估了好多第三方库,比较了它们的需求覆盖度、成熟度、可控性、代码质量、授权方式等很多维度,并最终选定了 mxGraph。它是一个基于 Apache 2.0 协议的图形库,已经发布了很多年,并且已经被用在了一些比较成功的商业产品中。代码质量也差强人意,而且以我们团队的实力,我相信在不久的将来,我们可以深度改进它。

技术选型结束之后,就是枯燥的开发工作了。这些虽然也很有趣,但是不值得写到故事里,略过不表。

Gaia MVP,上线!

MVP 最好设置一个假想客户,讨论之后,我们选定了一个当时看来成单希望最大的客户。虽然这个假设最终还是落空了,不过,对于 MVP 来说,这种假设仍然是必要的,因为团队需要凝聚共识,各种讨论也需要一个上下文。

MVP 没法像 POC 那样以纯前端的方式进行开发,于是我们有了一个专业的后端 —— 孔凡岳。除了开发之外,我们还需要一个 DevOps 来把 MVP 上线。但我们没有更多的人手了,于是这副重担也落在了凡岳的肩上。凡岳没有 DevOps 经验,于是笪磊找了 DevOps 专家赵朝朝来做场外指导。

相应的,我也在技术架构上尽量减少后端的工作量,设计了一套近乎 Serverless 的事件驱动架构:除了少数必要工作之外,后端只存储命令和事件,而前端负责查询事件和自行解释。这样做的优点是可以让后端的工作最小化,也不需要了解大部分业务知识。这样一来,大部分功能开发都不需要和后端沟通,前端一个人就搞定了。当然,缺点也很明显:在大数据量下性能很容易出现严重问题。不过,就目前的场景来说,其优点可以对我们提供很大的帮助,而由于我们的预期数据量有限,至少在公测之前,其缺点都不会构成实际问题。因此,作为一个过渡方案,它是可以满足期望的。

由于 MVP 要面向客户,我们还迎来了第一位全职 UX —— 夏雨。当然,还有一位幕后大佬 —— 钱冰沁。冰沁设计了本产品的第一套 Design System,而夏雨负责将其落实到设计稿。

与此同时,笪磊也在高频度的接触销售人员(比如周树峰、华宇等)和现场咨询师(比如亢江妹、白玉等),以寻找商机、征求建议 —— 客户需要什么?我们怎样做才能更容易让客户动心?

潜在商机很多,但我们急需的是成单。说服少数人可以靠愿景,但要想说服大多数人,真金白银才是最有效的。我们不能永远依赖传湘等领导的背书,获得来自民间的广泛支持才是最重要的,在 ThoughtWorks 这样的扁平化公司尤其如此。

时间来到了一年一度的 DDD China 大会。

在大会上,除了笪磊和周峰为 Gaia 做了一次软广之外,还意外收获了一个商机:我们的一位前同事跳槽到了一家大企业担任业务架构师,他正好需要一个架构可视化工具,我们目前的代码只要稍微改改就可以满足他们的需求。需求很急迫,信任很充足。他们的预算虽然紧张点,但这不是我们目前关心的重点,我们目前的重点是成单,而不是多少钱。于是双方一拍即合,我们的小团队立即转向了这个新的航道。而较高的架构质量和代码质量,保证了我们可以轻松的切换航道,这正是我们 ThoughtWorks 在做产品时的显著优势。

嘭!崩溃前夜

经过两个多月的努力,我们的产品已经初步满足了客户的需求,同时第二期合作也已经在规划中了。我们这个小团队的艰难跋涉,终于迎来了曙光。那些辛勤努力眼看着就要结出第一颗果实了!

这个时候,它来了!

疫情的突然袭来,让人猝不及防。客户开始战略收缩,这笔投资也被其高层撤消了。满满的希望,破灭了。

丢单还只是小事儿,更重要的是,疫情对公司业务的影响是全方位的,我们的投资预算会不会被砍?如果被砍了,我们怎么办?是就此放弃还是用黑工的形式坚持下去?

一时之间,团队忧心忡忡。

逆周期投资!曙光 2.0

然而我们毕竟是 ThoughtWorks,一向不走寻常路。这次几乎成单的商机,也都看在传湘和公司领导层的眼里。他们决定继续给我们支持,更大的支持。

疫情带来的影响是双向的,既导致我们的收入锐减,同时也留出了大量的人才。

疫情,对我们的产品来说,既是危险,也是机遇。

其危险在于市场受到影响,我们的产品可能要很久之后才能带来收入,在此之前,投资随时可能中断。

其机会在于它一开始就定位在远程办公概念下,内置对于分布式协作的支持,而这在疫情期间属于硬需求,想想 Zoom 的神话吧。同时,只要公司愿意提供支持,那么可动用的人才储备几乎是无穷无尽的,一些平时需要打破头才能抢到的人才,现在几乎没人抢了。

重拾梦想,往前冲!

有多少资源,做多少事。得到公司全力支持的我们,不再需要通过低功耗模式来证明自己了。

就这样,我们意外地告别了眼前的苟且,重拾我们的梦想,开始追寻我们的诗与远方。

得到公司的投资承诺是一回事,但如何把这些投资用好,可不是一件轻松的事!

首要的问题是人。我不止一次说过,做产品就是做团队。我们需要一个有着强烈产品梦的团队,更需要一大批富有执行力的人来让这份梦想照进现实。

好在,我们早有准备。

远在产品立意之初,我们其实就有了一个开发团队,只是这个团队当时正在帮客户做项目。而在我们小范围讨论产品的同时,也通过日常的闲聊,潜移默化的把一些“小想法”埋在了这些人的心里。现在,是时候召唤他们归队了!

当然,现实还是有些骨感的。那时候,正是武汉刚封城没多久,解封还遥遥无期,而这个团队中的很多核心成员,都是武汉或武汉周边的,比如 PM 张晗,前端 TL 黄俊、杨平,后端 TL 陈亮,其他的小伙伴也都在各地居家隔离。在现实世界与精神世界的双重压力下,我们是否应该再给他们加一份压力?犹豫再三,我们终于还是吹响了集结号。至少这一次,现实远比想象中的更丰满,他们毫不犹豫地加入了。从我的角度,无从得知他们每个人的心路历程,不过我知道他们都有一个共同的名字 ThoughtWorker!我们不加班,但是一旦要为梦想而加班,我们比谁都疯狂。事实上,今年上半年是我入职以来最忙的半年。也许我们最终会写出每个人的故事,但还是先继续听我的亲历吧。

除了开发团队之外,我们还需要一个强力的产品团队。因为,我们要给产品规划填上血肉,因为,我们要给梦想涂上色彩。这时候冰沁和周峰也归队了。专业的就是不一样,我们的产品终于有了更丰富、详细的定位和发展规划。基于这个产品定位,我们的 UX 谷宜蒙设计了全新的 VI,李梦兰则设计了一套全新的 Design System。和以前不同的是,我们这次终于有充足的人力来真正落实它了。另外,Bees 这个名字也正是从这个时候开始用的。

疯狂的用户测试

产品推进到 Alpha 阶段之后,我们的产品团队(笪磊、周峰、钱冰沁、李梦兰)就开始忙起来了,他们在日常工作之外,还要忙着给各种潜在的利益相关者进行演示/用户测试。

用户测试意义重大。一方面,我们不能闭门造车,必须由真实的需求来驱动,而不能活在自己的想象中;另一方面,我们要通过用户测试来争取同事们的支持,因为,民心至上 —— 有了同事们的理解和支持,我们才能争取到公司的持续投资,并且不断吸引同样有产品梦的小伙伴儿们加入进来。

我没有参与用户测试,但仅从他们的日程安排来看,就知道这些用户测试的工作强度有多大。

用户测试对我们的产品形态产生了深远的影响。一段时间之后,无论是从产品 VI、产品特性还是用户界面方面,都发生了很多细微但重要的变化,产品思路也更清晰了。更重要的是,早先定下的“方法、流程、平台”相结合的产品策略,也在这个过程中得到了初步验证,产品策略更加坚定了。

Develop Others

有了大量的人,如何用好就成了最大的挑战。这些人基于对产品的梦想和对我们这些先行者的信任而来,我们就必须尽力让他们各尽所能。虽然很多人是入职公司不到一年的新人,或者还在 Junior 级别,但是基于对他们的了解,我们还是毫不犹豫的把一些关键角色分配给了他们。因为做产品,本质上是在做团队,这个决定虽然可能会让产品面临一定的风险,但是只要把团队建设好,产品就一定会成功的。简化一下康威定律:产品即团队 —— 产品的气质取决于团队的气质,产品的成就取决于团队的梦想。当产品发展与团队发展出现冲突时,我们毫不犹豫的选择团队发展。因为,团队才是产品的根本。

除此之外,我们还逐渐建立了主备 TL 机制,确保每个产品至少有一个主 TL 和一个后备 TL。这样一旦公司的业务突然起来,急需用人时,我们至少可以保证产品的延续性。

而我自己,则退化为一个只会 Develop Others 的老兵😁。实际上,这是我萌发于很久以前的梦想,我希望能成为团队中的一个吉祥物:参加一下 Code Review,写写文章,讲讲故事,做做梦,畅想一下很久之后我们的产品给世界带来的改变,这才是我想要的生活。有了这么多强力小伙伴儿的加盟,我终于离我的梦想更近了一步。

欢迎新同学

疫情,也给我们的很多毕业生带来了挑战。刚刚入职,正需要证明自己的时候,却无事可干,这可不是什么好兆头。于是我们跟公司的其它部门协商,接收了一批毕业生进来,边工作边培养。效果出乎意料的好 —— 不是因为我们培养有方,而是他们似乎天生就属于我们团队。比如我们的杨雨露同学很快就担纲了 BeeMaster 的 BA,我们的张欣玖同学做出的宣传片已经达到了专业水准,我们的 QA 黄源同学的另一重身份竟然是饭圈里的粉头儿,对运营和宣传颇有心得。天予不取,必受其咎。既然天命如此,那我们当然也果断的把这些合适的人安排在各种关键岗位上啦。

上线、上线、上线

满功率工作就是爽。我们分出了三个子产品,每个产品都实现了两周一次上线的持续交付节奏。我们还有了安全小伙伴儿的加盟,每个子产品都有了专业的 BA/UX/QA/DevOps 同学。这种豪华配置,以前就算在客户项目上都显得有些奢侈。

我们甚至还做了一个英文版,希望将来能用它争取总部的支持。

团队越来越大,我们还有了跨团队的横向拉通机制:产品例会、技术例会、DevOps 例会。这些会都安排在晚上,于是我们将其笑称为“夜总会”生活。我们不加班,但为了梦想,我们加起班来比谁都疯狂。

News Letter

除此之外,我们还开始了定期的 News letter 邮件。News letter 邮件的作用远比想象中的重要。一方面,我们不能闭门造车,需要通过 News letter 来召集内测用户以及倾听反馈;另一方面,我们需要通过它来争取全公司员工的支持,并持续召唤有产品梦的小伙伴们。因此,虽然写 News letter 相当耗时间和心力,但却是非常值得的。

BeeCommon

拆出的三个子产品是 BeeArt、BeeMaster 和 BeeAuth,三者都共享同样的 Design System,并且 BeeArt 和 BeeMaster 共享着同样的绘图模块。根据逆康威定律,系统架构的变化也会反作用于组织架构,因此我们拆出了一个独立的团队来负责开发公共模块,这就是 BeeCommon。我们先期安排了李明敏、彭建伦、冯杰、崔丁文等几位小伙伴加入了 BeeCommon,并且会随着团队的发展,持续吸收有意愿迎接这些技术挑战的同学加入其中。

浴火重生!新的商机

到了 6、7 月份,中国终于在疫情中浴火重生了,我们的产品也是如此。重生的凤凰更加美丽,而我们的产品已然脱胎换骨。新的商机纷至沓来,我们反倒变得沉稳了。产品是一场马拉松,鞋里的一颗小石子都可能导致悲剧,因此,我们要一切都靠质量说话,既然大势已成,慢一点没关系。重要的是,缓一缓,把产品方向收敛一下。无限资源的状况迟早会结束,我们将如何重新面对有限的资源呢?我们要把力量集中在一个点,从一次成功走向另一次成功。

未来

聚散离合,也许这就是人生吧。有的人加入,有的人离开,有的人回来,但我们的心始终在一起,这就是 Bees 团队。无论在哪里,我们都有着共同的梦想。你的新项目,可能会跟 Bees 在某个十字路口相遇。你的新客户,可能会成为 Bees 的新客户。互联网消灭了距离,而这也正是 Bees 的使命 —— 为人们带来不一样的工作方式 —— Work Different, Bee Different!

故事远未结束

由于我开始过起了吉祥物的幸福生活,所以在工作中和大家的接触变少了。视角和篇幅所限,无法讲述更多。但故事远未结束,我希望我抛出的这块砖,能让大家回忆起在 2020 这个遍布阴霾的年代里,我们一起创造的这些阳光灿烂的日子。

我的小故事写完了,你的呢?