不会走出去公众演说的的攻城狮不是好CTO。

本文来源于微信公众号“线性资本”(ID:LinearVenture)

成为一名合格 CTO

我们投过很多技术型的公司,对于什么是合格的 CTO 有过自己的一些思考。最近关于什么是一名合格的 CTO 有些争论,我们以Q&A 的方式分享一些我们的看法。这些看法一方面有时候会影响到我们投不投一家公司,一方面也是从被投公司的历程中总结出来的。

CTO 的定义是什么?

根据其定义,Chief Technology Officer,就是技术方面的最高负责人。和Technology方面相关的问题的争论在 CTO这层就停住了,CTO的回答将是最终回答。No appeal, no further escalation. CTO如果自己无法独立回答该问题,他或者她应该想尽各种办法寻找各种帮助最终做出决断。但回答该技术问题将是他的最终责任。就好像司法上面的最高法院 - 判决将是最终的。即使是错误的,也是最终的。所以一个 CTO 的水平将会最终决定一家公司的技术水平。

但这不代表所有的技术问题都应该是 CTO 来回答。用司法系统再次做个类比,各级法院在其职责和能力范围内尽可能的进行司法实践。同样的,尽可能的将技术问题控制在负责相关实践的技术人员那边,直到争论产生或者技术小组无法独立回答。

上面谈的技术是事方面的责任,硬币的另外一面是人方面的事务。CTO 里面除了Technology之外,另外一个不能忽视的关键词就是 Officer。Officer 是一个 leadership role。一个领导位置。好的领导是一位管理者但多于管理者的角色。他需要打造团队不然没有队伍可以领导,光棍司令要么过劳死,要么拖公司发展后腿;他需要发展(grow),激励(inspire),刺激(motivate),挑战(challenge)队伍,不然队伍无法发展超越自我;他是一个榜样,他需要说一套就做这套,因为技术团队里面的人会以他的言行作为自己行为的一个对标。最好的 leadership 是 lead by exmaple. 他需要去挖掘和培养团队里面的其他有领导潜质的人不然团队没法 scale。我记得从工程师转做 manager 的时候我们 VP 专门找我聊了下,其他都忘了,我记得这一句

『I don't care about your personal success. I care about your team's sucess. As a leader, your job is to make them successful.』

(我不在乎你的个人成功,我在乎的是你的团队成功。作为领导,你的职责是使他们成功。)

一个 CTO需要在必要的时刻站出来保护自己的团队,因为公司的政治在发展过程中会不可避免的出现;与其像某BAT公司那样内部宣布不允许政治,但其实比谁的政治斗争都多,不如坦然的对待,把一些利益纷争放在台面上来讨论。

所以纯粹的只讨论管技术不管人的 CTO 是不合格的。有些公司的选择是到一定情况下,将 CTO 和 VP of Engineering 的角色分开,前者只管技术,后者更多管人和文化,也是一种选择。这个时候的 CTO 里面的 T是重点,而非 O。

CTO 最核心的职责是什么?

保证核心产品能够保质按期发布。

不管是前面提到的技术,还是技术人员的管理,『最终』不是为了建立一个『伟大』的技术架构。最终目标是为了能够发布产品,解决问题,满足客户,占领市场 - 这是一家商业公司的核心所在。CTO 的职责是为核心服务。

重点虽在今天,但也要为未来产品快速迭代和持续发布做好准备。

CTO 到底需不需要coding?

不需要。

但是,早期除外。

早期的时候啥都缺,很多事情都需要 CTO(有时候包括 CEO)亲力亲为。这个时候是不需要讲太多规矩的。没有队员就自己上,没人会,组织人学了上,包括自己。但CTO作为 IC (individual contributor) 应该是暂时的行为。尽可能通过寻找到更加专业的人来做具体业务的编程。不管是前端,后台,数据,全栈等等,刀应该是越磨越锋利。CTO 是操刀的人,不应该是刀本身。

CTO需不需要懂编程?

CTO 必须懂编程,很懂编程。

他应该是个很好的工程师。如果他需要,不应该超过3个月可以重操旧业成为很好的程序员。只有这样他才能和其他工程师有好的沟通,在必要的时刻介入到技术框架讨论中不会鸡同鸭讲,被自己的手下鄙视。

CTO 要不要参与做核心技术的选型?

只有在自己擅长的领域内或者团队没法自己做出有效决策的情况下才介入。

这里涉及一个做核心技术决策时候的原则"let the expert decide"。 如果你就是那个最好的 expert,你来。这个时候你不是以 CTO 的角色,而是以一个领域专家的角色参与讨论。另外一个原则就是尽可能让负责实践的团队来决策。一个施工团队是受一个技术选型决定的影响最大的一方,他们最有动力花时间来深入研究,去做一个将来不会让他们难堪的决定。如果有必要,CTO 可以利用自己在行业里的关系链邀请最合适的外面专家给团队分享案例提供建议,但不要将决定权交给外面的专家。

