2015年9月,我们获得了一笔千万级别的投资,公司由西安搬到了杭州。这一年,我的Title也变成了CTO。

很早以前,技术总监和CTO在我的眼里并没有什么分别。当时,我天真地认为,这两个词不过就是同一种身份的不同叫法,都代表了公司内技术上最牛的那一个人。可是,后来发生的两件事让我意识到我的想法大错特错。

第一件是在一次西安社区活动之后在TW附近的饭馆吃烤肉,当时我已经部分介入到目前公司的一些开发事务中,负责整个系统的技术架构和开发管控。在听我说完我对开发团队所做的工作之后,朋友仰头喝下一杯啤酒,说道:“那你相当于是CTO,而不是技术总监。”这句话对当时的我来说,就像投向平静水面的那颗石子。

第二件则是今年闹得沸沸扬扬的“冯大辉丁香园离职事件”,吃瓜群众自动自发地发起了一场关于CTO职责的大讨论。此时,我已搬到杭州。也就是这一事件,让上面的那次对话又浮现在了我的眼前。这已经过去了好几年。

现在,我依旧无法很清楚地说明白两者的区别,但我至少知道了两点:

  • CTO ≠ 技术总监

  • 相比起技术总监,CTO对于公司的方向具有一定的话语权。CTO是舵手,技术总监负责贯彻和执行。

这样看来,我的Title也多少是名副其实的了。然而,在初创公司哪里能分得了这么清楚。顶着CTO的帽子,做着技术总监、项目经理,甚至程序员工作的人不在少数,我也不能例外。

我这一年的时间线

按照时间线来看,我这一年还真干了不少事情:

  • 2015年7月,投资消息得到确认。但随之而来的就是面临公司需要搬迁的问题,为了给一直以来同甘共苦的弟兄们有交代,同时为了保证公司搬迁之后的开发不受招人等事务的影响,说服公司保留西安,并说服部分开发人员跟我一起去杭州开拓新大陆。

  • 2015年10月,新公司成立之后的第一个发布正式上线。在随后的开发中逐步明确开发规则:搭建CI环境、Ticket管控、迭代周期、发布前演示……开发也慢慢走上正轨,由于开发队伍长期合作培养的默契,两地开发并没有成为一个明显的障碍。

  • 2015年11月,回交大招人,但没有招到合适的开发,主要集中在运维和UI设计。

  • 2015年12月,平台基本成型,涉及的主要业务均能在线上走通。在这个过程中,说服开发队伍认同并接受“快速迭代、快速调整、每次可用”的思路。说的直白点,这个过程相当于在航行的同时把船由小造大,边开船边更换零部件。

  • 2016年1月,杭电招人。

  • 2016年3月,有感于开发队伍技术薄弱,并且缺乏学习的方向,整理出公司开发队伍的“技能图谱”。

  • 2016年4月,业务层的开发已经上轨道,我不再关注这部分的内容,转而将精力放在接入层。随后对这部分进行了大规模的重构,以应对未来大量设备的接入。引入了消息队列和集群处理,测试效果还行。

  • 2016年5月,鉴于公司硬件产品本身就是基于工业标准(Modbus和CAN),提出工业云的概念,建议公司跳出压缩机行业。主攻工业设备接入和运行数据存储,同时提供Web API。

  • 2016年6月,几位老员工因个人原因离职,包括硬件团队负责人。虽无限感伤,但也不得不坦然面对。临时接管硬件团队,同时搭建了外部的技术支持力量,包括硬件兼职人员和与外部公司硬件团队负责人的长期联系。

  • 2016年7月,随着设备数据的积累,原来作为存储支撑的MongoDB渐渐有些吃力,考察再三之后,决定弃用Mongo转向HBase,同时引入实时数据的DownSampling。注:这里不能完全归咎于Mongo,我们之前因经验不足导致的设计缺陷也是让这一问题最终爆发的原因。未来会专门撰文详述这一过程。

  • 2016年8月,实时数据库的底层存储变更完成,效果不错,查询速度也较之前快一个数量级。

  • 2016年9月,苦闷于业务发展不令人满意,深度反思,指出开发队伍只顾埋头开发不问世事的风气。同时内部明确提出业务的优先级。

  • 2016年10月,跟运营部门一起重构服务市场,将其改造成面向经销商的服务管理SaaS。市场出现正向反馈。

