《跃迁 从技术到管理的硅谷路径》读书笔记

这本书是我目前阅读书籍中比较好的书,值得推荐!最早是通过公众号推荐得知此书,当时很想买,可是又没公开卖。近日,连续花了两个周末的时间阅读完了《从技术走向管理》这本书籍,仔细读完后个人颇有感触。



一、作者介绍

《跃迁 从技术到管理的硅谷路径》是由计算机博士朱赟所著书籍,美国莱斯大学计算机博士,Airbnb 技术经理,极客时间专栏作者,Square 公司首位华人女工程师。毕业于中国科技大学少年班,后来在美国莱斯大学攻读计算机硕士与博士学位期间共发表国际论文10余篇,主要涉及程序语言设计和生物信息学的大数据分析。
朱赟博士大部分的时间都在不断地积累和练习,独立地学习、做科研,或者长时间地编写代码。

二、涉及内容

这几年,中国互联网业的蓬勃发展。特别是移动互联网的普及,然而有幸的是,我也感同深受过,业务复杂度、团队规模的迅猛增长,对创新与项目迭代频率的极限追求。当内部成长与自我提升的速度难以与之匹配,就亟需走出去、向外看。

本书是一条来自硅谷的极具观摩与借鉴价值的优质轨迹,总作者从工程师到管理者的全程实景与心路而无比鲜活。全书分为技术管理、技术实践、硅谷文化、个人成长及杂谈几个部分,非常适于新晋技术管理者、视野开阔的一线IT业者。

2.1 技术管理

技术管理包含了两层含义,一个是管理自己和团队的技术,进行技术选型,在正确的场景使用最适合的技术,保证程序的简洁、强壮和可维护性,最终完成产品的上线。
另一个是管理技术团队,帮助团队成员成长,把事情做成。很多优秀的工程师最初都是独行侠,他/她们单枪匹马完成了很多丰功伟绩,也更习惯自己独立工作。但是,一旦他/她们发现团队协作可以做出更大的成就时,就会从亲力亲为转变为授权模式,帮助别人成功,自己才会获得更大的成功。

2.2 技术实践

技术人员要成长,就必须要不断用新的技术视角看待行业和技术的变迁。刚入行时我们总是从一门编程语言入手,以为掌握了一门语言就可以横行天下,最后发现,一门编程语言只是技术世界的冰山一角。我们还需要了解数据库知识、算法、架构设计、测试和软件质量、监控和告警等等,不同的技术视角,会给我们带来不同的挑战和成长。
一门技术,你看它是山,它就是山;看它是水,它就是水。你可以把它当做一门简单的编程语言,有语法,有特性,有优缺点,但这样的语言也可以复杂到去实现和解释各种计算模型和理论。一门技术到底能做什么,完全和工程师怎么去用,在什么场景中做什么样的实践息息相关。

2.3 硅谷文化

硅谷是个创造奇迹的地方,这里有最好的科技企业,最具创新性的技术,有计算机领域的传奇人物,有顶尖的大学斯坦福和伯克利,有著名的投资公司……这些因素是硅谷成功的原因吗?也许是,不过我认为最重要的因素之一是硅谷的文化。
硅谷的黑客精神、叛逆性、好奇心、创新思维和鼓励犯错的做法,造就了独特的工程师文化,让硅谷的工程师能在最大程度上探究技术和商业的可能性。我们来倾听硅谷一线工程师的说法,看看他/她们在平时是怎么工作的。

2.4 个人成长

在我们漫长的职业生涯,每个人都希望有个完美的职业规划,建立超高人气的个人影响力,维护良好的人际关系……如何做到呢?欲登高而穷目,勿筑台于浮沙,先把自己手头的事做好。做成一件事,然后再做成另一件事,让优秀成为习惯,让自己成为稀缺资源,自然会有优秀的人来找你一起做事。
成长最好的起点是什么?做出一款完整的产品,完成一项有价值的任务,并且得到你的用户和工作伙伴的认可。

2.5 杂谈

