【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

  • 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:512129

评论

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

充电桩的B面是......不只公众号?还有智充小程序!

Geek_60c26d

5年“研究”3年“实战” 之后的满分答卷

青藤云安全

网络安全 容器安全 安全服务 云原生安全

八连冠!浪潮云连续8年蝉联中国政务云市场第一位

浪潮云

云计算

秒云云原生信创全兼容解决方案,推动信创产业加速落地

MIAOYUN

云原生 信创 信创云

亚马逊云科技向你发出召唤——游戏开发者,集合!

亚马逊云科技 (Amazon Web Services)

react.js edge postcss

华为云零代码开发图片压缩工具

乌龟哥哥

6月月更

尽一份孝心,为家人做一个老人防摔报警系统

华为云开发者联盟

IoT 华为云 防摔倒报警系统

一、Kafka安装

星期35

SphereEx 正式开源面向 Database Mesh 的解决方案 Pisanix

SphereEx

开源 SphereEx 云上数据库 Database Mesh Pisanix

快来极狐GitLab SaaS 学习全球顶级的开源项目吧

极狐GitLab

开源

InfoQ 极客传媒 15 周年庆征文|手把手教你使用Python实现一键抠图,照片换背景|so easy!

迷彩

Python AI 前端 6月月更 InfoQ极客传媒15周年庆

跟我学Python图像处理丨5种图像阈值化处理及算法对比

华为云开发者联盟

Python 人工智能 华为云

中原银行统一日志平台

中原银行

海量数据 中原银行 日志平台

入驻快讯|欢迎XCHARGE智充科技正式入驻 InfoQ 写作社区!

Geek_60c26d

什么是集群?为什么要使用集群架构?

Finovy Cloud

集群架构 云渲染 GPU服务器

音频 3A 处理实践,让你的应用更「动听」

融云 RongCloud

【MySQL字符串数据类型优化】char和varchar的区别

写代码两年半

数据库 sql 6月月更

智充推出NET ZERO SERIES储能充一体机,携手比亚迪共创净零未来

Geek_60c26d

直播预告 | 在阿里云 ESSD 云盘上部署 PolarDB for PostgreSQL 集群

阿里云数据库开源

数据库 postgresql 阿里云 开源

干货合集│最好用的 python 库都在这

Python 有趣的技术知识 6月月更

flutter系列之:Material主题的基础-MaterialApp

程序那些事

flutter 程序那些事 6月月更 widget

大数据生态安全框架的实现原理与最佳实践(上篇)

明哥的IT随笔

大数据 hadoop hive 数据安全

谁说Redis不能存大key

华为云开发者联盟

数据库 华为云

身为程序猿——谷歌浏览器的这些骚操作你真的会吗

孤寒者

6月月更 浏览器操作 小技巧 程序猿必会

CREMB Pro 后台子管理员 403 问题分析

CRMEB

君可归烈士寻亲系统开发实战

乌龟哥哥

6月月更

在线沙龙 | 开源小秀场——数据库技术应用实践

SelectDB

数据库 技术分享 apache doris 沙龙

InfoQ 极客传媒 15 周年庆征文|在Flutter中自定义应用程序内键盘

坚果

InfoQ极客传媒15周年庆

从 0 到 1,探究百亿流量验证下的 MVVM 框架设计

图灵教育

百度 MVVM 全栈设计

小程序启动性能优化实践

百度Geek说

跨平台多媒体渲染引擎OPR简介

阿里巴巴文娱技术

音视频 弹幕 渲染

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