也许CTO并不是终点——没有净土
开篇
不想做将军的士兵不是好士兵,这句话可以有很功利的理解方式,对应到我们自己很可能是:不想做CTO的程序员不是好程序员!几年前对这句话的理解与现在有很多不同,因为我现在已经是一名中小型公司的CTO了,这句话真实的理解方式其实应该是:我们每个程序员要有远大的梦想(理想),这个涉及到我们的格局,只有格局足够高了才能走的更远,如韩信受胯下之辱而不怒为例就是,后面受委屈的时间多着呢,忍得住才能走的更远,看得到远方也就不会为如今的愁苦困扰了,所以来个佛系三连:随便吧,就这样,也可以。
一般来说,中小型公司(好的创业团队),研发人员基本为50-100人的配置,原则上不会让CTO统管产品、UI、运营等,如果你看见一个公司CTO会统管以上一切,很有可能他是产品出生、市场出生、运营出生、销售畜生,但就不会是技术出生,这个角色真正的称呼是COO。我这边团队大概在80人左右,也会有自己的产品,但是公司级业务都是统一的产品团队在握到手里,有时候老板是最大的产品经理,有时候市场是,更多的时候还是产品自己是,各个部门都有一个太极阴阳平衡在里面,如果这种平衡失衡的话,公司一般来说是走不远的,这里后面有章节会介绍到,这里不赘述。
这个是CTO并不是终点系列,大家已经可以猜到,其实后面更多的是自己工作中的一些吐槽,或者说一些经验。人嘛,都需要一个发泄总结的平台于是便拿起了我这个尘封已久的账号,发点心得体会,反正没人知道我是谁,是否被喷,得失荣辱也就不重要了,下面逐一讨论,先来聊聊中小公司的CTO大概是些什么人吧。
大公司的骨干
一般来说,中小型公司的CTO,水平相当于阿里的P8左右,技术扎实,在某一个领域有自己的一块自留田,但这并不能说一个P7就一定能做CTO,有时候中小公司的CTO去阿里也到不了P8。大公司出来的工程师,以P7为例,进入一个团队,如果那个团队不是太差,一般来说招这样的人至少目标是让他做leader的,但稍微有点经验的负责人会让他做架构师观察一阵子,还真不是所有技术好的都能做leader,有时候能力越大,造成的伤害越大。因为每个人都有自己专精的一块领域,走出来其他的就恼火了,比如我是后端出生,对前端还有所了解,但是一旦涉及到了Native、Hybrid等就要开始头大,而前端又变得死快死快的,今天一个Vue,明天一个React,完了多平台产品Weex或者微信小程序平台各种爆炸,如果没有一个好的前端架构师(leader),根本扛不住;另一方面,前端出生的负责人,又会在后端程序拆分、业务梳理陷入困境,所以必须要一个相辅相成的人出现,才能弥补团队的不足。当然,我也认识一些大神,属于全通的类型,但是这些大神可能舞台就不是中小型公司了。
一旦成为leader后,因为本来在自己领域其实就没有太多的窒碍了,你会越发的发现,为什么前端能做的是这么少?为什么服务器那么多问题不能解决?为什么Native能做的事情这么少?好一点的leader,在这个时候之前大公司的大格局、工程化、服务化等等思想就会燃起来了,如果本身执行力以及资源协调能力足够强的话,便会推动着整个研发团队往前走。这里必须强调的是强执行力以及落地能力,因为你如果出生前端那么这一波刷完,团队尝到甜头后,一定是前端团队会占据研发部门的主导地位,后端团队亦然。这里就非常体现两个方面的能力:
1、跨部门协调能力、跨部门资源统合能力
2、大局观,要懂得让利,要懂得分账,要懂的互相成就,特别是成就他人
要做到这一切,需要你本身就很强(这里的积极性、态度什么的仅仅是个基础罢了),更重要的是,需要你口碑很好,至少人家要认可你,如果得不到其他团队的支持,一般来说什么事情都做不成的。
好了,经过一轮刷存在感,并且真真实实的贡献,那么可以恭喜你了,中小团队没有那么多人才,也可以说,刚刚进入团队你就会发现身边的人单个看起来都还不错,但是合到一起为什么就是那么平庸,在这些平庸当中,你就说卓尔不群的,正常的情况下,该升职了,运气好就会成为总监之类的职位,后面持续努力的话,早晚成为实际的研发负责人,也就是CTO了。
这里也有小伙伴说,一个萝卜一个坑,之前的CTO不走,你凭什么上位,其实真实的情况是,你的公司如果发展的不错,会有很多不错的子公司逐渐出现,而你从员工(架构师)到leader、从leader到中层干部(总监),正常速度都得一年半以上时间,而且这里请各位小白注意,这里是P7(最少优秀P6)的情况下,都得在公司打拼一年多的时间才能到中层,你在总监职位后信息量会有极大的不同,而且可以接触到最高管理层CEO的机会会大幅度增加,而你能做到中层必定本身实力不会太有问题,那么这种口碑便是你之后做CTO的关键了,还是那句话,你上位得多数人服气,就算是不喜欢你的人,都得服气。关于空降等话题,我们在后面继续展开,本篇不讨论。
讨厌的人事物开始出现
经过一连串的血拼,你杀出重围,做上了心爱的CTO职位,本以为可以高高兴兴庆祝登顶,但不好意思,你往往会发现:你所认为的结局可能只是一个开始。
CTO难做,初期尤其难做,这种难做不仅是事情难做,更多的时候是心理难受,那真的是很难受啊!
当我们做前后端或者Native开发的时候,往往只会关注自己这层,做前端的最多吐槽下后端接口傻逼,有点推动精神的就会想要去优化这一切;当我们做有理想的leader的时候便会更多的帮助其他团队、而当我们做总监的时候,我们会发现,尼玛为什么其他部门那么蠢???
有些时候真的想用蠢来形容,跳出了研发的圈子,产品、UI、运营等部门会越来越多的接触,于是不省心的事情会接连发现,而每个公司每个部门绝对会有同一种情况:
为什么公司会有那个毒瘤?
对的,你没有看错,每个公司乃至每个团队都一定会有几个毒瘤,这里毒瘤一定会有一些共同的特点:
1、强势,在工作上除非他需要求你,否则不会给你留面子,有时候他要求你也不会给你留名字,说话很生硬;
2、小公主(绝不只是女人,有时候甚至是老板),睚眦必究,需要你哄着我,你不哄着我我就给你穿小鞋;
3、纯傻逼+马屁精(HR居多),不做评论
之前有人用了一张图表示彼此之间的关系:
在中小公司来说,CTO眼中的真实想法可能不是这样的,会有所不同:
你会发现,你可能不被所有部门喜欢,同时你也不喜欢所有部门的负责人,正常情况下,各个部门的负责人都是严格筛选上来的,这些人都是人精,而这些人中有两种人最让人讨厌:
1、强势的人(一般来说,强势的人自带小公主光环),虽然被所有的人不喜欢,但没人想惹。
2、老板最喜欢的马屁精,没人敢惹。
所以呢,出了研发的圈子,你就需要跟所有的以上打交道,而且这些人普遍是不认可你而你也不认可的人,你的资源统筹能力或者强执行落地能力一出了自己团队变得毫无意义,这里的两个主要原因是:
1、目标不统一,你的目标不是我的目标,我为什么要成就你。
2、主导性,这个事情可以做,但是需要我来主导。
目标问题,需要CEO做很多工作都未必能达成一致,主导权这个东西更是谁都想摸一下,一般来说,我们总会高估自己,至少是局部高估。而部门负责人一定都是各种信息量很大的人,知道各个部门的一些问题,这个时候一些想做事的部门负责人往往会陷入,信息量与能力不对等,知道的太多,能做的太少,就会陷入极度忧虑。
里面特别是胡乱强势+小公主组合,会极大的破坏部门之间的正常交流,导致业务停滞不前,这种消磨与内耗便是痛苦的根源,你要做事还需要去讨好各种小公主才能继续做事,那么便是真正受挫的开始,这个时候就要时刻念叨韩信韩信韩信,期待能解决问题了。
更让人受挫的是,我们总会以为这个人情商低,哪个人蠢,有时候也在念叨,如此之人怎么可能成为这个职位的负责人,但是不要惊喜,不要意外,公司就是会存在这种人,各个职位都会出现,总有这样那样的契机让这种人出现在那个关键的职位,就算现在不出现,以后也一定会出现,当你在抱怨的时候,可能其他人正在抱怨你。
你觉得你是CTO,是研发的负责人,在其他人看来,你不过是研发的负责人罢了,而职位越高,性格所带来的缺陷会越大,这种破坏力也就越大,整个这一切是无解的,想要走的更远,就必须接受你自己可能是个傻逼,你需要跟各种小公主共事的事实,所以,与君共勉吧。
流程体系的重要性
创业之初,团队就10个人不到的时候,团队里面只有一个傻逼,而大家也愿意去迁就他,因为他是团队里面最累的人,也是团队压力最大的人,这个他就是我们所说的CEO了,小而美的团队总是存在的,我们有时候为了构造一个简单高效的流程体系,需要几波人不停的迭代,一到三年的打磨才能成型,这里举一个离职评价技术leader型人才是:
1、技术很好,并且能带动团队的人
2、能帮助团队行程技术体系的人
3、能帮助公司行程流程体系的人
第三个层次的人才是最高的,但往往是最容易被误解为无能的人,因为技术很好,带动团队1、2个月就能见效;保住团队建立技术体系需要稍微慢点,一年半载也会初步成型;但是建立流程体系这个事情,耗时费力,需要各个团队(研发、产品、UI、运营、市场)等等参与,参与的人多了,就需要所有的人都达成基本一致,不论你用什么手段,而这个过程至少得一年以上,有些团队形成这个体系花了三年的时间。
这个美好的流程体系是维持我们工作净土的有力保证之一,这个体系建立难,破坏却非常容易,只需要:
1、一两个总是跳出规范的人
2、空降下来新人挑战体系,这个时候知道体系重要的人会极力的维护体系,却往往会被认为是在阻碍进步(优化体系和无视体系是两个情况)
3、建立体系的人心灰意冷而离职,可能带来团队小范围崩塌
生态体系是维持不同生命平衡的关键,而这个体系很多时候是很脆弱的,就如外来物种入侵一般,外来物种会打破生态平衡,我们常常说他破坏生态体系,事实上他破坏的是原有生态体系,而会建立新的生态体系,只不过这个生态体系因为自己的肆意妄为,很多时候会让原有的净地变得死气沉沉。
心中的净土
程序员多数情况还是比较纯洁理想的生物,希望能把一个产品做好,希望能推动团队往前跑,而当成为技术负责人后,就会慢慢接受到各种绝望,这里所带来的打击可能是理念上的冲击。
特别是大公司里面的程序员,往往是处于一个完善的流程体系之中,而因为体系将他们保护的很好,就算是遇到特别令人讨厌的产品或者UI都可以得到保护,在大公司的岁月,经常会发生程序喷产品的情况,虽然最后很多在大家看来傻逼一样的需求还是会上线,但是至少程序员是有一些选择的,而这个在很多创业团队中是比较奢侈的了。
因为在大公司里面傻逼的产品经理,因为不用花时间学习算法、学习性能优化,他们在各种产品细节或者扯淡本事上绝逼比90%以上程序员能扯,偶尔会有一些祸害会进入了中小型公司后,那么不好意思,这个公司的噩梦可能需要开始了。
这个产品会各种喷程序,各种说自己之前合作的程序多么多么好,然后会出各种傻逼需求,因为一般来说,中小型公司其实是非常欠缺具有架构能力的产品的,实话实说,这种产品还真只有大公司出的多,老板对这种产品架构师的辨别能力有限(事实上能找到好的技术架构师也是运气),于是可能会将一些扯犊子的产品搞进来做产品负责人,那么不好意思,地狱来临,而这个地狱持续的时间可能是怨声载道,程序员忍无可忍的半年,也可能是半年一年后,CEO想处理点什么,但是由于什么公司非常重要的节点而搁置,总而言之,遇到这个情况的公司技术心中的净土算是完蛋了。
没有净土
前面已经说了,小而美的团队,简单高效的流程不是不存在,但是这个是很容易被打破的,恐怕,研发心中期望的净土是永远不存在的,对,那是永远不存在的!
我这里体会过很多相关的情形,有时候忍耐着与一些非常讨厌的人合作,有些委屈自己能吃,团队的leader也能吃,但是一旦到了自己的核心员工被一些傻逼莫名其妙的欺负的时候,这个时候便有些不能忍了,但是你的不能忍是对现状没有任何正面的影响的,因为,这个是很多中小型公司的通病:
研发团队是个成本部门,并没有自己的产品,也不带流水!
因为这个根本原来,所以CTO在一个公司除非非常懂业务,有资深的行业知识,能很有话语权,能手握一块业务,但是这往往是不可能的,因为CTO多数时间去写代码了,行业知识这种枯燥的东西他们怎么可能太了解呢?
谁了解的多,谁对细节有掌握,谁就对那件事情有话语权,然而我们都知道自己原则上不会在这个公司待太多的时间,所以丢掉技术无异于自绝后路,而事实上我们这类人写代码其实对团队带来的帮助,微乎其微,于是技术负责人就会陷入一种死循环,有些有自觉的负责人甚至会开始自责,因为,就是因为自己的不给力,就是因为自己团队做的不够好,才导致了团队在公司中话语权不够。
可能有些朋友觉得我在这里耸人听闻,哎,其实你们看到哪个公司的CTO真的在公司中有决定性的话语权呢?哪个技术负责人又是真正的公司决策层的核心?在这个资本运作的市场中,做为一个CTO,你了解公司资本的走向吗,你了解为什么要收购一个公司吗,你看得懂财务报表吗?是的,这些都是非本专业的,我们除了技术,其实对其他方面一无所知,而高管会议时,你说的性能优化、模块重用、效率提升到底几人关注呢?恐怕很多同事连研发和IT都分不清吧,这个才是我们这群技术人该认清的情况。
当然,话不可绝对,这个也许只是我们这里是这样,也许只是我认识的几个CTO们是这样,也希望有更好的存在,也希望有心中的净土存在......
打造流程体系
这个因为这个情况,所以研发团队需要打造流程体系,规范各个部门,其实没有哪个行业就是让人省心的,你的生活中也总有让人不满意的地方,我们更多的时候需要学习着去改变这一切,试着寻找志同道合的人,一起去改变这一切,虽然有可能改着改着又完了,但是人生不正是这样的吗,钱难挣,屎难吃,难吃还是得吃
也许CTO并不是终点——没有净土的更多相关文章
- 【也许CTO并不是终点开篇】CTO也只不过是CTO罢了
不想做将军的士兵不是好士兵,这句话可以有很功利的理解方式,对应到我们自己很可能是:不想做CTO的程序员不是好程序员!几年前对这句话的理解与现在有很多不同,因为我现在已经是一名中小型公司的CTO了,这句 ...
- PAT甲级题分类汇编——图
本文为PAT甲级分类汇编系列文章. 图,就是层序遍历和Dijkstra这一套,#include<queue> 是必须的. 题号 标题 分数 大意 时间 1072 Gas Station 3 ...
- 从Google工程师到创业CTO,他的8项理念也许可以帮到你
Lan Langworth是前Google软件工程师.O'Reily作者,现在他是Artillery的co-founder/CTO,致力于把游戏机质量的游戏带进网页浏览器.下文是他从Google离职到 ...
- CTO对话:云端融合下的移动技术创新
云端融合真的来了?快听CTO们怎么讲云端融合下,技术创新怎么破? 快听CTO箴言 云喊了很多年,对于很多普通的技术人,心中有很多疑问:云端融合到底意味着什么,对公司的技术体系有什么影响,未来又会走向 ...
- CTO和技术副总裁应该如何分工?谁才是技术领导者?
谁是初创公司的技术领导者,是CTO还是技术副总裁?任何在创业公司工作的人都知道,我们不应该去问这个问题.因为这两个是非常不同的角色,角色本身会随着创业公司的发展而变化,两者对于业务规模都很重要. 简单 ...
- 知道创宇CTO杨冀龙:网络安全人才决定行业格局
去年的时候,我曾经在团队内部分享了一个“网络安全人才迁徙图”,被圈子里的同行广为传播.几乎所有行业的安全人士都表示:国内网络安全行业人才资源情况并不乐观——有着10年以上网络安全行业经验的核心安全人才 ...
- 首席技术官 (CTO) 比普通程序员强在哪
互联网的蓬勃发展,让无数的程序员身价水涨船高,都变成了「香饽饽」,更有了不少「创业」,「当上 CTO,迎娶白富美的传说」.都说不想当元帅的士兵不是好士兵,我觉得这件事见仁见智,但提升自己的价值,让自己 ...
- 想知道吗?CTO 比普通程序员强在哪?
互联网的蓬勃发展,让无数的程序员身价水涨船高,都变成了「香饽饽」,更有了不少「创业」,「当上 CTO,迎娶白富美的传说」.都说不想当元帅的士兵不是好士兵,我觉得这件事见仁见智,但提升自己的价值,让自己 ...
- 【转】频点CTO张成:基于Cocos2d的MMORPG开发经验
http://www.9ria.com/plus/view.php?aid=27698 作者: zhiyuanzhe3 发表时间: 2013-06-29 17:46 6月29日,由9Tech社区.51 ...
随机推荐
- C语言野指针
本文转载自:http://blog.csdn.net/xwdok/article/details/576497 "野指针"不是NULL指针,是指向"垃圾"内存的 ...
- 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
准备条件, 编写一个web项目.编写一个servlet,若用户名为lisi,密码为123,则返回"登录成功",否则"登录失败".项目名为ServerIth ...
- mpi中的广播
MPI可以实现一对多的集合通信,最常用的是广播:某个进程将数据广播到所有其他进程,最终的结果就是每个进程都有一份广播的数据.MPICH中的广播函数是MPI_Bcast(void* buffer,int ...
- scrapy模拟登录微博
http://blog.csdn.net/pipisorry/article/details/47008981 这篇文章是介绍使用scrapy模拟登录微博,并爬取微博相关内容.关于登录流程为嘛如此设置 ...
- 【翻译】为Ext JS和Sencha Touch开发人员准备的应用程序监测(App Inspector)
和其他的Sencha开发人员一样,我会花费大约半天的时间在我喜欢的IDE工具上编写JavaScript,而另一半时间则是在浏览器上测试和调试我的应用程序.在过去几年,每一个主要的浏览器都已大为改善.现 ...
- android查看源码的时候看不了
原因:未关联android中jar包源码 解决方案:导入sdk---->>resource---->>api 这样就可以在代码中查看源码了.
- MySql常用操作语句(2:数据库、表管理以及数据操作)
本文主要内容转自一博文. 另外可供参考资源: SQL语句教程 SQL语法 1.数据库(database)管理 1.1 create 创建数据库 mysql> create database f ...
- 未能加载文件或程序集“file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0
未能加载文件或程序集"file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framewor ...
- C语言实现字符串中(10进制和16进制)转成十进制数
如何将字符串中的10进制数和16进制数提取出来,看以下代码: #include <stdio.h> typedef char TUINT8 ; typedef int TUINT32; T ...
- C语言二维数组实现扫雷游戏
#include<stdio.h> //使用二维数组实现 扫雷 int main() { char ui[8][8]={ '+','+','+','+','+','+','+','+', ...