而当团队陷入一种争论而无法独立做出决断的时候,假如你相信你的队员们,这个时候你可以参与做个仲裁;因为如果胶着的双方都优秀的话,被争论的技术选项不应该存在一种会比另外一些选项明显好很多的情况。Just pick one and move on. 作为 CTO,你要明白争论在什么时候是足够了,什么时候该做个决断了。

CTO 要不要参与代码审查(Code Review)?

首先,不积极推动 Code Review 的 CTO 不是合格 CTO。明显没有全局化视野和对长期效率的深入思考。

有了 Code Review 的机制后,我建议CTO应该经常看看核心部分的代码,以保持对于自己团队代码的熟悉程度。

读代码就像读书一样,时间久了不读书,会失去对文字的感觉。但不一定要全读。核心系统的核心代码,和公司碰上的大 bug 时候,都应该经常看看。前者对于自己公司的最核心的技术实现有个第一手的了解,知道强在哪里;后者可以了解自己的团队通常是磕磕碰碰在什么地方,知道弱在哪里。

CTO是否应该参加核心系统的架构讨论?

应该。

如果一个 CTO 来自己最核心的系统的大体实践都不了解的话,没法在必要的时候介入做最终的技术仲裁;也没法知道需要招什么样的技术人员来发展团队。前者是做事,后者是做人。而事和人都是应该为了系统服务的。系统,当然是为了产品服务。

CTO是否应该参加核心产品的讨论?

应该。

产品需要实现,只有清楚核心产品是什么,才知道需要什么样的核心系统,然后才是什么样的技术和人才。所以CTO参与核心产品的讨论非常重要。

CTO该不该主导工程师文化和制度建设

CTO 的主要职责之一。

CTO 是一个 leadership role。团队小的时候,管理相对容易,大家主要就事论事即可。团队大了,不管你愿不愿意,会逐渐分层,你需要逐渐的去发展中层干部,也要逐渐思考文化建设。所谓文化建设,就是一个形成共识的过程。这种共识是关于什么样做事做人的风格是被鼓励。文化无关对错,文化是一种选择。

很多创始团队的早期CTO 如果没法随着公司的成长而成长起来,还是天天陷入到某块具体代码的局部战争中去,动辄就介入具体的执行,一不放心就自己啥都管管,不懂得delegate,要不就是放手就完全不管,不懂得validate。师长做了排长的工作。

如果一家公司的 CTO 只想管事,不想管人。要么加一个 VP of Engineering分管人,要么把 CTO 的位置让出来给到更合适的人选。

CTO应不应该经常走出去和外界交流?

虽然并非必须,但这是区别于一个合格 CTO 到卓越 CTO 的重要的点。

走出去,一方面可以将自己公司在技术这块的事和人方面的问题暴露出去。达到高水平的前提是你和高水平之间是联通的,这样两个水面才有机会平起来。除非你很自负的认为自己就是比剩下的世界要牛很多。另外一方面,可以将自己公司取得的一些成就展现出去,自己公司的文化特点展现出去,能够更好的吸引牛人进来。前面提到CTO 一个重要的角色就是要打造团队。团队的前提是牛人;吸引牛人的前提是别人要知道你。CTO 不走出去和业内多交流,指望猎头找来牛人多半是不靠谱的。

但要区别有效交流和饭饭之交。前者是需要扎实的去分享,去给社区做贡献,花钱花精力把牛人请进来做分享,大家做深度的无保留的探讨。后者主要是饭局交流,泛泛之交,并没有讨论到具体带人处事的实例的交流。后者虽有些价值,我们作为投资人干干可以,对于CTO 意义不大。

