写点什么

樊伟伟:中华万年历的研发体系建设

  • 2020-01-10
  • 本文字数:3862 字

    阅读完需:约 13 分钟

樊伟伟:中华万年历的研发体系建设

TGO 鲲鹏会南京分会会员、随身云(南京)信息技术有限公司技术总监樊伟伟作为TGO鲲鹏会线上分享第六季的嘉宾,以直播的形式分享了中华万年历的创业研发体系建设。本文根据当天直播内容整理。



大家好,我是来自中华万年历的樊伟伟,很高兴今天能和大家一起探讨关于创业公司研发体系建设的话题。我的分享主要以研发中华万年历产品的整个过程为主,向大家介绍如何在产品的不同阶段,构建适合自己的研发体系,保证产品和业务稳定发展。


中华万年历是一款日历产品,除了一些日历必不可少的功能(农历、黄历、传统文化运势)外,还有天气、星座、节日提醒、订阅公众资讯等功能。产品的初衷是以日历切入,串联天气、提醒、倒数日以及星座,为大家提供资讯和传统文化。


先和大家讲一个关于创业段子:“我有绝妙的创意,靠谱的团队和天使,就差一个程序员了”。但我认为,只要创业项目不是 demo ,那绝不仅仅只差一个程序员。创业公司能活下去非常不容易,必须要有完整的研发体系支撑,所以打造高效的研发体系非常重要。

什么是研发体系


技术人都应该知道康威定律 —— 一个公司的产品和服务,是其自身组织结构和沟通以及工作方式的反应。从这个角度来看,一个研发体系应该包含三个部分:


  1. 组织。组织和人是最重要的,如果研发体系里没有组织和团队,谈流程 / 规范或是技术 / 架构都没有意义;

  2. 流程 / 规范。流程和规范的优化是为了让组织之间的协作更加高效,同时保证我们研发的交付质量;

  3. 技术 / 工具。合适的技术架构保证我们的产品快速迭代,自动化工具的使用可以提高工作效率。


这三条线共同构成了研发体系,每一条线下都有很多实践点,来促进产品和业务向前发展。接下来我会从万年历开发的不同阶段,针对这三条线的不同时间点,来跟大家交流我们当时是怎么通过这些打造并建设我们研发的体系。

中华万年历产品发展历程

起步阶段,从 0 到 1

从 0 到 1 是野蛮生长的过程,为了让产品快速上线,第一个版本的产品功能能多简单就多简单。在起步阶段,人手的不足是从 0 到 1 阶段面临的普遍问题。



从组织这条线来看,如果在创业之前已经搭建好团队最好,如果没有团队,面临的第一个问题就是招人拉队伍。创业公司刚开始招人有一个 3F 法则:family ,friends ,fools(家人,朋友,“傻瓜”),除此之外,因为资金有限,我们还要尽量多招多面手,能在多个领域发展的员工。


同时,这个阶段的流程 / 规范也是非常粗暴的,沟通基本靠吼,协作基本靠走,甚至没有独立办公室。但这时的效率却是最高的,因为大家都是面对面沟通,所以避掉了很多不必要的环节。在流程方面,如果有 idea 、需求或开发上线就直接上,没有很完整的开发环节。


最后,这个阶段不要有任何的技术情怀,要选自己最擅长的技术栈,不要选大公司时髦的技术架构。技术服务业务,优先保证产品能快速上线。在这个阶段,技术方面要做到最基本的一点就是代码和开发环境的统一。同时,这时的工具也非常少,大部分时候都是靠人肉操作。

成长期,分组而治

我们在成长期 —— 产品快速发展时会遇到下列问题:


  1. 用户规模快速增长,新的需求会大量涌现;

  2. 团队成员快速扩张。沟通和协作的效率大大降低;

  3. 原有的系统架构在扩展性、稳定性方面,会暴露出很多不足,产生很多问题;

  4. 因为之前大部分的工作都是靠人肉,所以迫切需要自动化。



这个阶段我们要开始施行分组而治,业务和组织都要进行拆分。


因为这个阶段的需求会非常的多,各方面的人才都要配置齐全,所以我们要建立一个人才梯队和 QA 团队。同时,这个阶段我们需要沉淀一些最佳技术实践,所以还要建立团队内部的技术 wiki ,鼓励大家进行内部分享,团队之间相互学习和提升。


在从 1 到 10 的阶段中,需求来源和功能都非常多,所以我们必须要做出优先级,建立需求池。同时,我们还要保证代码的质量,做 Code Review 。除此之外,还要建立 bug 跟踪和故障管理流程,必须把此前的小 Bug 集中解决。虽然故障是不可避免的,但我们还是要把故障记录,分析背后的原因,避免重复犯错。