从这份“草根CTO创业1年大事记”中,不难看出我把主要精力放在了三个方面:项目管理、技术管理和团队建设。

一直以来,我自认为是一个不错的项目经理,不仅表现在过往参与的项目都还不错,也表现在跟甲方(国内某大型国企)和合作方(国际知名IT咨询公司)的关系也能处理妥当,建立起了不错的私交。即便后来进入外企,也在人数相对减少Release增加的情况下,利用有限资源制作一些自动化工具,设法按期完成交付。而这一次,作为项目管理者,我主要确立了以下几条规则:

  • 凡代码变更均有Ticket

  • 自动化测试代码 + Jenkins CI + 基本的部署自动化 + 基本的运维自动化

  • 基于Gitlab的代码提交和协作:Branch-per-Feature、Merge Request、MR触发CI、主库 + 开发者库 ……

  • 建立开发节奏,每两周部署3个平台:Web + Android + iOS

  • 建立起与业务运营团队的沟通机制:计划会议和发布前评审

在初创公司,当然没法要求所有规则都如大公司一般严谨和教条,但基本雏形已经具备。这一切都是为了让队伍养成良好的习惯,以便我们能走得更好,同时也更远。

作为技术管理者,技术选型和架构设计自然是主要工作,但除此之外,对于初创公司而言,我还做了以下自认为重要的两件事:

  • 建立公司的技能图谱,方便现有员工和新进员工能一目了然地清楚公司的技术焦点,同时也方便他们能规划自己未来的学习路线。

  • 建立团队内部交流制度,15分钟内讲清楚一件事,来自于之前组织社区活动和观看TedEx的经验。以锻炼大家的表达能力和激发大家的学习热情为主要目的。

后期,开始尝试建立公司内部的技术委员会,开始考虑将队伍分拆成业务组和平台组。

讲到团队建设,这可有点伤脑筋。一方面,就工作而言,我不是一个太好相处的人,因为我对代码和技术有要求,而且标准不低,看到垃圾代码会难以抑制住心中熊熊怒火,有时会让小弟们比较难堪;另一方面,我也是一个好相处的人,比如我不是那种小心眼的领导,跟团队的人吵完架之后还能照常一起把酒言欢,该涨工资自然会给你涨,基本能做到对事不对人。而且我自己虽然八卦,但我极度厌恶那种打小报告的人和风气。

所以呢,能适应我的人大多能跟我保持不错的关系。而那些不适应的呢,则会渐行渐远。正是这种不够圆滑的性格,或许给团队的某些人带来了一些伤害,在此,我说声抱歉。

总的说来,我今年在团队建设方面做得远不如其他两方面,表现在:

  • 没能在杭州建立起一只跟西安旗鼓相当的技术队伍。这固然有一些原因在里面,如初到杭州人生地不熟,滨江的招人环境不佳等等,但无法抹杀事实。

  • 虽然做到了让团队意识到自己的不足进而开始有自我提高的意识,但远远低于我的预期。

  • 团队的激励制度做得不够,这或许是团队自我驱动力不足的主因。

  • 信任和放权做得太晚,目前看来如果能早点将担子交给年轻人,整个团队的精神面貌要比现在更上一个台阶。

看到这里,请不要误解我们的技术队伍是一只缺乏生气和向心力的乌合之众。若真是如此,他们不会在公司融资前最艰难和最黑暗的那一段时间依旧守卫在公司身旁;若真是如此,他们不会在公司获得投资需要移师杭州之时,跟着我一起背井离乡;若真是如此,他们也不能保证开发节奏,每2周交付3个平台的功能。

