Pengfei-xue.GitHub.io

programming your life!

Home ~/

View My GitHub Profile

  • CTO 职责

    如何做好创业公司的CTO?

    当问题发生时,CTO应及时高效率的去调动部下先解决最棘手的问题,而不是推卸责任……尤其是与各部门协作时, 收集上来的意见和建议不要攒着慢慢解决,而应该快速与部下沟通讨论出问题的解决方案,并及时改正优化。平时 工作中,比较反感的是,遇到问题,系统在线上还是不可用的情况下,先去找是谁惹出来的问题,直接开撕。 每个团队里面都有这样的情况,这点需要leader去引导,养成先解决问题,再去问责的习惯。

    CTO要看清业务的需求(如前所述,它在不断变化),知悉“做什么”;另一方面,CTO也要评估现有技术团队的能力极限, 与管理团队、业务团队进行充分的沟通。否则,好高骛远去构想,不仅使团队能力难以充分发挥,甚至会负效果,费力 不讨好、瞎折腾。建议技术团队中的开发人员多了解产品,产品多了解运营。产品,技术负责人以及高层之间需要定期 同步公司在运营或者战略方向,当前的着重点,了解需求背后的原因,多帮助其他团队去思考需求的解决方案是否合适。

    公司层面也需要技术负责人/CTO等去不断地告知其它团队,尊重技术的建议,特别是对产品方案的意见。我们之前经常会 遇到这样的问题:需求评审时,产品介绍方案,技术对方案提出了很合理的建议和意见,但是产品非但回到不了技术提出 的问题,反而用PR需要,市场需要,甚至是老板说要这么做来让技术接收。但是,实际了解到的情况是,这些最后的大招 其实很大一部分是错的,从而导致了,产品上去后,没过过久又改回来。久而久之,技术对产品上的改动特别敏感,产品 想要改动某些功能,技术这边会非常抵制。我们现在开始每周跟需求方同步需求,首先让技术负责人去了解需求的背景, 知道为什么这么做,更好地把控产品的解决方案,如果还遇到”大招”,会直接找原始需求方解释。

    认清极限除了要用到极致,更重要的是做好规划。对于基础架构和基本效率这种“牵一发而动全身”的关键问题, CTO务必要对现有团队能力作精准的评估,能不能在合理期限内解决它?如果不能,就要争取资源,恰如其分地构建团队, 分配好各个职能、角色的比例。其次,要根据业务发展可能的方向规划技术能力建设,比如,弄清楚若业务按月30%的速度成长, 3个月后对技术的要求是什么。

    业务猛增,对技术团队的直接含义是:加班,加班!首先,CTO要告诉技术团队,这是好事一桩。但疲于奔命就永远处于被动, CTO须按对业务影响和冲击程度,区分出可能的关键问题,未雨绸缪,让团队对最严重问题具有突击应对的能力。

    CTO要看清业务模式是运营主导还是技术主导。如果是前者,就要为产品做好服务;后者,就要当仁不让地把技术优势做出来。 然而,就算业务是运营主导,也可建立技术优势。比如代理游戏,技术工作包括服务器部署、运维、监控等,CTO可以追求在 所有运营类企业里,技术团队效率最高、质量问题最少、成本最低、人头最少。

    人多了,就要拆分为小团队,需要明确各个小团队的具体使命和责任。CTO要给各个团队讲清楚未来6个月、1年甚至2年的 使命和目标,未来成长之路是什么,团队负责人自己怎么发展,团队成员怎么发展,小团队怎么建设,绩效怎么考核,怎么奖励。 总之,要确保扩张而不脱节。

    如何聪明地把工作分出去,并让别人做得比你更好?

    学会把工作交办出去,大概是新上任的主管面临的最大的难题。许多团队的领导,大多数是因为工作表现出色, 而不是由于所谓的「领导能力」优秀才被提拔上去的。很多总监往往只有高级经理甚至是经理的能力,经理实际上 只有主管或专员的能力。个人经历来说确实是这样,所以不要打造一个学习型的团队,当有这种情况发生时,可以 迅速补上自己的短板,完成转型。这个过程中,我自己的看法是,给即将要晋升的同学在原岗位加压,让他感受到 压力,以及去寻找正确的解决方式。刚开始带队的时候,估计大部分人都会事必躬亲,所有的事情恨不得自己做才放心。 所以,把自己搞的特别疲惫。慢慢地,自己会发现,做为leader,其实应该去思考如何合理化配置自己的团队资源, 了解团队的最大负荷。很一些事情交出去给团队成员,让他们去成长,这个过程中,也不是说完全撒手不管,只需要 定期询问进度,跟对方说一下自己的担忧,看看对方是否考虑到了,合理把控好质量就ok。

    需要有定期的监督与沟通机制。如果是一项一周内要完成的任务,可以设定为双方每天一对一沟通一下进度,询问对方有没有碰到困难, 需要什么资源支持,有没有什么信息需要进一步深入了解等等,这样既不过分干预,又能即时了解项目进度,保证项目进展的方向正确和质量可控。 待双方磨合/合作得非常深入互相熟悉了解之后,监督机制可以每隔一天、甚至项目中间只过问一两次即可。交办和授权是一个逐渐扩大的过程。

    把工作交办给下属的过程,其实是让下属学习的最好的方式。我一直认为最好的学习就是直接做,做砸了是学习,做好了是更好的学习。 扎克伯格从来没有「学」过如何创建最大的社交网络,他直接把它做了出来。所谓的Learn by doing,在交办这件事情上,也是如此。 我们运维leader,就存在任务分派的问题,所有事情都堆在自己身上,导致自己压力特别大,还被我戏称为人民英雄永垂不朽。总觉得任务 交给其他同学做会出问题,目前还在调整中。

    如何像CEO一样思考? | 专访磁云科技创始人李大学

    第一,要站在CEO的角度考虑问题,去找到他的痛点,要想跟他能沟通好,我们就看CEO关注什么,这样你才可能跟他对话。 所以我们去跟CEO沟通的时候,就要把自己拔高到CEO这个位置上,像CEO一样思考,这样才能跟CEO很好地对话。

    第二,关注CEO关注的问题。CEO首先关注的是企业的生存和发展,但是CTO更多是从技术角度去考虑,比如什么技术最新, 使用什么语言去开发。所以我们必须要跟CEO在同一频道,从原来解决怎么办的问题,到解决怎么借助技术的力量促进企业 的生存发展,这样CEO可能更容易理解。

    第三点,用数据说话。比如做这件事情,对公司的收入、利润、行业影响力能够带来什么效果,有什么数据证明,领导看数据满意, 那就能跟你形成一个良性的循环,当做一个项目没有结果,或者结果不能用数据呈现的时候,你的话语权就越来越小,事情就很难做了。

    参考

  • 上班的合适距离

    第一次来北京是大四的暑假(其实是还在我妈肚子的里时候),那会儿老婆还是女朋友,来女朋友的城市玩,坐 公交车到她家,729路,被挤到死。那会儿还没有感觉到路程是什么概念,反正在老家公交车坐的也不多,一 般在城区的话,公交车坐个20十来分钟已经算很长了。当然,从我们家去市里,坐公交车的话也需要40-50分 钟。

    工作五年多,公司换了几家,到公司的距离的路程也一致在变,现在在望京上班,家住在南三环,每天上下班 的时间在1个小时左右。如果换做是刚来北京,这个路程是没办法接受。时间成了,感觉1个小时的路程还好, 不远也不算近。现在觉得,这个时间如果是坐地铁,在不挤的情况下是比较合适的距离,或者说是特别好的距离。 之前买了kindle,现在路上基本就抱着kindle看看书。有的时候也会玩玩手机,或者游戏。总得算起来, 还是kindle用的最多。最近一年多,看的书很多,大部分都是在路上看完。

    kindle是很好的读书工具,没有太多功能,也许就是功能简单,让用户不会时不时收到烦人的推送,也不会想着 去切换到另外一个APP干点什么事情。如果是用个iPad,那估计花在切换APP的时间都会很多。唯一不满意的一点 是,kindle屏幕有点小,如果要看技术类书籍,或者页比较大的书籍,会比较痛苦。一页展示不下,特别是 PDF类的文档,翻页还会卡顿,看PDF还是觉得用iPad最合适了。

    最近一年多,看了估计超过150本书,现在已经可以快速地阅读一本书了,而且现在看书,看几章觉得没有兴趣, 或者嚼而无味的时候,就放弃继续往下看了。有的时候学会放弃,会节省很多宝贵的时间,这些节省下来的成本, 可以让自己去看更多有趣的书,收获更多。

  • new workflow confusion

    最近遇到了一些管理上的混乱,新流程的引入,导致了管理的灾难,主要出现的几个问题:

    所有产品线的排期都统一管理,开发周内容安排会议上,混乱,无法精细地了解每个产品线的开发内容。产品 层面上来说,对产品线没有很好的定义,导致的问题是,几乎每个需求都会牵扯到所有的产品线。对于Feature owner来说,需要了解每个产品线的事情,成本太高。而且,目前我们的情况是,没有足够的leader来承担这项 职责。

    目前的开发流程,带来的额外问题是,开发人员安排有些难做,一个需求在早期安排了人员参与后(从目前的实 践看来)之后再调整人员,会遇到很多配合方面的问题。上周,就有一个leader跟我说了这个情况,但是,我 也表示比较无奈,需求早期安排人员的时候,没法得知这位同学,在接下来的迭代里面具体会有多少任务量。 于是,出现临时换人属于很正常的事情,我不太理解的是,在开发开始前,更换了开发圆圆,如果产品需求之 前都已经讨论的很好了,那么,基于这个已经确定的需求,开发刚开始的时候换人为什么会导致配合的问题呢。 相应的同学,看一次文档,再了解一下不就ok了么?

    人与神话中,有关于进度落后,增加人员的讨论,在过程中增加开发人员,很可能会更加拖后开发的进度,因 为,人多之后组内沟通,对需求理解的一致性以及培训的成本非常大。所以,在开发过程中,需要去尽量避免 掉这个问题,在项目早期就合理预估好开发资源,避免中途出问题。这个对于新人加入团队也有值得参考的意义, 特别是对于临时抽调人员支持的情况。新人在加入团队时,最好安排一些完整的内容去做,另外,新人在早期 需要给他们营造一个单纯一些的环境。主要是,让新人有足够的时间,足够的资源去做好交给他的任务。尽量 把产品需求讲解清楚,明确告诉新人需要做什么。如此做,对新人来说,心理压力会笑很多,任务完成的质量 也会相应提升。对于临时抽调的人员,一个教训是,之后调试,debug的时候,如果他已经被调派回去了,那么 最终,还是要让你来替他完成一些擦屁股的事情。

    针对资源安排,jira已经完全应付不了我们的新流程了,所以,只能做了额外的工作去跟踪迭代周期内的开发 内容,比如,在wiki上单独维护一个开发内容列表,里面包含了所有迭代内容,以及相应需求对应的开发,测 试资源。每次需要人员去维护,原本的jira sprint管理也就完全不适用了。

    新流程已经使用了差不多3个迭代,但是,有很多同学不知道当前这个版本在做什么,发版的内容是什么, 新版本发出去之后,不知道更新了哪些内容。对后端同学来说,不在乎版本,版本是没有意义。但是,对于客户端 同学来说,版本很重要,他们需要明确的版本号。其实,我们去维护版本号是没有太多成本的,jira的版本功能 已经相当完善,多一个sprint可以归结到某一个版本上去。我最早的想法是将版本与迭代需要分开,但是,由 于测试引入了一个新的工具,导致,版本还是只能跟迭代搅和在一起,有点无奈。

    我们启用新流程,关于版本的事情有一个引子,产品部分不想自己去维护产品版本。在我看来,就是产品没有 短,中,长期的规划,导致的一个问题是,需求零散,很多需求没有长期规划,一个需求很可能一个迭代之后 就会被撤掉,而且撤掉的原因不是说试错,我们发现问题主动去下掉这个功能,而是产品没有想清楚,新上 feature之后需要怎么发展。(当然了,也有一些拍脑袋的需求,或者政治类的需求,必须要做)

    最近的几个迭代发现,测试成为了我们的瓶颈,开发这边有资源做,但是,测试资源紧缺,无法测完所有内容。 我们目前太依赖于人肉测试,测试团队需要对没想功能都手动去执行测试用例,导致的测试效率以及成本都比较高。 另外,部分同学的开发完成度不高,导致,我们的开发内容提测后,有些实现跟产品需求没有完全对上,或者, 有严重bug,导致测试同学完全没法继续执行下去。所以,现在业务这边在推的几个事情是,完善接口文档,把 项目接入ci做持续集成,帮助测试同学完善自动化测试工具。

    接口文档,之前由于人手不够的原因,导致很多接口都没有问题。最早的时候也有一些文档,是按照版本来给 接口文档,对于客户端同学来说非常友好,但是,一个小小的弊端是,对于一个接口的完整性来说很难看,对 于一个接口,比较难确定目前的最新状态是什么样的。我们之前的文档是在gitlab上做的,维护性不是很好, 现在已经迁移到confluence,可以自动生成接口列表,按照特定的规则排序,分类等,维护效率要比之前高很多。 现在,每个迭代都会抽一部分时间去让大家完善文档,希望在8月中下旬的时候完成所有的接口文档。目前ci已经 成功接入,最早的时候也结果ci,但是,当时的使用姿势不太对,导致很难去推这个事情,而且大家在本地做 一些测试也不方便。现状是,ci这部分已经完全搞定,我们的ci一直再跑。但是,对于接口这部分,测试同学 对框架,还有几本的自动化测试技术不太了解,导致ci跑测试的时候,由于测试脚本的问题挂掉。这部分需要技术 这边给测试做一些基础的培训,让测试同学了解最几本的单元测试,技术以及测试框架的使用方式。

    新流程的一些其它问题:

    • 会议时间大大增加,需要一周的时间去开会,对于team leander来说,会议时间过长
    • 我们没有足够多的负责人去跟所有的需求,跟进需求的进度,完成的质量等
    • 大量的重复性工作

    这几项不太想继续展开说了,之后,有时间再来阐述。

  • talk with fresh tech guy

    周六加班,去聚餐路上跟团队内一位新来得同学随便聊聊,看看他来了这边一个礼拜后得感想。 他来得时间点比较尴尬,正好是我们要做大促的时候,于是,压力比较大。一来就接活,没有 太多适应时间。下文中用A来代表这位同学。

    A同学说,本来代码早就写完了,不过,想写得漂亮,于是尝试了元编程。结果很多地方都不能 通用,最后,还是得一个功能一个功能去写。给我得感觉是,偏纯技术,其它得东西不在意。新 人都有这个问题,想起来,自己刚开始实习,工作得时候,也是想把代码写得漂亮,能不能完成 则另说。写得时候,一定要想办法用一两个模式,没有适用场景也得早就一个出来。结果,把程 序写得特别复杂。现在如果去写,肯定是找最简单得方式完成。我自己得理解是,技术可以钻研, 但是一定要有业务需求,通过业务需求去不断提升自己得技术,去了解,尝试不同的解决方案, 找最合适当前业务场景得技术方案和手段来解决问题。

    A同学跟我说到面试得事情,说是他面试过得最有意思的一次,他懂得面试官都懂。之前面试过 其它家,很多都在吹牛皮,没有实实在在得东西。之前也看到过一些文章,说越难加入得团体, 新人加入后,就会越忠诚,越愿意把自己融入这个团体,以这个团体为荣。比如说,美国得兄弟 会,对新人来讲,会经历各种折磨,去做一些丢人得事情,但是一但通过了,那这位新兄弟就会 特别忠诚于这个团队,不离不弃。还有一个列子就是军校新人,新人得锻炼都比较苦逼,各种受 老兵排挤,欺负。但是,融入团队后,他就再也离不开这帮兄弟了,复原时,一顿痛哭。

    业务这部分,更加注重的是对需求得理解能力,跟各方得沟通能力,技术上有要求,但是,不会 那么高。A同学得想法是,为什么做业务还找技术牛逼得呢。直接找一些水平一般得人过来,不 就行了么。这话也不错,但是,公司得不同阶段,对技术的要求也不一样。我们到了一定得阶段 之前得技术栈很有可能适应不了新得业务需求,所以需要多考虑,怎么去升级我们得技术栈,来 适应新得挑战。另外,做技术,不一定是要在纯技术得道路上前行,需要结合业务需求来培养自己 多方面得能力,而不只是把自己限制在了技术上,其它能力没有发展。做业务,也有很多需要技术 来解决得事情,比如,如何提高我们框架得开发效率,如果做更好得工具让大家提升开发效率,等 等,有很多事情可以做。

  • 美國行

    今年五一得時候去得美國,到現在才寫一些後感,有點晚,還好得是,在美國 得一些經歷記得還比較完整,記錄一下。

    我們從北京出發,途徑加拿大,到達美國拉斯維加斯,在加拿大機場等了差不多2個小時, 算是來過加拿大了,肤浅得感受是,这两个国家完全没必要分开嘛 :/ 抵达拉斯维加斯差不多 下午5,6点得样子,感觉还早,取了租得车后,就直接去奥特莱斯了,在奥特莱斯逛了不到 2个小时,店面就都开始关门了。买了几件nike,timberland得衣服其它都没有 时间看了,哎,现在想想很可惜,这次基本没怎么购物。在付款得时候,发现美国人找零得方式 跟我们不一样,他们找零时,是计算得你购买物品得钱加找零等于你总付款。而我们国内,计算 方式都是,你付的钱减掉你购买商品得钱等于找零。

    之后直接开车在拉斯维加斯赌场附近开车兜了几圈,有很多停车场都标记了free parking,但是 到了之后,才发现是上当了,也许这个停车场的名字就叫free parking吧。美国的停车场特别 大,人少,开进去后,感觉怪怪得,受了其他人得影响,觉得晚上人少得地方不安全,我们就特别 快地开走了。

    到达酒店得时候,已经快11点了,在酒店得自助停车场内开了好久才找到停车位,下车再去酒店得时候, 又饿又困,简直要挂。问了几个酒店服务人员后,最终到了我们住得酒店,威尼斯人,酒店底层都是赌场, 夜里了,人还是特别多,我们穿越了整个赌场才到check in得地方,办完手续后,找了一家最近得餐厅 补充一下。我点了披萨,确实是电视中那种特别大份得披萨,国内也有站点披萨,不过味道,国内要差点。

    吃完,就会酒店了,过程中,感觉美国拉斯维加斯这边得酒店,绝对是超5星了,酒店大厅特别大,金碧辉煌, 玩意儿也多,很多地方都有蓝天幕布,刚看到得时候,以为是玻璃拱顶,不过仔细看了,才知道,那个是幕布, 感觉特别帮,就像是把室外得蓝天白云给腾挪到室内了,给人特别豁亮得感觉。我们自己得房间也特别帮,很便宜, 但是属于大套房,最喜欢得是超级厚,柔软。浴缸也特别赞,在里面泡了很久,有点刘姥姥进大观园得意思。 第二天起床后,在酒店吃完坑爹得早餐,加消费估计有300了,跟之后吃得免费早餐差不多 :/ 吃完后, 去了凯撒酒店,描述有点困难,酒店大厅里面就跟室外得罗马大广场类似,有很多罗马得雕塑。

    跳跃一下,我们最后一天,是从波兹曼飞到拉斯维加斯,在金字塔酒店看了blue man的演出。金字塔酒店 外形跟埃及金字塔一模一样,酒店外面还有狮身人面像,金字塔得顶部打了一束光,直耸云霄,可以用蝙蝠侠里面 得召唤光束类比。酒店入口是几个大型雕塑,酒店内部特别开阔,特别高得厅,是我见过得最牛逼得酒店了,国内 五星酒店完全没法比。

    第二天下午,我们就开车走了,路上去了一家射击馆,american shooters,我们打了150发子弹,玩了两种手枪, 还有一把粉色得来复枪。来复枪得子弹比较小,差不多2-3个瓜子大小,射击得后坐力特别小,不过命中率特别高, 基本都在打进9,10环。手枪就不一样了,后坐力特别大,我老婆开第一枪得时候,都口不动扳机,射击时,有点 把不住枪。走的时候,看了一下枪得价格,一般都是400刀左右,一些牛逼得枪,包括冲锋枪,狙击枪等都有点卖, 就是比较贵一些。打完枪,我们去旁边得日本馆子吃饭,老板娘很热情,非常客气,最后吃饭付账得时候,给了小费, 最终还是给我们退回来了,好像说是,日本饭馆不收小费。这时候,想起早晨帮我们取行李得服务员,我们没给小费时 得瘪嘴样,感觉怪怪得,这也怪我们没有完全适应给小费得文化习惯吧。

    在美国开车,发现路上基本很少能看到重样得车,改装车特别多,欧洲豪华车基本看不到,都是美国牌子得车,个头也 特别大,感觉要比国内得车大一圈。之前又在澳洲开车,觉得澳洲人开车特别文明,不着急,如果你车速慢,后面得 车基本不会嘀嘀你,也不会耐不住超车。但是,美国这边完全不不一样,只要你稍微开慢点,救回被嘀嘀,而且,这边 开车基本都超速。我们开车刚开始还按照路边得限速标志开,但是,后来发现几乎所有人都超速后,我们也超速开了, 有很长一段时间我们开到150-160左右,入乡随俗了。

    开车过程中,觉得美国真的是块好地方,基本上都是平原,土地比较肥沃,我们曾经在一条穿越农场得路上开了,直线 开了估计快有1个小时,两边还都是平原,农场。农场几乎看不到人,不过,大型化机械随处可见。

    美国加油基本都是自助,插卡,拔油枪,加油,走人。特别方便,但是,也有一些加油站是,需要预付,然后才能加油, 我们开车最后一站,波兹曼,在加油得时候就遇到了这种情况,然后找了加油站杂货店得服务员帮忙才解决问题。非常 感谢这位店员,一位胖胖得小女孩。我们开车过程中,基本上没有看到麦当劳,肯德基,必胜客,但是杂货店有很多。 让我你们感到特别神奇得是,DQ美国店内,竟然卖汉堡,还挺好吃,醉了。

    我们在黄石公园完了几天,最后一天,我们住得是一个木屋,户外有一个烧烤得地方,于是,我们就去超市买吃的,准备 做个中餐。当时还买了一些热狗,于是,我们就拿着玉米,还有热狗去烤着吃,我们刚把热狗放在火上烤,旁边得一个小女孩 就用特别怪异的眼神看着我们,跟她爸妈说,我们在烤热狗,然后,她爸妈就告诉她,不要随便地自己得眼光还有观念去批判 其他人。给我们得感觉是有点囧,乡下人呀。不过从另外一个方面,也可以看出,不同得文化差异,在普通人得相处过程中,会 出现什么样得问题。我觉得小孩得父母也会觉得我们特别奇怪,几个老中,不知道在瞎搞什么。所以,这个时候,我们需要 更多底沟通,让对方了解自己得文化习惯,或者请教对方,如何做。不过呢,学到了一个美国人吃棉花弹,巧克力得方法, 用叉子叉住棉花糖,火烤一会儿后,放在一片饼干上,放上巧克力,再放一块饼干,然后,吃。哎,不过,我们当时没时间自己烤 着吃。。。