在技术 / 工具方面,随着用户的增长,我们需要引入成熟的开源技术,提高开发效率。在这个阶段,我们将单体的系统拆分成:用户、UGC 、内容和社区等子系统并快速上线。除此之外,因为这个阶段的发布会很频繁,所以我们还要建立持续交付的工具链以及统一的日志管理平台。最后,做一套大宝剑系统,包含资产、机房、应用、监控等同属于运维基础设施的管理,由系统统一管理。

成长期,产品迭代流程


上图是在成长期的产品迭代流程。首先是产品需求的收集和评审,有设计评审和技术的评审。接着进入研发、测试阶段,再通过测试环境和预发布环境后上线生产环节。在整个版本迭代之后一周,我们会进行复盘,对上个版本的各项数据进行分析,对做的不到位环节进行反思,在下个迭代里优化,并确认下个版本产品迭代的方向。


这个阶段是产品非常重要的阶段,也可以叫爬坡阶段。因为这个阶段的业务、产品、用户,系统以及组织人员都在向上增长,出现的问题会非常多,所以我们需要在组织流程、技术架构以及工具等方面快速提高。

成熟期,稳中求变

走过高速发展期,我们的产品会逐步进入到成熟期。在这一阶段可能会遇到以下几个问题:


  1. 产品功能比较稳定,需要寻求新的业务突破;

  2. 尝试增多,会导致新业务的失败率增高;

  3. 相同的业务场景,会出现重复造轮子的问题;

  4. 各个维度的数据分析需求越来越多。



这一阶段的团队需要垂直领域的专业人才,不断提高团队敏捷性,要形成研发团队的闭环。同时,我们还要建立基础平台部门和数据分析团队,沉淀基础服务,避免重复造轮子。


在流程方面要敏捷,小步快跑,接受用户的反馈,快速迭代演化产品。除此之外,还要用数据驱动产品决策,灰度和 A / B test 。当我们处于这个阶段时,每天的日活都是上千万,所以新功能上线不可能全部覆盖所有用户,一旦出现问题就是非常严重的线上故障。


技术 / 工具栈这一阶段相对稳定,但如果有新业务或新突破想去尝试,那么可能就需要积累一些自己的公共组件,把基础服务平台化。同时,在这一阶段要把沟通的工具统一,把沟通、流程全部统一化。最后,我们还要有数据分析平台,前期可以采购,后期可以去自建。


对于未来,我们希望组织敏捷,小而美;希望能把流程、各种最佳实践工具化;希望能真正做到技术驱动业务发展。

总结


  1. 我认为一个高效的研发体系,需要人或组织、流程规范,技术工具三位一体的考虑。每条线会有很多具体的实践,虽然每个公司都不一样,但思路都一样;

  2. 研发体系不求高大上,只求适合自己;

  3. 高效的研发体系和产品一样,需要不断迭代。


以上就是我分享的全部内容,希望能帮助到正在创业的朋友,谢谢大家。

Q & A

**成熟期的标准是什么?


樊伟伟:每个公司的发展阶段都不一样,对于我们这种 to C 的成熟期产品来说,新功能的迭代已经非常少了,我们更注重的是核心业务的稳定性,会往其他方向或其他领域做一些新的尝试。我认为,如果一个产品的核心功能稳定了,也开始想突破,想做新的尝试,就算是达到了成熟期。


如何裁掉不合适的人?


樊伟伟:因为我们公司发展至今已经 8 年了,所以有很多老员工。有的老员工会跟着公司一起成长,会成为公司的核心,甚至到管理层。但有些老员工跟不上公司的发展,或是自己不再寻求改变。我们首先会跟这些跟不上发展的员工面谈,并给予物质上的奖励,如果还是无法改变现状,那么就会快刀斩乱麻。


创业公司的研发团队要做 KPI 绩效吗?


樊伟伟:我们把研发分成了小组,每一块负责一小块独立产品,从整个业务的目标上来看,研发、产品以及运营都一样,所以研发也要背业务的 kpi 。除此之外,研发还会有其他的考核,比如交付速度、交付质量、线上故障等方面。


有没有做过失败的功能,是如何收场的?


樊伟伟:肯定会有。尤其在最开始的时候,会被用户左右,各个功能点都很散,不成体系。当你做了几个版本之后,你会发现之前做的功能其实很少有人用,甚至连自己都会慢慢遗忘掉,那这个功能最后就只能砍掉。我们现在会用数据衡量必须要做的核心功能,再加上 A / B test ,作出最后的选择。


技术团队和产品团队的沟通协作机制是什么样的?


樊伟伟:互联网公司的产品和技术打交道非常多,每一个版本的需求都要和产品碰。其实沟通协作,最重要的一点就是做到大家的目标一致,在这个基础之上沟通就会好很多。


如何安排团队加班,团队如何激励?