这不过源于我贪得无厌的高标准,以及他们尚属稚嫩的人生经历。

我这一年的得失

纵观这一年,我作为CTO的第一年,我开始意识到“授人以鱼不如授人以渔”,有意识的促进团队的自我思考能力,而非像以往一样,强行贯彻我的思路。

  1. 传播项目管理知识,同时说服团队接受并适应“在行进中开火”、“边开船边造船”的工作思路。

  2. 在后期,让团队意识到业务并非只是业务运营团队单方面的职责。让开发团队开始关心关键的运营数据,以此来评估开发效果,并且鼓励开发人员参与业务运营方面的讨论,而非单方面对业务需求“有求必应”的态度。

  3. 向团队灌输怀着“尽快验证失败”的心情去做某一个功能,在这样的思想指导下,自然会以最经济的方式去实现功能。当效果不佳,直接丢弃就好;若相反,则着手深耕细作。力求把好钢用到刀刃上,避免一上来就进行一个大设计。

  4. 让团队意识到自己的不足,知耻而后勇,开发人员开始意识到自己的代码难看,知道要重构代码。

说到底,就是营造一个好的环境和好的土壤,我认为这是作为管理者最重要的工作。

同样也在这一年,我最大的失误在于:对业务介入太晚,甚至一开始怀着嫌麻烦的心态主动避免。在此,我并非要对业务运营取而代之,绝非此意!现在看来,我至少在几个方面做得不足:

  1. 虽然我们很早就添加了如百度统计分析脚本和ELK日志分析,但并未很好的利用它来指导业务运营,同时没有为业务运营团队提供有价值的建设性意见。而只是简单地将它交给运营团队,并未给出技术方面的指导。

  2. 作为联合创始人之一,没有很好地帮助公司明确战略重心,整个队伍对公司的业务重点没有形成统一的认识。

  3. 在外围技术合作伙伴方面推进乏力,而只是沉溺于新技术的研究,说到底是躲在舒适区自High。

  4. 在技术大幅领先业务时,没有正确使用这种力量去拓展新业务线,以巩固公司的局部优势。

一言以蔽之,缺乏创业维艰的那根弦,想的多做的少。所幸,今天的我已非昨日的我,只是这一切的代价有点大。

