技术人的进阶

技术人员的几重门

“邓宁-克鲁格效应”告诉我们求知这条路是很难的。一知半解的时候你根本不知道自己不知道,还以为已经很懂了。你必须先经历一次自信心的低谷,才有可能走上真正的求学之路。有人把这条路总结成一条曲线 ——

研发工程师

高级程序员

如果你是一个刚刚创业的公司,公司没有专职产品经理和项目经理,你就是公司的产品经理,你如果对你现在的开发员能力不满,那么你只需要的是一个高级程序员。

你定义功能、你做计划推进和管理,他可以带 1-2 个副手把你规划的功能实现了,他是主力干活者,有技术难题也是他来亲自攻克解决。

所以,一个高级程序员,他的职责很清晰:

1、负责核心复杂功能的实现方案设计、编码实现

2、负责疑难 BUG 分析诊断、攻关解决

团队协调者

公司再长大些。如果你就有一个研发团队(含产品/开发/测试),你就一套主产品,而且你的研发团队小于 15 人,那么你需要的就是一个研发 Leader。

因为你已经有了 1-2 个高级程序员,核心难题攻克和核心功能研发进度与质量保证,已经可以靠他们自身能力解决掉了。那么你需要研发 Leader 干什么。

研发 Leader 的职责是:

1、团队任务管理:开发工作量评估、开发任务分配

2、团队生产质量提升:代码审核、开发风险识别/报告/协调解决

3、团队生产力提升:代码模板研发与推广、最佳实践规范总结与推广、自动化研发生产工具研发与推广

4、团队专业力提升:招聘面试、新人指导、领导复盘总结改进

技术总监

如果你的研发团队超过 20 人了,而且有多套主打产品线了,你可能已经有了多个研发 Leader 了,那么你需要一个技术总监。

技术总监的职责:

1、组建平台研发部,搭建公共技术平台,方便上面各条产品线开发。

2、通过技术平台、通过高一层的职权,管理和协调各个产品线组。现在每个产品线都应该有合格的研发 Leader 和高级程序员了。

核心架构师

因为你已经有了技术总监了,所以技术平台不错了。技术平台和各条产品线的协调互动,也是技术总监管着。

因为你已经有了各个产品线的高级程序员,他们在靠个人能力维持着核心功能模块的开发进度和代码质量。

因为你已经有了研发 Leader,所以代码模板研发与推广、最佳实践规范总结与推广,这些事都已经在日常按份内职责开展了。

那么,啥时候需要首席架构师啊。

也就是说,需要分离管理族和专业族了。你会发现,这个阶段你的研发团队已经超过 100 来人了,需要有人专注来做架构规划、设计、日常维护。不能让研发总监和研发 Leader 又做管理又做技术一股脑都扔给他们,你就等着总结果产出。这是不对的。

需要从技术总监和研发 Leader 身上剥离职责了。让技术总监和研发 Leader 偏项目管理(管理族),把各个模块之间的架构设计工作,独立出一个岗位,就是架构师,来负责。

每个产品线都有架构师,在技术平台部门也有技术平台的架构师。那么,技术平台和业务产品线的架构互动,就是首席架构师在衔接了。让技术平台架构能够和产品业务系统的架构互相促进和支撑,就是首席架构师的份内之事。

架构师的职责是:

1、架构分析:从功能性需求中识别出需要增加的非功能性需求,好满足性能、可扩展、解耦/集成、安全、可运维、高可用、易部署、易更新。并且识别完非功能型需求,还要做技术选型、技术架构风险识别、技术实现工作量评估

2、架构设计与实现:非功能性模块的架构设计、接口设计、代码实现。所以需要的是有代码实现能力还要有架构思维的工程师,不需要画 PPT 的工程师

3、业务架构设计与实现:需要对跨系统的接口进行识别、实现、维护,需要对能写成公共代码类库的进行分析、识别、接口设计、实现、变更维护。

4、重构:架构师需要经常做 Bug 分析、非模板性和公共类库代码检查,以发现代码腐烂程度,以发现还有哪些代码没有做很好的架构与精心的代码设计。所以重构是经常性维护发生的,不是攒到某一刻动大手术,甚至推翻重做,那就不叫重构了。