樊伟伟:对于创业型公司来说,加班肯定是在所难免的。我觉得加班应该分两种:


  1. 新业务尝试,关在小黑屋里每天都加班。这个时候团队的 leader 必须保证在物质上加倍补偿。在项目成功之后,要给予奖励;

  2. 产品迭代的节奏没安排好,造成研发团队加班。我们不鼓励这种加班,作为团队的 Leader 应该思考如何避免、如何优化。因为这种类型的加班并不会提高效率,最后交付的产品质量也会非常差,造成团队的不满,同时也没有时间让团队成员沉淀提升。


训诫和鼓励是否有适合的比例?


樊伟伟:如果有团队成员在某方面做得不好,我们应该先做正向的鼓励。如果正向的激励不起作用,那我们再采取反向的激励。比如提出批评,扣减绩效奖金等,但比例也需要自己去把控。




TGO鲲鹏会,是极客邦科技旗下高端技术人聚集和交流的组织,旨在组建全球最具影响力的科技领导者社交网络,线上线下相结合,为会员提供专享服务。目前,TGO 鲲鹏会已在北京、上海、杭州、广州、深圳、成都、硅谷、台湾、南京、厦门、武汉、苏州十二个城市设立分会。现在全球拥有在册会员 800+ 名,60% 为 CTO、技术 VP、技术合伙人。


会员覆盖了 BATJ 等互联网巨头公司技术领导者,同时,阿里巴巴王坚博士、同程艺龙技术委员会主任张海龙、苏宁易购 IT 总部执行副总裁乔新亮已经受邀,成为 TGO 鲲鹏会荣誉导师。


2020-01-10 16:512262

评论

发布
暂无评论
发现更多内容

望繁信科技受邀参加中国智慧财务国际峰会

望繁信科技

开源一夏 | 在 STM32L051 上使用 RT-Thread (五、无线温湿度传感器 之 完结篇)(附源码)

矜辰所致

开源 RT-Thread 8月月更 STM32L051

拒绝“填”麻烦,这里有条安全返校小妙招

sofiya

基于STM32F103设计的智能门锁(支持多种开锁解锁方式)

DS小龙哥

8月月更

【Vite】配置HTTPS&自签名证书

小鑫同学

8月月更

惊艳!阿里巴巴最新发布Java系统架构师+开发应用面试突击宝典

Java编程日记

Java 编程 程序员 面试 架构师

docker下的spark集群,调整参数榨干硬件

程序员欣宸

Java spark 8月月更

数据,不能只讲大道理

水滴

数据中台 数据规范 数据化转型

打造数字化工作平台,提升内外协同效率

神奇视野

“掌上迎新”,这个学校把5400+新生安排的明明白白

sofiya

C++多态案例(一)-计算器类

CtrlX

c c++ 面向对象 代码 8月月更

【消息通知】用公众号模板消息怎么样?

小鑫同学

8月月更

上手体验TailwindCSS

小鑫同学

8月月更

flex 布局(弹性布局 / 弹性盒子)一直没学明白,看完这篇文章我彻底懂了

CRMEB

Go-Excelize API源码阅读(十五)——SetSheetViewOptions

Regan Yue

Go 开源 源码 8月日更 8月月更

95后阿里P7晒出工资单:狠补了这个,真香...

退休的汤姆

Java、 面经 社招 秋招 阿里、

SAP 电商云 Spartacus UI 里的 ASM 模块启用的前置条件

汪子熙

angular SAP SAP UI5 Spartacus 8月月更

强烈推荐一款超好用的开源电商系统!!!

CRMEB

大数据训练营1期 毕业总结

张大彪

一个 SAP 开发工程师在 SAP 德国总部出差的见闻系列 1:出差 ≠ 公费旅游

汪子熙

SAP abap 8月月更 开发工程师 思爱普

带你体验一次类型编程实践

小鑫同学

8月月更

介绍16个让你的代码变漂亮的属性

小鑫同学

8月月更

阿里最新468页Spring Boot企业级项目开发实战手册好强啊,Github获星30000+

Java面试那些事儿

Java 编程 程序员 面试 架构师

云原生(二十二) | Kubernetes篇之Ingress案例实战

Lansonli

云原生 8月月更

计算机网络(四、网络层)

计算机网络 8月月更

秋招大厂字节上午 10:00 面试,10:09 就出来了 ,问的实在是太...

退休的汤姆

Java、 面经 社招 Java工程师 秋招

时序数据无处不在

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

抽象工厂模式在项目开发中的应用,这个例子绝了

知识浅谈

工厂模式 8月月更

【全干】从零搞定微信SDK授权

小鑫同学

8月月更

小程序|炎炎夏日、清爽一夏、头像大换装

小鑫同学

8月月更

京东8年资深架构师为你解析:Kafka源码解析实战。为你解忧

Java编程日记

Java 编程 程序员 架构师 面经

樊伟伟:中华万年历的研发体系建设_技术管理_樊伟伟_InfoQ精选文章