授人以渔。对工程师而言,「鱼」即知识点,「渔」则为实战方法论。技术类文章通常聚焦于知识点,而本专栏则侧重于实战方法论,力求授读者以渔。
服务于实践。本专栏内容源于实践,是阿里系 4 位资深工程师、高级专家多年实战经验的总结,内容涵盖架构设计、模型设计、性能优化、异常排查、职业发展、学习成长等多个方面。
工程师进阶之选。在进阶之路上,仅仅掌握领域知识点并不足以应对激烈的职场竞争。掌握实战方法论可以让你事半功倍,同时扩展视野、提升水平。
面试必备。在高级工程师的面试中,领域知识不再是绝对的重点,面试官更关注的是应聘者的思考和沉淀,一套可复用的方法论或最佳实践是一名优秀工程师的必备技能。
适用面广。本专栏有 3 篇文章使用 Java 语言描述,但关于架构设计、模型抽象、稳定性保障、学习成长等方面的内容与编程语言和技术栈无关,感兴趣的读者均可作为参考。
一图胜千言。为了帮助读者更好地理解工程项目中复杂的关系和概念,作者为每篇文章都制作了生动而准确的示意图,让你在图文并茂的内容中更快掌握知识。
工程师在经历一系列项目实践的洗礼后,在业务建模、系统设计、性能优化、异常排查、稳定性设计等方面会形成一套可复用的方法论或最佳实践,这是工作经验的核心价值所在,也是普通工程师和高阶工程师的分水岭。
然而,在大、中型项目中,一名工程师通常只负责某个模块的设计和实现,这样的分工协作模式在提升效率的同时,也容易让人产生惰性,逐渐退化成「螺丝钉」—— 只关注自己的「一亩三分地」,囿于局部,缺乏对项目全局的洞察。随着时间的推移,这样的工程师只会做自己擅长的,或者只被安排做自己擅长的。缘于这类因素,很多工程师虽然参与过很多项目,但趋于同质化,技术视野局限,缺少「沉淀」。
笔者在阿里长期负责技术面试,在过往的面试中,很多工作 3~5 年的应聘者虽然领域知识熟练,但是,当问及方法论相关的话题,如:过往项目中你是如何建立业务模型的?你做系统设计的路线(套路)是怎样的?你是怎么做系统性能优化的?你是怎么做稳定性设计的?你排查系统异常的思路是怎样的?到新公司如何熟悉一个陌生的系统?你觉得一个好的 API 应该怎样设计?应聘者大都只能给出一些缺乏条理的零碎点。
由于这类原因,应聘者的能力模型往往会被面试官减分。实战方法论与单纯的知识点不同,知识点可以通过阅读和实践快速积累,但要上升到方法论却需要辅以思考和总结,这正是很多工程师所欠缺的。在职业进阶之路上,从技术熟练者到思考者的转变是无法跳过的一步。
工程方法论源自实践,是经验的归纳总结,并不虚幻。比如工程师熟悉的 23 种设计模式,就是一种设计方法论,它可以指导开发者设计出优雅的程序。再比如阿里的 Java 开发规范,是众多阿里工程师经年累月踩坑经验的集合,借鉴后可避开很多坑。
本专栏是 4 位阿里系资深工程师和专家多年工作经验和日常思考的总结。源自实践,服务于实践。
本专栏共十二个主题,每个主题 1~ 4 篇文章,内容包括架构设计、模型设计、性能优化、异常排查、职业发展、学习成长等方面。
主题 1: 如何设计一个好的 API
良好的 API 设计可以让使用者高效使用一个系统的能力,同时也可以极大减轻技术支持的工作量。文章将结合实践为读者呈现怎样才能设计出良好的 API 。
主题 2:如何设计预案
预案的本质是为系统稳定性服务的。在互联网领域,从系统设计、编码实现到后期维护,预案几乎贯穿全程。对于工程师,特别是大型应用的工程师,预案(稳定性)设计能力尤为重要。
主题 3:如何设计模型
模型设计是一个从整体到局部、从具体到抽象,自上而下设计、自下而上验证并不断迭代完善的过程。模型设计是软件系统设计中极为关键的环节,因此,欲进阶必须掌握模型设计方法。
主题 4:如何设计一个复杂的系统
系统设计是高阶工程师的必备能力,设计出完备、健壮、优雅、前瞻的系统是工程师永恒的追求。本主题分为上、下两篇,由两位资深工程师合作完成,将带领读者掌握系统设计的思考框架和设计套路。
主题 5:如何评估软件系统的吞吐量
在实践中经常会遇到需要进行系统性能优化、提高系统吞吐量的场景。那么,系统的吞吐量与哪些因素有关呢?如何评估?是否有方法论可循?如果在面试中遇到这样的提问,你是否能从容应对?
主题 6:如何高效地排查 Java 系统异常
衡量系统性能的常用指标有哪些?当系统运行中出现问题时,如何通过这些指标量化地评价系统的状态并定位问题?理解系统性能指标、掌握排查系统问题的方法,是软件工程师进阶的必备技能。
主题 7:如何进行 Java 系统性能优化
系统性能优化涉及面非常广,涵盖方案优化、编码优化、并发优化、JVM 调优等诸多方面的知识。虽然不同系统的优化策略存在差异,但从全局来看,它们的共性仍是主要的。本主题将分为上、下两篇。
主题 8:如何熟悉一个完全陌生的系统
在职业生涯中难免遇到以下场景:入职新公司,如何有条不紊地熟悉已有系统?支援陌生系统开发,如何快速上手?同事离职,如何快速接手相关系统?面对这些情况,梳理一套方法论,从而有序、高效地应对。
主题 9:如何画好系统设计图
系统设计图是一种整体视图,目的是具象呈现软件系统的整体轮廓、各个组件之间的相互关系和约束边界,以及物理部署和演进方向。一图胜千言,在项目评审、晋升答辩、内部培训中,画好系统设计图都大有裨益。
主题 10:如何将工作中的创新点转化为专利
阿里、腾讯、华为等知名企业都很注重专利并设置了专利奖励,但在专利挖掘方面,技术人常常陷入误区:技术不够牛不能申请专利?尚未实现的技术方案不能申请专利?本主题将结合案例详解专利的挖掘方法和误区。
主题 11:如何打造能力护城河
近些年,中年危机话题甚嚣尘上,互联网领域的工程师焦虑尤甚。对于工程师,为长久计,必须打造自己的能力护城河。本主题由一位正值中年的资深技术专家撰稿,分享其在过往职业生涯中构建、完善自身能力体系的经验。
主题 12:实践案例集锦
本专栏最后一个主题由 4 篇文章构成,内容取材于阿里的典型应用实践,涉及系统架构、业务模型抽象、稳定性保障、推荐等方面,将以真实的案例诠释实战方法论。
本专栏由 4 位作者共同完成,应书澜作为主要贡献者,负责全文统稿。
订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。
订阅本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 3 篇文末说明)。
授人以渔。对工程师而言,「鱼」即知识点,「渔」则为实战方法论。技术类文章通常聚焦于知识点,而本专栏则侧重于实战方法论,力求授读者以渔。
服务于实践。本专栏内容源于实践,是阿里系 4 位资深工程师、高级专家多年实战经验的总结,内容涵盖架构设计、模型设计、性能优化、异常排查、职业发展、学习成长等多个方面。
工程师进阶之选。在进阶之路上,仅仅掌握领域知识点并不足以应对激烈的职场竞争。掌握实战方法论可以让你事半功倍,同时扩展视野、提升水平。
面试必备。在高级工程师的面试中,领域知识不再是绝对的重点,面试官更关注的是应聘者的思考和沉淀,一套可复用的方法论或最佳实践是一名优秀工程师的必备技能。
适用面广。本专栏有 3 篇文章使用 Java 语言描述,但关于架构设计、模型抽象、稳定性保障、学习成长等方面的内容与编程语言和技术栈无关,感兴趣的读者均可作为参考。
一图胜千言。为了帮助读者更好地理解工程项目中复杂的关系和概念,作者为每篇文章都制作了生动而准确的示意图,让你在图文并茂的内容中更快掌握知识。
工程师在经历一系列项目实践的洗礼后,在业务建模、系统设计、性能优化、异常排查、稳定性设计等方面会形成一套可复用的方法论或最佳实践,这是工作经验的核心价值所在,也是普通工程师和高阶工程师的分水岭。
然而,在大、中型项目中,一名工程师通常只负责某个模块的设计和实现,这样的分工协作模式在提升效率的同时,也容易让人产生惰性,逐渐退化成「螺丝钉」—— 只关注自己的「一亩三分地」,囿于局部,缺乏对项目全局的洞察。随着时间的推移,这样的工程师只会做自己擅长的,或者只被安排做自己擅长的。缘于这类因素,很多工程师虽然参与过很多项目,但趋于同质化,技术视野局限,缺少「沉淀」。
笔者在阿里长期负责技术面试,在过往的面试中,很多工作 3~5 年的应聘者虽然领域知识熟练,但是,当问及方法论相关的话题,如:过往项目中你是如何建立业务模型的?你做系统设计的路线(套路)是怎样的?你是怎么做系统性能优化的?你是怎么做稳定性设计的?你排查系统异常的思路是怎样的?到新公司如何熟悉一个陌生的系统?你觉得一个好的 API 应该怎样设计?应聘者大都只能给出一些缺乏条理的零碎点。
由于这类原因,应聘者的能力模型往往会被面试官减分。实战方法论与单纯的知识点不同,知识点可以通过阅读和实践快速积累,但要上升到方法论却需要辅以思考和总结,这正是很多工程师所欠缺的。在职业进阶之路上,从技术熟练者到思考者的转变是无法跳过的一步。
工程方法论源自实践,是经验的归纳总结,并不虚幻。比如工程师熟悉的 23 种设计模式,就是一种设计方法论,它可以指导开发者设计出优雅的程序。再比如阿里的 Java 开发规范,是众多阿里工程师经年累月踩坑经验的集合,借鉴后可避开很多坑。
本专栏是 4 位阿里系资深工程师和专家多年工作经验和日常思考的总结。源自实践,服务于实践。
本专栏共十二个主题,每个主题 1~ 4 篇文章,内容包括架构设计、模型设计、性能优化、异常排查、职业发展、学习成长等方面。
主题 1: 如何设计一个好的 API
良好的 API 设计可以让使用者高效使用一个系统的能力,同时也可以极大减轻技术支持的工作量。文章将结合实践为读者呈现怎样才能设计出良好的 API 。
主题 2:如何设计预案
预案的本质是为系统稳定性服务的。在互联网领域,从系统设计、编码实现到后期维护,预案几乎贯穿全程。对于工程师,特别是大型应用的工程师,预案(稳定性)设计能力尤为重要。
主题 3:如何设计模型
模型设计是一个从整体到局部、从具体到抽象,自上而下设计、自下而上验证并不断迭代完善的过程。模型设计是软件系统设计中极为关键的环节,因此,欲进阶必须掌握模型设计方法。
主题 4:如何设计一个复杂的系统
系统设计是高阶工程师的必备能力,设计出完备、健壮、优雅、前瞻的系统是工程师永恒的追求。本主题分为上、下两篇,由两位资深工程师合作完成,将带领读者掌握系统设计的思考框架和设计套路。
主题 5:如何评估软件系统的吞吐量
在实践中经常会遇到需要进行系统性能优化、提高系统吞吐量的场景。那么,系统的吞吐量与哪些因素有关呢?如何评估?是否有方法论可循?如果在面试中遇到这样的提问,你是否能从容应对?
主题 6:如何高效地排查 Java 系统异常
衡量系统性能的常用指标有哪些?当系统运行中出现问题时,如何通过这些指标量化地评价系统的状态并定位问题?理解系统性能指标、掌握排查系统问题的方法,是软件工程师进阶的必备技能。
主题 7:如何进行 Java 系统性能优化
系统性能优化涉及面非常广,涵盖方案优化、编码优化、并发优化、JVM 调优等诸多方面的知识。虽然不同系统的优化策略存在差异,但从全局来看,它们的共性仍是主要的。本主题将分为上、下两篇。
主题 8:如何熟悉一个完全陌生的系统
在职业生涯中难免遇到以下场景:入职新公司,如何有条不紊地熟悉已有系统?支援陌生系统开发,如何快速上手?同事离职,如何快速接手相关系统?面对这些情况,梳理一套方法论,从而有序、高效地应对。
主题 9:如何画好系统设计图
系统设计图是一种整体视图,目的是具象呈现软件系统的整体轮廓、各个组件之间的相互关系和约束边界,以及物理部署和演进方向。一图胜千言,在项目评审、晋升答辩、内部培训中,画好系统设计图都大有裨益。
主题 10:如何将工作中的创新点转化为专利
阿里、腾讯、华为等知名企业都很注重专利并设置了专利奖励,但在专利挖掘方面,技术人常常陷入误区:技术不够牛不能申请专利?尚未实现的技术方案不能申请专利?本主题将结合案例详解专利的挖掘方法和误区。
主题 11:如何打造能力护城河
近些年,中年危机话题甚嚣尘上,互联网领域的工程师焦虑尤甚。对于工程师,为长久计,必须打造自己的能力护城河。本主题由一位正值中年的资深技术专家撰稿,分享其在过往职业生涯中构建、完善自身能力体系的经验。
主题 12:实践案例集锦
本专栏最后一个主题由 4 篇文章构成,内容取材于阿里的典型应用实践,涉及系统架构、业务模型抽象、稳定性保障、推荐等方面,将以真实的案例诠释实战方法论。
本专栏由 4 位作者共同完成,应书澜作为主要贡献者,负责全文统稿。
订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。
订阅本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 3 篇文末说明)。
绑定成功