说完了重要性和难点,终于进入正题,可以开始聊具体的建议了。 Tip 1:心态平和地去接受实际。就像上文描述的,管理者的 KPI 不是代码实现,不是系统计划。管理者也应该明白上述的难点。所以,一定要心态平和地去接受。你不会像在 IC 时那样,对代码和系统如数家珍。我自己在刚作为管理者时,就犯过一个错误:我一直要求自己能够继续 review 大部分的团队成员代码来保证我对系统的明白。每个人的时间是有限的,这就导致我在其他方面做得不好。 Tip 2:在成为管理者之前,打好基础和内功。在还是 IC 的时候,你的主要职责就是代码开发和系统计划。一定要在这个阶段打好基础,做到厚积薄发。IT 已经发展到很难做到在各个细分领域都精进,但我们依然提倡 T 型人才:在自己的领域可以非常深挖,同时,对于其他领域和业务,需要有所涉猎并快速明白。 Tip 3:抓重点,从关键指标来相识系统。作为管理者,你依然需要非常清晰地知道团队构建的系统是用来做什么的:用来支持什么业务,有哪些关键指标, 哪些关键技术细节,如 QPS 是多少?是否需要强一致性?是否是夸区域部署,技术栈,等等。我觉得管理者可以从黑盒角度来认知系统。 Tip 4:参与系统计划面试。这是我最喜欢的 tip,自己也是坚持贯彻执行。参与系统计划面试对于面试官的技术深度非常有考验。大家可能觉得,系统计划的题目是固定的,作为面试官可以提前准备,会从各个角度去参考,好,中,差的计划决定。诚然,比起候选人,面试官是有先发优势的。但在面试的过程中,你永久不知道候选人会提出什么样,天马行空的计划思绪,大概题目。这就需要面试官在短时间内针对提出的计划思绪和题目来做判断,这非常考验面试官的技术积累。你不希望被候选人套路,同时也不希望给候选人留下“这个面试官好像不太行”的印象。另一个好处就是,你真的可以从有经验,技术背景很强的候选人中学到很多,受益匪浅。末了就是上文提到的,作为面试官,如果你能在面试中也表现出深厚的技术积累,做到让候选人英雄惜英雄。是更容易吸引候选人参加的。 Tip 5:参与变乱复盘会议。通常复盘会议是用来讨论严重的用户变乱的(好比,欧洲用户无法登录 WhatsApp 大概发送消息)。复盘会议会讨论变乱细节,如变乱影响,是怎么被发现的,怎么被修复的,更重要的是,怎么能够制止雷同变乱再次发生。参与复盘会议,雷同于从关键维度来相识系统。 Tip 6:持续学习。套用现在时髦的话来说,终生学习。我们很幸运,处在 IT 领域,有幸参与了软件行业改变世界。同时,我们也不那么“幸运”,由于行业发展太快,需要不停去学习新知识,新趋势,区块链,人工智能,IOT。不然,很快就被淘汰了。平常的工作总是有局限性,不能覆盖广度。不过好在,现在有很多其他的途径可以学习。 一是通过 follow 各类 tech blogs。我曾在知识星球上分享过自己 follow 的 tech news 和 blog。贴在这里,和大家一起讨论。
High Scalability: 不需要特殊介绍了吧。会定期搜集最新的业界新闻,大佬 tweet, Talk 和 blog。号称面试必看。。。(讲真,作为一个资深面试官,我希望大家是真的吃透,而不是就看几篇 blog,会几个 buzz word 就大谈高可用,高扩展,所以光看 blog 是搞不定面试的)但是感觉现在质量和频率有下降;
LinkedIn Eng Blog:LinkedIn 也是比力注重开源和分享的;
Luc Perkin 的个人博客:得知他是从一本书,Seven Databases in Seven Weeks: A guide to modern databases and the NoSQL movement。老哥的更新比力慢,书还是很推荐的: https://7dbs.io/;
Martin Fowler 老爷子的博客:老爷子也不消多介绍了吧,OODesign,UML Modeling。老爷子的博客会分享些架构啥的,而且还会分享自己拍的照片,挺逗的;
Martin Kleppmann 的个人博客:得知他也是从一本书,强烈推荐他的 Designing Data-Intensive Applications(这本书是强烈推荐!);
The morning paper(https://blog.acolyer.org/): 一个叫 Adrian Coyler 的维护的专门介绍盘算机 research paper 的网站。这个真的是我自己压箱底的。Adrain 的分享非常深入浅出,读他的 blog 对整篇 paper 就能有个大概相识。前阵子停更了,Adrain 说家里有亲人患上了新冠病毒(Adrain 在英国应该),好在一切都逐步恢复了;