杨二

Machine repeats, Human creates

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

jump pic

一个人很难通过积累对事务负责的经验来学会如何为团队负责,这也意味着成为管理者的道路通常不是按部就班的渐进,而是焕然而至的跃迁。

事事顺心的时候,勇气来的也容易;但是当生活变得艰难,勇气就弥足珍贵了。 --电影《清洁》

技术管理包含两层含义:一层是管理自己和团队的技术,进行技术选型,在正确的场景使用最适合的技术,保证程序简洁、强壮、可维护,最终完成产品的上线;另一层是管理技术团队,帮助他们成长,把事情做成。

从给答案到引导

直接把答案告诉对方可能只需要 5 分钟,而和对方坐下来一起梳理问题,找到解决方案,帮助他自己想明白,可能要花费半小时。

首先,什么时候适合直接给答案,什么时候适合给线索让对方自己找答案。其次,如何引导:问对方正确的问题。最后,引导的好处是什么?如果能调起工作积极性,大概就是好的引导。

任务分配

作为一名管理者,我们在授权和分配任务的时候应该注意以下方面:第一,让对方明确目标,知道最终要得到的结果是什么,对这个任务完成的期望值是什么样的。第二,指定一个计划,并保持跟进。第三,给出反馈,尤其是正面的反馈。

微观管理

管理者既不能过度关注和掌控过多细节,也不能简单地给了目标就放任自流:

因人而异:有的人善于思考,有的人擅长交流,有的人专注执行。我们要做的,是最大程度调动并发挥每个人的长处,并帮助他在欠缺的方面获得更快的成长。所谓用人用其长,就是这个道理。

因事而异:如果单个任务有一定试错空间,或者不在项目的关键路径上,不妨放手让组员尝试独立完成。

跟进的粒度

  1. 确立目标,确保传达
  2. 多给知道,少亲手做
  3. 设定频率,保持跟进
  4. 交流难点,给出建议

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

一是挖坑,也就是定义项目,决定要做什么。

二是充分调动每个工程师的潜力。有些工程师是技术痴,对纯技术的东西更有钻研精神;有些工程师比较善于处理业务逻辑;有些工程师对于项目快速启动并进入状态特别擅长;有些工程师可以很耐心地打磨细节,收尾工作总能做得特别好;有些工程师非常全能。

三是帮组员清除路障:可能是跨组的沟通和协调;可能是一个技术点寻求解决方案;可能是拒绝一些产品上不合理的要求;甚至是调动组内生产力低下的工程师积极性。

API 框架的考虑

  1. 对访问权限的统一控制
  2. 对自动测试的支持
  3. 对请求和响应的格式,以及序列化和反序列化的支持
  4. 对日志和日志过滤的支持
  5. 对自动文档生成的支持
  6. 对架构和性能的影响

怎样让自己成为不可替代的程序员

  • 第一,是某个领域的专家,具有很多领域特有的专业知识。

这里说的领域,更多的是“横跨”的领域,而不是“纵深”的领域。

  • 第二,执行力和判断力很强,几乎达到传说中“一个人定一个团队”的水准。

执行力强,能最短时间成事,绝对是程序员的一大优势。

  • 第三,在团队中有凝聚力,对整个团队的执行力起增倍的效应。

有时候,纯粹的正确不一定是正确的,纯粹的好人也不一定是好人。现实中,哪怕你在桩桩件件事上都占据道理,但是对项目、产品不能审时度势,不能权衡利弊,死死坚持技术上的“正确性”,这也是不行的。

论程序员的自我修养

  1. 不会想当然。看似及其容易具备的一种品质,却在实际工作中被视为最珍贵的品质之一。
  2. 一定要正确。工程师是一个要求极其严谨的职位,没有太多的容错性。
  3. 保持透明。任何时候不要存侥幸心理。事实证明,这种事本来按程序来不会有什么大问题,一旦钻空子,往往就会惹祸。这也是衡量一个工程师办事可靠性的重要标准。
  4. 有始有终。能不能有始有终地将一件事从头到尾完完整整地负责任贯彻,也是工程师很重要的一个考察标准。
  5. 有责任心,觉得事实与自己相关,而不是无关。
  6. 努力,在自己能力范围内烂货而不推活,这对自己的成长也是不可或缺的。
  7. 具有对系统进行监控的习惯。
  8. 助人为乐。
  9. 具备较强的任务管理能力。
  10. 愿意把问题放大,而不是缩小。在软件世界里,任何一个小问题都有可能变成大问题。
  11. 保持乐观,积极向上。