CTO

你把架构师团队组织建立完成,再往大长,你才需要真正意义上的 CTO 了。否则你一开始就招真正的 CTO,他也不满意,你的期望也不对。现在你的期望也对了,他的能力模型也正好和你的期望职能匹配了,你能给他的和他想要的也正好匹配了。

有的公司有软件系统产品副总裁,也有软件系统技术副总裁,而且把软件系统技术副总裁叫 CTO,软件系统产品副总裁叫产品 VP。这就很怪异。

真正的 CTO,是软件产品和技术是统一管理的。

他做的事情,是商业、产品、技术、管理、团队相平衡的综合统管。

CTO 的职责:

1、业绩达成:洞察客户需求,捕捉商业机会,规划技术产品,通过技术产品领导业务增长,有清晰的战略规划、主攻方向,带领团队实现组织目标

2、前沿与平台:到这个研发规模规模级别了,一定要有专门的团队做技术应用创新探索和前沿技术预研。而且要和技术平台团队、应用研发团队形成很好的联动作用,让创新原型试点能够很平滑的融入商业平台再让应用研发线规模化的使用起来。大量的前沿探索都死在了内部,做完试点就停滞了,这就需要 CTO 做好整体的衔接推动工作。

3、研发过程管理:站在全局立场来端到端改进业务流程,为业务增长提供方便

4、组织与人才建设:公司文化和价值观的传承;研发专业族团队梯队建制建设、研发管理族团队梯队建制建设;创建创新激发机制,激发研发人创新向前发展,激发黑马人脱颖而出

一、技术视野良好,架构设计能力出色

CTO 要有良好的技术视野,不需要各种技术都样样精通,但是必须要所有涉猎,有所了解,对各种技术领域的发展趋势,主流非主流技术的应用场景要非常了解。知道在什么场景应用什么技术,公司业务发展到什么规模应该预先做哪些技术储备。产品架构的设计要有足够的弹性,既能够保证当前开发的高效率,又能够对未来产品架构的演进留出扩展的余地。

二、动手能力要强,学习能力出色

CTO 并不需要自己亲自动手写代码,但是如有必要,自己可以随时动手参与第一线的编码工作,CTO 不能长期远离一线工作,自废武功,纸上谈兵。否则长此以往,会对技术的判断产生严重的失误。另外,CTO 也应该是一个学习能力非常出色的人,毕竟 IT 行业的技术更新换代速度非常快,如果没有快速学习能力,是没有资格做好 CTO 的。

三、管理研发团队过硬,能建立团队研发文化

CTO 的责任是负责整个公司的产品实现,所以 CTO 要善于管理研发团队,掌控好研发工作进度,能够在规划好的时间内,步步为营,好整以暇地完成公司产品的研发工作。

此外 CTO 还要擅长培养研发梯队力量,建立研发团队内部具有向心力的,开放性的,交流学习型组织文化。让研发团队具备自我学习能力,自我培养能力,自我建设能力。这样的研发团队工作极度默契,战斗力极强,而且员工归属感很强,流失率很低。

四、具备良好的产品意识,以及跨部门跨背景的沟通能力

CTO 不仅要懂技术,还要对互联网产品有良好的感觉,从产品的逻辑性,可实现角度提出产品改进和完善的总体性设想。因为产品经理或者业务人员设想的产品,很可能是逻辑上不严密,存在实现矛盾的。

此外 CTO 还需要极强的沟通能力,要能够和不同背景的人有良好的沟通能力,能够用对方的思维方式和话语体系来描述他不理解的专业问题。

五、敢于对 CEO 说“不”

只要不是技术出身的 CEO,必然对研发是门外汉,很可能对产品也是门外汉。因此,CEO 不是每个想法都靠谱的,CTO 有责任站在更加专业的角度去帮助 CEO 纠正,推演,完善想法。一个不敢对 CEO 说不的 CTO,这个公司肯定要走很长很长的弯路的。

下一页