思绪如风,总会在某处停留。在这个章节,作者会和你聊聊一个女工程师关于技术生活的奇思妙想。其中主要包括两个系列,一个是白话 IT,一个 IT 江湖,均以轻松明快的笔触阐述了作者对一些技术内容的思考,其中还涉及到了逻辑、设计和美学等内容。
技术是算法,是理性,是逻辑,但掌握技术的工程师们却是充满温度的人,他/她们爱思考,爱生活,乐于分享,并对世界充满好奇心。这样的人才能做出充满生命里的产品,进而改变人们的生活。

三、管理方式与技巧

本书是由一线管理者的经验及学习写成书籍,有管理者该了解的领导方式、工程师必看的技术实践,技术人必修的软技能等。

3.1 职场中,从给答案到做引导

新人可以直接给答案;有一定的经验后,可以给点提示引导他去找答案,使他产生一种解决了问题的成就感。

3.2 如何帮助团队成员成长

不要陷入静态思维

  • 好的上级会给你机会、空间和支持,让你成功
  • 不好的上级会固定的眼光看待你的能力,不敢让你做一些难的问题

大公司的做法
对每个级别都在各方面设定一些标准,比如技术要达到什么水平,执行能力水平,是否独立解决问题。像阿里就会有P5,P6,P7,P8的标准。这样的话,只有你达到下一个标准,并在这个标准上面保持了一段时间,你才会被提升。(在这种情况下,如果你的上级是静态思维,怕给你分配难点,那么你将没有机会表现自己,那么想升级几乎是不可能的。)

优秀管理者需要做到以下4点:

  • 自己在哪些方面会用静态的眼光去看待别人的能力
  • 把自己有这种心态时的表现和想法写出来
  • 再遇到类似情况,可以试着改变
  • 和组员多交流并听取对方想法

优秀的技术管理者不是自己成功,而是团队成功。

3.3 项目延期了,作为负责人该怎么办

  • 建立流程,每周一次会议,共享管理工具
  • 任务优先级
  • 共享的项目状态表
  • 不要漏掉任何成员,临时通知会使合作者或帮忙的人没有参与感
  • 实时反馈,多沟通

3.4 管理和被管理的期望值差异

90%的司机都认为自己比别人强,统计后,结果显然有偏差。
那么怎么校准管理者和被管理者对彼此的期望值呢?

  • 增加对彼此的了解
  • 半年或一年进行一次关于期望值的对话,了解他的期望和你对他的期望
  • 知道期望后,还要持续跟进,一周或2周检查一次,确保对方在他的期望上面努力

3.5 管理者在进行工作分配时,会考虑哪些问题

  • 通过第三方评价、履历,做过的项目来衡量他的能力作为参考基线
  • 问对问题,给他一个任务,看他会问的问题和想法是否能覆盖所有的情况
  • 让他进行工期估算,估算的时候是否考虑到沟通成本,技术难点,测试成本等
  • 沟通,计划很强,但是执行力弱。能说但不能把事情做好的人,难以托付重要的事儿
  • 上线后出了问题是否可以第一时间去解决问题,会不会推卸责任

注意点:

  • 新人经验不足,不要轻易否定他们
  • 根据每个人的特点来分配不同类型的任务

后记:如果你希望承担更重要的任务,一方面要提高能力,另一方面要有态度,拿到一个任务,要全力以赴把事情做好,让我们成为别人眼中可以托付重任的人。

3.6 管理者不用亲力亲为:关键是什么

大部分被提拔成技术领导的工程师都有一定的领导力,最重要的是,他们的技术能力也很强,我还没听说过哪个技术差但其他方面能力强被提拔的。

技术能力强的刚走上管理岗位时,最爱做的事就是亲力亲为,看谁干活都不放心,恨不得自己把所有的事儿都做了。工程师的工作习惯:一个技术方案如果自己不参与,就会担心执行效果。
这里面有2个误区:

  • 事情能不能做好和完全按照你的方式做好是两码事。别人的工作方式一样可以把事情做好
  • 介入和不介入并不是关键,用什么方式介入,在哪些地方介入,才是关键

明白了这2点,那么下面就是帮助接收任务的人把事情做好。

管理者,授权和分配任务应该注意的地方:

  • 让他明确任务的期望的目标
  • 制定计划后,保持跟进,随时对他提供帮助
  • 当对方做的很好的时候,需要及时给予肯定