在这一点上,可以借鉴下这篇文章(注:http://www.svpg.com/what-makes-a-great-cto/)关于 CTO 的Evangelism(布道)上的角色

The CTO will serve as the company spokesperson for the product development/technology organization, demonstrating leadership in the community, with developers, partners and customers. This is often measured by establishing a university relations/recruitment program, and sponsoring or participating in at least two events per year in the developer community.

CTO 应该和什么人做经常性的1 on 1?

常规性的1 on 1 应该包括CEO + VP of Product + direct reports + 核心产品的技术负责人 + 架构师。另外对于即将从工程师转到管理岗位,Manager升到 Director 等的人员,应该在考察期间交流一到两次。

以上只是我们的一家之言。成功的 CTO 也许和成功的 CEO 一样,可以出身迥异,风格不同,但最终到底,一定是围绕 Technology 将 Chief Officer 的角色扮演好。

如何成为一名合格的CTO?(转)的更多相关文章

  1. 如何成为一名合格甚至优秀的个人草根站长(转载自ChinaZ)

    这章本来不想写来的,后来琢磨琢磨还是废话一下吧.主要是想说下现在草根站长的状态和如何成为一名合格的甚至优秀的草站站长. 伟大的草根站长们,在某些媒体的超级忽悠下全来到网络上淘金来了,有在校的大学生,有 ...

  2. 一名合格QA的基本素养

    测试不是无脑的重复劳动.测试与开发一样,先用脑,再动手. 拒绝搬砖,关注技术: 把握需求,极致体验: 把控进度,高效沟通:   测试技术 如果你只会加班,行万里路,也只是个邮差 将程序测"好 ...

  3. 如何成为一名合格的Android工程师?

    首先需要申明的是,我并不是一名合格的Android工程师,无论从开发经验或者是技术水平上来说,我都没有资质承担以为Android工程师的责任,但是我把它作为一个目标,也一如既往的努力着.如果我的论点有 ...

  4. 我眼中的如何成为一名合格的PHP高级开发工程师

    转眼间搞PHP已超过10年准确的说12年,混在帝都,也经历过大公司小公司,有个同行朋友问我,我就思考下,如何成为一名合格的PHP高级开发 所有的所有仅限综合知识,因为PHP其实内容也很多,有的人专门研 ...

  5. 如何成长为一名合格的web前端开发工程师呢?

    前端开发工程师不仅仅要掌握一些基础的美工设计等还要懂得网页设计类的HTML JavaScript和css,这三种能力缺一不可,虽不要求你特别的精通,但至少要熟练的掌握,能够运用自己所了解的这些技术和知 ...

  6. 2018年一名合格的web前端程序员应该会哪些技术

    有朋友让小编说一说web前端在未来几年的发展趋向,对于这个问题,恕小编无能为力,web前端技术日新月异,更新非常快,谁也不能预料未来会发生些什么 小编也只能说在2018年,react native和j ...

  7. 如何成为一名合格的Apache项目Committer,参与Apache开源贡献的正确姿势

    近日,孙金城老师在 "Open Source Promotion Plan - Summer 2020" 开源软件供应链点亮计划做了<如何成为一名合格的Apache项目Com ...

  8. 如何成为一名优秀的CTO(首席技术官)

    最近我发现很多开发人员都表示不知道如何规划职业生涯的下一个步骤.基于我们目前所处的科技泡沫现象,很多工程师都倾向于留在大型的成熟公司,或者要么a)去初创企业工作要么b)自己搞初创公司. 回顾我自己的职 ...

  9. 成为一名合格的ERP实施顾问应该具备哪些修为

    要想成为一个合格ERP实施顾问,究竟需要点什么素质.请注意,这里的素质与技能是两码事,素质特别强调的是某种修养,技能可以速成,修养必须积累沉淀. 快速切入客户业务的能力 作为一个合格的ERP实施人员, ...

随机推荐

  1. react 全局公共组件-----动态弹窗 (dialog)

    react 的时候,总是会用到弹窗,并且各种各样的,一般来说,组件层级嵌套之后,就会出现 z-index层级覆盖的问题 这个时候,就需要一个公共的弹出层,然后我们将需要展示的组件,放到弹出层里面 下面 ...

  2. CentOS7安装Jdk1.8

    一.前期准备 a) 首先从官网上下载Jdk 8 for Linux x64到window下. b) 我这边用的最小安装,所以没有安装centos自带的openjdk,如果你安装时,不是最小安装的话,可 ...

  3. HTop依赖包

    htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令. 1.安装HTop时需要先安装依赖包:rpmforge-release-0.5.3-1.el6.rf.x86 ...

  4. Cocos Creator 计时器的延时循环试用方法

    *****计时器的一些运用***** //计算1次的计时器,2秒后执行 this.scheduleOnce(function(){ this.doSomething(); },2); //每隔5秒执行 ...

  5. Oracle 10g使用amdu抽取数据文件

    环境:OEL 5.7 + Oracle 10.2.0.5 RAC 需求:实验在Oracle 10g环境使用amdu抽取数据库文件 本文主要目的是介绍3个知识点: 1.使amdu可以在oracle 10 ...

  6. sitecore系统教程之默认收集数据库MongoDB注意事项

    MongoDB是一个高度可扩展的基于文档的NoSQL数据库解决方案,Sitecore体验数据库(xDB)用于收集数据库.在安装MongoDB之前,您应该考虑以下事项: 确定您是需要基于公共云的解决方案 ...

  7. Explorer Bo (思维 + 树链剖分)

    题意:求用最少的链覆盖所有的边用最少的总链长度. 思路:为了使得使用的链最少,我们可以知道使用的数量应该是(子叶 + 1)/ 2. 画图可知:当节点下的边数是偶数时,为了将该父节点上的边给连接上,所以 ...

  8. JsonPath:从多层嵌套Json中解析所需要的值

    问题 应用中,常常要从嵌套的JSON串中解析出所需要的数据.通常的做法是,先将JSON转换成Map, 然后一层层地判空和解析.可使用 JsonPath 来解决这个问题. 给定一个 JSON 串如下所示 ...

  9. 什么是UTF-8

    1)开篇啰嗦 感谢这篇博客,在网上转悠了好几天,觉得下面这篇博客我读起来最最容易理解 https://blog.csdn.net/guxiaonuan/article/details/78678043 ...

  10. Hadoop常用命令总结

    一.前述 分享一篇hadoop的常用命令的总结,将常用的Hadoop命令总结如下. 二.具体 1.启动hadoop所有进程start-all.sh等价于start-dfs.sh + start-yar ...