CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用。但随着公司的不断发展,CTO 的工作重心也会不断变化。只有在正确的阶段做正确的事,才能更好地为公司做出贡献。
本文作者:陈睿 优知学院创始人,10年+产品技术经验,前百度研发经理,携程定制旅游CTO,曾先后就职于淘宝、百度、携程,负责产品&技术团队。
创业公司成长的四个阶段
首先,需要非常清晰的认知一家创业公司的发展周期,一般每一个阶段都需要2-3年的发展,根据你加入的创业公司的阶段,来调整你的工作核心,这一点是非常关键的。
创业公司的生命周期会经历四个阶段:起步期、发展期、扩张期和成熟期。
0 :创始起步阶段
企业在这个阶段的核心工作是找方向,大概需要两到三年的时间。每一个创业公司起步时都知道大方向,但是成功需要的是精确的方向。实践中,需要通过不断试错才能找到那个精准的方向,而这个方向需要产品来承载。
在这个阶段,一个好的CTO对于创业公司是至关重要的,对于很多以产品技术为核心的创业公司,好的CTO可以为公司缩短试错周期,以及极大的为公司节约产品研发成本。
这个阶段的核心:任务聚焦到找方向上,打磨产品阶段(下文我会讲到这个阶段CTO的核心工作)
1 :发展期:有产品,运营推广阶段
企业在起步期找到了精准的方向之后,开始进入发展期,这个阶段需要去获取一个显著的市场份额,并把收入和利润实现。
2 :扩张期:快速扩张期
3 :成熟期:稳步发展阶段
大部分的创业公司都在0和1这两阶段,我今天主要讲从0开始的创始阶段,CTO对应的核心职责和方法步骤。
第一步:配合CEO 聚焦产品和业务
1.聚焦产品:梳理出核心产品雏形
这个阶段,很多创业公司的CEO有的只是一个初步的想法和初步的商业模式,具体的产品是什么样,服务的核心用户群是哪些,还不是特别清晰,这个阶段可以与CEO讨论后,先用脑图把核心业务的用户群,模块,产品功能初步的梳理出来,也可以画出产品的初步第一个雏形原型图。
通过脑图以及PPT的方式,可以更加直观与CEO再讨论(节约大量的沟通成本),在初期产品可以根据这个方向来细化形成产品文档,技术也可以根据这个方向来调研需要的技术。
对于即将远航出行的团队,这个产品方向和产品雏形犹如航海中的灯塔,重要性不言而喻。
2.做好用户调研
根据与CEO初步讨论的产品形态,可以尽早的开始做用户调研,尝试理解核心用户群的需求在哪里,提前调研用户需求。
调研的目的是为了挖掘核心用户群的最基本诉求,结合用户调研的反馈,再次打磨产品的初步雏形。
有了这个初步产品雏形,再与CEO讨论,这样会非常高效,也显示出你的专业和高效。
第二步:确定产品后,开始技术选型
根据产品的形态来调整技术的选型,移动产品(ios/android)、小程序、PC产品、AI产品、等来调整。
正常的产品形态,一般会涉及到如下几点的技术架构选型:
1 开发语言选择
首先,第一优先考虑业务场景。
比如对于业务型项目,采用 Java 或 PHP、Python 这种普适性语言,对于纯高并发的服务端项目考虑 Go 等。
其次,需要考虑学习的成本,找人的成本。
比如:用C++来写一个后台管理系统,你确定能很低成本找到会这技能的同学吗?但是假如你采用了php这开发方案,外头随便一抓都是php,找人根本不愁(注意:我并没有对php有偏见)。
任何开发语言,从技术本质上都可以完成任务,只是时间成本问题。如果你说一定要用一个新技术可以很轻易实现功能,但是学习使用这种技术就需要几个月,等你团队成员学习完成,项目早就过了产品试错的最佳时期。
总之,技术的目的是实现产品,在创业早期阶段,除了考虑业务场景,找人、学习成本等成本外,本质就是快速试错,实现不需要过于高大上,有效实用为佳。
2 开发框架
确定了语言之后,围绕语言我们要确定开发框架。一般而言就是前端的 JS 、CSS 框架、后端的 MVC 、SOA 、ORM 框架的选型。优先考虑使用成熟以及被验证过的开源框架,除非你到了淘宝的这样的用户访问量,或许才会考虑到定制开发框架和定制的中间件开发。
3 部署服务
服务器的部署模式,持续集成方案,是否集群分布式部署形态等。
对应的服务器采集,是通过自行购入服务器,还是采用类似阿里云这样的服务商,按量所需进行采购,这里可以结合财务预算来考虑。
4 架构方案
最基本的技术架构方案,还是需要尽早确定下来,比如:
基础架构:哪些环节做高可用,涉及到哪些中间件选型,存储是什么,容量评估……
业务架构:核心系统,子系统,对内还是对外,怎么相互支持……
应用架构:层怎么分,逻辑层还是物理层,模块或服务怎么分,模块和模块之间怎么通讯,同步还是异步……
工程化:我们是需要考虑可持续、可迭代的,一个良好的工程结构和工程方式也是初期需要确定的。比如,确定项目结构、源码管理方式、分支管理方式等等。
这里我就不一一说明了,之后写文补充。
第三步:做好预算和团队打造
1 通过产品雏形,确立早期的产品技术团队
评估项目第一版在规定时间内上线需要多少人的技术团队,是否需要分产品线,规划出不同岗位的人数。
比如,项目经理 1 人、前端 2 人、架构师 1人、后端 5 人、客户端 2 人、UI 设计 2 人、产品经理 2 人、测试 3 人、运维 1人等。
再根据技术团队的规模预估人员成本,以及做服务器、软硬件的预算,把这些预算和整个公司的预算放到一起评估,看是否可行。
如果预算评估可行,才开始全面人员招聘(这条很重要)。
2.确立产品开发模式
比如:创业早期团队可以考虑敏捷开发的模式,对应的产品技术人员,是否可以考虑敏捷的每天站会,控制开发节奏,上线后的迭代版本周期等。
3.招聘以及人员筛选
由于这是创业早期阶段,对人员的需求与发展期和成熟期,对人员的需求会不太一样,这里需要很清楚。
这里还会涉及到面试的很多技巧,以及如何通过面试沟通的方式识人,识人其实有很多沟通技巧,重点是CTO在这个阶段很清楚知道需要什么样的人最合适。
第四步:初步的产品上线时间表
在创业型公司,CEO最关心的事情就是产品什么时候能上线。
对于上线时间表,建议可以采用xmind脑图的方式,对产品按照业务模块的方式,进行任务拆解,从UI到前段、后端,测试,初步进行一个任务估算。
对于有经验的产品技术人员来讲,根据产品的形态以及人员的组成数量,初步是可以估算出一个大致的上线时间表。
创业公司从0这个阶段,快速推出产品试错是王道,这比不了成熟型公司,估算出初创的上线时间表还是蛮重要的,具体的上线时间可加入部分容错时间。
第五步:配合运营团队做好上线反馈
这里会涉及到初步的产品数据,日志记录,关键数据采集等。
产品的上线后的数据采集,产品测试。
以上就是大致的从0开始的创业公司CTO需要做好的五部曲,合格的CTO,能在第二步-第五步做的还不错,但往往反而会卡在第一步,这就是我说的真正的CTO,是一个懂产品的技术人,原因所在。