最后,管理者不用亲力亲为,关键要做对什么?

  • 有效的分配任务出去
  • 保证分配的任务圆满完成

帮助别人成功,团队才会获得更大的成功。

3.7 项目管理中的三个技巧

技巧一:制定项目计划时,要对多个项目进行细分重组。

  • 每个人能力和任务难度匹配
  • 每个人完成任务的时间均衡
  • 每个人挑战性工作和“脏活累活”均等
  • 每个人任务要有挑战
  • 有依赖的任务,合理安排任务顺序
  • 每个任务尽量独立,有一个主题

技巧二:工期估算

  • 任务时间线和每个人沟通达成一致。并尊重对方意见
  • 估算往往需要技术领导者给出建议,除此之外,最好留出一些缓冲时间

技巧三:实时跟踪,并准备好B计划
细分重组后, 要定一些长期的大目标和一周二周的短期小目标。有了这些目标,管理者就可以实时跟踪了,一旦出现问题,要根据情况严重性选择是否调整计划。

3.8 不要做微观管理者

给组员足够的自由度,管理者只需要告诉组员做什么,什么时候做完就好了;管理既不能过度关注和掌控细节,也不能简单的给了目标就放任自流。

  • 因人而异:最大程度的发挥每个人的长处,并帮助他在欠缺的方面成长,所谓用人用其长
  • 因事而异:紧急的事情自己介入,试错空间可以让组员试试完成,给组员创造发挥的空间
  • 跟进的粒度:确立目标;多指导,少亲手做(管理者的存在不是分担实际工作,而是提供资源和背后支持力量);设定频率,保持跟进,了解对方是否需要帮忙;交流难点,给出建议,出了问题,要了解是能力有限,资源不够,还是时间紧张。
  • 交流的重要性:要求是必须完成的,建议是对方在思考后自己决定怎么做

最后:用动态的眼光看待每个人的能力,因为每个人都在成长。

3.9 兼容并包的领导方式

包容性领导的六个特征:

  • 坚定的承诺,平等对待每一类人
  • 谦卑的勇气,客观看待自己的优缺点,谦虚对他人
  • 正确的认知,领导者需要知道自己和企业的盲点和解决方向
  • 开放的心态,真诚渴望了解不同人的看法
  • 高情商,愉快合作和交流
  • 合作的意愿,给每个人机会和空间

3.10 激发团队人员的责任心

明确责任制,对某一块业务的完全决定权

出了问题是要承担责任的,出了问题,不光要解决问题,还要明确后期怎么预防,有效的责任制是在开始的时候就让所有人明确责任和权力,而不是事后追究责任。

要用关心的口吻,而不是追究的态度,让对方了解到问题出在哪里,不要为了做好人而什么都不说,那样只会让小问题发展成大问题。
最后,尽可能让团队成员充满归属感。除此之外,管理者还应该以身作则,让员工看到自己的努力,对公司目标的追求。真诚对人,能够站在员工的角度考虑问题,认可并鼓励。

3.11 系统开发中的“攻城”于“守城”

接手别人的项目并修复BUG比重头开始更长经验,有时候可以尝试去理解前一个人的想法,而不是一味的重构。

3.12 说说绩效评估这件事

奖励能干的、贡献大的;激励能力不够的,或者对公司贡献不明显的。
评估要看技术能力,项目影响力,沟通协调能力,推进新事物的能力,对别人的帮助,按时完成等。

评估的弊端:
绩效不好的可能会离职,年中和年终评绩效前后阶段,绝对是挖人的最好时期。
绩效评估是一个又爱又恨的事情,但是大公司还是需要这个机制。

3.13 公司增长:关于工程师的跨组协作

  • 明确每个组的职责范围
  • 跨组怎么保证项目按期完成?会议小而精,切实解决问题,会议不是传达信息、决定的。信息传达可以用邮件
  • 需求改动,延期或增加资源或砍需求
  • 时间线

确定新的领导人:

  • 提拔组里资深工程师 (技术人在管理和沟通方面还要学习)
  • 招聘外面的有经验的人(是否真的掌握全面的技术,是否不照搬不靠谱的模式)

