创业公司的研发地图
对企业产品研发的思考
我一直在思考,在几个人的团队,或者十几人、或几十人、或上百人甚至过千人的公司,应当如何进行产品研发,才能更好吻合公司业务发展的需求,在保证质量、速度的同时,让技术人员有成长、有成就。具体一点,就是能有效解决当前技术团队遇到的难题,把复杂的问题简单化,把缓慢或凌乱的流程规范化。
虽然在过往任职的企业中,我作为一线的开发工程师和技术管理角色,我所负责的业务和系统,带领的团队取到了一定的成果。当遇到问题时,我知道如果梳理、规划,也知道做什么,但我还没能清晰整理、总结和表达出来这一套方法论,从而分享给别人也知道应当使用什么原则、模式或流程。
今天受到《战略地图》的启发,我快速整理了研发地图,尤其是针对创业公司的研发地图。
创业公司的研发地图
在创业的这几年,在和不同行业的企业客户沟通过程中,我发现,不同阶段、不同规模的企业,在软件研发的过程中,都面临着一些问题和挑战。这些技术障碍,可能让管理层觉得力不从心,或许会让技术人员无从下手。但如果分析下去,实际上就是一个很小的技术问题。例如:一个取非重复列表数据的API接口,一个实现数据库事务的操作。有效地解决这些小问题,能给技术团队或公司的业务带来持续的改进和信心。
如果我们有一套模型,可以站在更高的层面解决技术团队整体性的问题,那么相信其效果会更加显著。
下面来和大家分享一下创业公司的研发地图。
研发地图,不是单纯从技术范畴关注开发类的事务,而是结合公司盈利层面和待服务的目标客户,进行高度的抽取和拆解。重点在于,我们更关注技术在商业环境中的应用、实践和创新。公司秉持着愿景和使命,服务目标客户,我们技术团队全程齐力参与其中,为公司设计、打造和研发所需要的企业级架构系统和积极为用户解决所遇到的问题和提出的需求,不断增强公司的技术核心竞争力。
像CEO一样思考,像工匠一样工作
在一次分享过程中,某上市企业的CTO讲到,作为开发工程师,应当:“像CEO一样思考,像工匠一样工作”。
讲真的,这两点要求确实很高。
但其中一点,像工匠一样工作,我觉得是每位务实的技术人员都应追求的品质。做一件事情,不管大小,不管是不是自己的本职份内的事,只要是工作上的正常需要,都应该用心用力把事情做完成、做完整、做完善、力争完美。
我刚入职唯品会,坐在休闲区那,我问我的老大,“怎样才能在公司里做得非常出色?”。当时老大和我说,不要贪多。当别人交给你做一件事情时,不管大小,都要想办法把它做好。当你做好了这件小事,获取别人和上级的信任后,就会有机会再承担更大的事情和挑战。
所以,在研发地图的下方,在学习和成长层面,要求我们作为技术人员、作为程序员、作为工程师,需要不断学习和加强自己的专业能力、职业素养、软技能。多做、多学、多总结。
首先,公司所处于的行业不同、业务不同、重心不同,所使用的技术栈也会不尽相同。同样的技术栈,在不同人员的手上和不同团队的环境里,使用的方式和达到的效果也千差万别。我一直在分享,TDD+重构+设计模式,是开发手中的三把斧。当然,所需要罗列的技能、专业和知识还有很多,在学习和成长层面,我们既要关注个体的互动,也要关注技术团队氛围和外部合作的通道。
3+1个流程,双线进行
技术开发人员做了几年的开发和写代码后,就会有一种很强烈的困惑:“我一直都在做业务需求的开发,什么时候才可以有突破和成长?” 背后的意思就是暗示我不想再每天重复写这能没有难度的代码。
诚然,做业务开发,是一件类似无限循环的工作。CURD增删查改,接需求、写代码、改Bug、发布上线。
为满足技术人员对自身成长的发展的诉求,同时满足企业核心业务发展的需要,我在技术团队中提出了“双线进行”的策略。主线上,我们技术团队以业务开发和需求迭代为重,重点配合和全力支撑公司各业务部门的需求;辅线上,我们也要关注专业领域内的工作,例如:重构、单元测试、性能分析、CI&CD、算法、大数据、docker等专题,不断学习并持续应用在自己的工作上,进行微创新或提升自己的开发效率和项目质量。为此,我们需要有创新的流程,或者创新的氛围。鼓励技术人员进行内部的技术分享、主动进行尝试和发挥、提高对失败的容忍,并且切实给到工作时间和相关的精神、物质奖励。例如:谷歌会把20%的时间给工程师自行安排;唯品会有微创新并且评审通过后可以拿到几百到几千不等的奖金(我曾经也拿过多次)。
在创新流程前面,是主线上的三个核心流程,分别是:
项目管理流程
持续交付流程
绩效考核流程
项目管理流程
项目管理流程,是技术团队内部以及和其他部门进行跨部门沟通和协作的重要流程,也是每天工作的指引和流程。
以敏捷开发流程为蓝本,结合公司自身的环境和节奏,可以梳理和统一内部的项目管理流程。好的流程,能产生更多协作和协同的同频共振;与之相反,缺少流程或凌乱的流程则会增加内耗或容易脱节。
在项目管理流程中,典型的有“三会”:需求评审会议、技术评审会议、测试评审会议。高频的动作和环节,主要集中在:开发的任务协作,以及测试问题的Bug跟踪。
持续交付流程
交付的定义,因公司而异。
如果你是做技术外包的,那么阶段性的输出就是交付,整体项目的验收完毕是核心的交付,后续维护期的版本更新也是交付之一。
如果你是做互联网线上平台的,那么新功能上线就是交付,即把需要迭代的新功能从开发环境更新到正式环境,这也就是我们常说的上线发布。
如果你是做传统软件服务提供商,那么完成一个新版本的开发和打包就是交付,把新版本部署和提供给客户也是交付,为已付费的客户进行版本升级和维护服务也是交付。
不管何种交付,我们都应该在保证交付速度、质量的同时,保证软件产品的代码规范、交付标准和流程、扩展性、可维护性、可靠的工作流。
绩效考核流程
企业离不开人,研发团队更离不开技术人才。
从对技术人员的“招育用留”,到OKR目标设定的绩效考核,再到技术职级评定和晋升、人才盘点,都是围绕技术团队管理和人才梯度建设而开展。这过程,需要企业高层授权,需要行政和HR部门的支持和配合。
AARRR模型
每家企业都会有自己的客户人群,自己的目标市场。
从公域流量么私域流量,从用户到客户,从全网种草到精细化运营,企业为了实现自己的盈利目标,需要为用户提供诸多产品、工具、App和功能。围绕AARRR模型,常规下涉及的系统就有:会员系统、商城、CMS、官网、支付系统、工单、客服系统等。
以上这些,还只是前台的系统,面向C端用户的产品。除此之外,还有面向公司内部的系统,例如:管理后台、结算系统、库存管理、ERP、CRM/SCRM、供应商管理系统等。以及为代理商、合作伙伴或上下游提供的开放平台、分销系统等。
核心还是AARRR模型,对应有:获取、激活、留存、付费、裂变。
在获取新客时,需要关注新客的获取成本,最好能找到一个路径,实现零成本获取、自然流量获取、被动获取新客,甚至获取新客的同时还能赚钱的方式就更棒了。
对于用户激活,具体看企业对此口径的定义。有些会把用户注册视为激活,有些会把用户至少购买一次称为激活,有些会把用户完成某个站内的动作称为激活。同时在激活过程中,要始终关注每天最新的激活转化率,持续不断改进产品体验,提升新用户的体验和降低他们的使用成本。
在留存方面,可以分为几个维度进行关注。例如在YesDev SaaS产品服务中,我们会分别关注四个层面的留存。分别是:
企业团队的7天留存率
付费企业团队的7天留存率
新用户的7天留存率
老用户的7天留存率
在付费方面,订单金额和每日流水是最性感的数字。我们要关注订单量、客单价、复购率、营销漏斗。其中,营销漏斗分为6个维度,依次是:
维度1:知晓
维度2:愿意尝试
维度3:尝试者
维度4:近期用户
维度5:买得最多
维度6:忠诚顾客
最后,裂变的方式,是通过社区和用户邀请有礼的方式进行铺开,可以通过老带新的方式,给老用户一定的激励。也可以通过B端或代理商的方式进行扩散和裂变。
核心KPI/GMV数据
“你不能衡量它,就无法管理它”。
创业公司需要自己造血,实现一条性感的增长曲线,就要在主流程上持续发力,关注主业,同时在日常经营上持续不断的提升、改进和优化,形成自己的技术壁垒和竞争优势。
在三方面,是需要技术研发来重点支撑的。
第一方面,是主流程的系统研发。这部分,建议单独隔离一个核心的团队进行沉浸式、长期稳定的研发。
第二方面,是订单和结算,这关乎收入、资金和财务。钱不能多也不能少,既要准确又要安全,同时还要满足财务和会计税收的要求,甚至IPO上市的审计要求。
第三方面,是支持日常运行所需要用到的管理后台、门店系统、分销系统等信息化系统。
最后,结合公司的增长战略和经营战略,完成产实现公司的价值创造、价值传递和价值获取,最终实现公司的最初的愿景。