草根 CTO 创业1年交作业:这个职位跟技术总监有啥不一样?相关推荐

  1. 一文读懂什么是CTO、技术VP、技术总监、首席架构师

    究竟什么是CTO,一个公司真的需要CTO么?哪些公司的职位对于技术管理者来讲真的是CTO的职位?同样是技术最高负责人,为什么有人叫CTO.有人叫技术总监.技术VP,有人叫首席架构师?他们之间的差别是什 ...

  2. CTO、技术VP、技术总监、首席架构师

    究竟什么是CTO,一个公司真的需要CTO么?哪些公司的职位对于技术管理者来讲真的是CTO的职位?同样是技术最高负责人,为什么有人叫CTO.有人叫技术总监.技术VP,有人叫首席架构师?他们之间的差别是什 ...

  3. 郭炜:CTO、技术VP、技术总监、首席架构师的区别?

    同样是技术最高负责人,为什么有人叫CTO.有人叫技术总监.技术VP.有人叫首席架构师?他们之间的差别是什么?怎样才能成为一个合格的CTO?这些问题通过CTO核心能力管理系列文章分享一些自己思考,也重新 ...

  4. 《降级论》《按时交作业的学生何以常穿脏袜子》读后感

    今天bill推荐了一篇文章http://blog.kowtime.com/?p=16,白天略读,晚上仔细读了一遍.作者主要阐述了这样几个观点: 1.it行业是个比较"高级"的行业, ...

  5. 判定考试成绩程序java_请大家务必按照平时交作业的要求,按时提交!否则会影响您的期末考试成绩。_学小易找答案...

    [判断题]组合定位中几个定位元件组合起来定位一个工件相应的几个定位面,该组合定位元件能限制工件的自由度总数应等于 各个定位元件单独定位各自相应定位面时所能限制自由度的数目之和. [简答题]拍照上传实验 ...

  6. 米扑科技:草根连续创业的前赴后继者

    摘要:今天又有一位草根创业者注册了公司,成为了千千万万草根创业中的前赴后继者.同时,他也是一位连续创业者,先后在百度.创新工场.小米.优酷和阿里工作或创业,积累沉淀四年后,2016年成立了自己的公司- ...

  7. 90 后 CTO 创业 6 年,做了一件改变互联网的“小事”

    TGO 鲲鹏会在武汉举行了一场线下分享活动 -- 冲破壁垒,打造精英的技术团队 .来自极验的 90 后 CTO 黄胜蓝分享了他的团队故事,以及在他看来一个创新团队应该具备的特征. 极验 CTO \u0 ...

  8. 北交专升本计算机联锁考试题,北交《计算机联锁技术》在线作业一15春满分答案...

    北交<计算机联锁技术>在线作业一 单选题 多选题 判断题 一.单选题(共 15 道试题,共 30 分.) 1. 对于动态冗余系统,( )冗余结构成为目前计算机联锁控制系统广泛采用的结构之一 ...

  9. python 字典练习 记录学生是否交作业的小程序

    #记录学生是否交作业的小程序 #包括:学生名字.日期.状态 1 data={ 2 'taotao':{ 3 '2018-6-3':'已交', 4 '2018-6-4':'未交', 5 '2018-6- ...

最新文章

  1. 让数百万台手机训练同一个模型?Google把这套框架开源了
  2. 步子太快容易牺牲精度,梯度下降复杂度这一简单道理,获严格数学证明
  3. python库管理_多版本python控制以及python三方库管理
  4. python函数内部返回的值_Python中函数的返回值示例浅析
  5. (需求实战_进阶_05)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
  6. element table多选只能选中当前页数据_关于“列表多选”操作流的小思考
  7. opencv之retina滤波器---Retina_create
  8. 史上最简单的 SpringCloud 教程
  9. mybatis 原理_了解Mybatis的工作原理吗
  10. 2004-7-1+ 用户控件(动态加载)
  11. DRF + react 实现TodoList
  12. Linux---文件权限的控制
  13. nginx: [emerg] unexpected “}”
  14. java 网络执行_Java网络编程之TCP通信
  15. 根据页面结构,用jquery取里面对应的内容 组装成json数据
  16. 解决使用 Bluetooth Audio Receiver 蓝牙传音卡顿问题
  17. 【es6】用map对数组对象中插入新的属性
  18. ubuntn下串口工具minicom ,kermit的使用
  19. 视频号如何打造爆款内容,封面、选题、文案三大维度丨国仁网络
  20. 双十一第二波活动来了,酷客scrm助力商家大卖

热门文章

  1. undefined reference to 错误问题
  2. R语言使用plot函数和lines函数可视化多条折线图(线图、line charts)进行对比分析、设置type参数自定义线条和点的关系、设置lty设置线条类型、col设置颜色、pch设置点形状等
  3. 2018年第九届蓝桥杯B组 国赛
  4. c/c++编译过程http://www.cnblogs.com/hktk/archive/2012/09/11/2680495.html
  5. TF-IFD算法及python实现关键字提取
  6. 网口压线顺序_手把手教学网线做法 掌握这几个步骤 轻松搞定
  7. [Ansys Workbench] Mechanical 界面显示模型树窗口和详细信息窗口
  8. 用java实现职工排序题
  9. Jetpack Lifecycle使用--Jetpack系列
  10. 杰理之耳机声学结构设计【篇】