3.14 论一线技术领导者的基本素养

什么样的技术领导者才是好的技术领导者呢?

  • 他的存在推进了公司的成功,尤其是与技术方面相关的成功
  • 他的存在促进了团队每个工程师的成功,帮助他们获得成长

要做到这2点需要一是利用自己能了解到的有限情况做出正确的决定;二是利用组里的工程师高质量完成关键的项目。

技术领导者必须对系统设计了如指掌,一个优秀的领导者,在并不亲自写代码的情况下,应该了解到所有方案的优缺点,考虑到所有的技术和非技术因素,迅速的给定限制条件下做出最正确的决定,这是最重要的技能。

技术领导人和产品经理的区别:

  • 他首先是一个技术人,所以这里说的不仅是项目要做什么,还包括软件架构和技术选型。
  • 充分调动每个工程师的潜力
  • 帮助组员清除路障

领导人的关键应该是全局掌控,提前清楚项目可能遇到的障碍,这些障碍可能是沟通、解决方案、不合理需求、很多时候,技术领导者花费了很多精力在这些上面,所以他们没有那么多的时间投入到写代码上面。但是他们的成功,其实在于帮助团队里的工程师成功。

四、总结

一个技术管理者的成功并不在于自己写的代码多好、能力多强,其成功一定是建立在团队成功的基础上。只有团队成员不断成长,这个团队才可以完成更大的挑战,技术管理者才可以在团队的基础上,站的更高、看的更远。管理要贯穿始终,要带领团队打胜仗。管理的工作是琐碎的,需要经常性总结和思考,需要沟通,更需要细细体会。


书摘

成长不是顿悟,而是练习 – 朱赟。
“事事顺心的时候,勇气来得也容易;但是当生活变得艰难,勇气就弥足珍贵了。“ 电影 《清洁》
比如郭德纲每次介绍于谦基本都有这个:“单丝不成线,独木不成林,人浑身是铁能捻几根钉”。意思就是一个人力量有限,要靠别人的帮助才能成功,人多才能力量大。
一个技术管理者的成功并不在于自己写的代码多好、能力多强,他的成功一定是建立在团队成功的基础上。只有团队成员的不断成长,这个团队才可以完成更大的挑战,技术管理者才可以在团队基础上,站的更高,看的更远。

管人->团队目标,成长(包括业务和技术),协作
管项目->项目需求,流程,进度,质量
管自己->全局把握,清障碍,了解DB、算法、架构设计、测试软件和软件质量、监控和告警,建立对系统进行监控的习惯。

包容性领导的6个特征:

  • 坚定的承诺
  • 谦卑的勇气
  • 正确的认知
  • 开放的心态
  • 高情商
  • 合作的意愿

Accountability 不是自发的,而是通过交涉、讨论、约定,决定最准由谁来负责,并要求责任人同意负责这件事。
Responsibility 是责任心和责任感,是一种更强烈的自发的责任,员工从内心深处觉得自己对某件事、某种集体利益和荣誉具有不可推卸的责任。

Bug 引发了事故,只是去修复bug,bug是怎么产生的,造成了什么影响,后续改如何预防?

项目延期了,只想延期后项目完成的时间点,项目为什么会延期?如何赶上进度?是外部资源支持问题还是内部问题?

如何激活团队人员的责任心呢?

  • 明确责任制(授权某人独立做一件事)
  • 有效的责任制
  • 归属感的建立

一个技术管理者的三个工作

  • 团队成员成长, 授权 VS 亲力亲为,指导、反馈、监督、交流
  • 明确的分解和布置任务,包括界定需求边界、计划、工作授权
  • 有效的沟通合作,上级、下属和相关部门(沟通能力-会议,邮件,一对一面谈;拒绝不合理需求;有三(七)分话不说五(十)分话)

帮助团队成员成长中,是否用静态的思维去对待团队成员的成长?
管理和被管理中期望值差异如何避免?信任,沟通。
你不能每次都给答案,试着用引导的方式让对方学会自己找答案,看别人的程序和别人交流。
团队目标是优先于个人目标的,浑身是铁能捻几根钉?那怕自己做事再快,24h不休息,也不能亲力亲为全部完成。