前两天看了内部的一个直播,主讲人花名是毕玄,我一看本名是林昊,就觉得很熟悉。因为我在大学时读过他的一本书,名字叫《分布式 Java 应用:基础与实践》,是这本书为我打开了 Java 世界的大门,我接受到的很多新奇有用的知识都来自于此。看到这个名字当然亲切。

    毕玄,本名林昊,阿里巴巴 HSF 创始人,在淘宝的十余年里完成了电商架构的多次升级,现视频云团队负责人。著有《分布式 Java 应用:基础与实践》、《OSGi原理与最佳实践》。

    毕玄在这次的分享里,主要谈了技术人员的成长,包括职业程序员需要具备的素质、架构师面临的挑战以及技术 Leader的方法论。

    【职业程序员】

    毕玄提到,程序员贵在专业。一个程序员水平如何,其实几行代码就能看出来。看的不是实现功能使用了多么炫酷的技术,而是对异常逻辑的处理。针对预期之外的入参,系统是正常运行还是立即崩溃。优秀的程序员,对代码的保护是非常强的,而不仅仅是实现功能,这体现着程序员的职业素养。

    毕玄举了很多例子,比如因为程序没有控制入参长度,遇到特殊场景传入了超级长的字符串,结果吃爆内存。再比如历史上有次损失几亿美金的软件故障导致美国宇航局卫星发射失败,仅仅源于各国程序员对 kg 不同的理解,使用了自己认为的度量单位,导致计算出错。

    专业性很重要,专业不强,基本在犯错。

    【架构师】

    淘宝架构,1.0 php,2.0 单体 Java,3.0 分布式 Java,4.0 异地多活。毕玄完成了 3.0 到 4.0 的升级,但这个名字却是在结束之后才强加上去的。

    对于架构师,毕玄认为:架构师要在技术领域有很深的积累,同时要有比较广的知识体系。架构师不需要什么都懂,但要能搞清楚系统边界,能做好技术选型。知识面广,在做选型的时候不会出现太大的偏差。架构师的决策很重要,需要平衡很多东西,平衡业务,稳定性,风险,节奏。因此架构师很大的问题在于选择。达到一个目的有很多方案,关键是选哪个方案。

    架构师也要有规划能力。一次架构升级,架构师要决定,分几年做完,几年的节奏是怎样的。有些事情不允许改,不允许错,必须提前做好准确的计划,比如机房的部署,一旦选定某个地方,就不能轻易改变。

    架构师要了解技术领域在工程界的排名,不能自大。不怕落后,就怕不知道自己落后。技术所有的壁垒,是时间的壁垒。

    架构师的底线,是要有个核心,核心的设计是整个系统最为重要的,所有子域系统的设计必须围绕这个核心展开。并且上线的系统是可以被论证的,能够符合设计原则。

    技术可以有信仰,有立场,但不能东倒西歪,摇摆不定。

    【技术 leader】

    技术leader要求有很强的方向感,这种方向感其实是很难培养的。leader 要能对团队的方向有深入的思考,并且能比老板更专业。充分想清楚可以做什么,再和 leader 沟通。

    不同级别的 leader 的区别在于解问题的范围不一样,有人解团队的问题,有人解 BU 的问题,像逍遥子就是在解社会的问题。

    技术 leader 应当学会信任别人,学会放手。花更多的时间思考团队的方向,思考匹配这个方向的组织阵型,每个角色的成长空间,排兵布阵。

    一切都是知易行难。

    【其他观点】

    兴趣很重要,兴趣能够保障好永远的热情。

    什么是技术深?不仅仅是某个技术工具运用娴熟,对于业务开发而言,业务系统的复杂度,比如复杂的营销规则能够用几句话讲清楚,也算技术深。

    【我的感悟】

    听完毕玄大佬的直播分享,给我的整体感受就是,一路走下来的他,都是技术线和管理线阶梯式成长。从普通的程序员到职责不断扩大的架构师,再到参与未来规划和组织管理的技术 leader,踩过很多坑,犯过很多错,发生过很多有趣的故事,也取得过重量级的成功。很多时候,站在巨人的肩膀上做事情,虽然不会避开一些障碍,但能吸取前人经验快速跳过这些障碍。前辈们很多的做事风格以及考虑问题的思维值得学习。

    image.png