俗话说:“不想成为架构师的程序员,只配叫码农” 。架构师不止是一个技术岗位,也是程序员职业修炼路程中需要达到一种“武功境界”。 为什么说研发团队中的每个人都应该了解一些架构知识,甚至亲自参与架构的相关工作? 首先,我们先从宏观上说一说架构师的职责: 1. 需求分析,规划全局。作为一名架构师需要了解市场、了解产品,有全局意识。可以确立关键需求、为团队指明方向。 2. 架构设计,提供配套方法论。指明方向后,需要确保团队在一套标准方法下执行任务,并且每个人都有清晰的任务指导。 3. 功能设计,将计划落地,真正实现技术驱动业务。 从这些职责我们可以看出,成为一个优秀的架构师,需要具备很多能力,在学习架构知识的过程中,研发人员也可以提高以下几方面的能力: 1. 思维能力:良好的抽象思维、分治思维、复用思维和迭代思维。这些能力直接决定了你能解决问题域的复杂性和规模大小。 2. 业务需求理解力:能很好地理解业务需求,能针对业务特点设计好的架构。无论是架构师还是其他职位的研发人员,善于理解业务需求,可以帮助你从技术领域走出来,站在更高的角度去找到技术和业务之间的平衡关系。 3. 丰富的编码经验:像抽象、分治、复用这些能力,都需要大量的编码练习才能掌握;另外保持一定量的编码经验也有助于验证架构设计。 4. 良好的沟通能力:架构师需要沟通确认需求,需要让团队理解架构设计。其实在团队中无论哪个职位都需要和他人沟通,掌握了沟通能力,也有利于团队协作。 想学习架构知识、成为好的架构师,没有什么捷径,你需要比普通程序员付出更多的努力,积累经验、拓展视野、深度思考。有意识地培养自己的架构师思维,心有大局观,从而能理解架构设计,能写出好的程序。 正确的努力方式有助于我们更快、更好地学习架构知识、实现成长进阶。 在思想上,首先需要跳出当前的小模块,站在系统整体的角度来考虑问题。其次,不仅要从技术的角度思考问题,也要从业务的角度思考问题。最后,要平衡现有资源,寻求最优解。 在行动上,最好的方法是从实战中学习。可能大部分技术人平时工作对架构设计的要求不高,没有特别好的实践机会。这就很难把了解到的一些架构原则变成自己真正的能力。所以,这就要求我们找到系统性学习架构的方法。而不是随便找本书,上网搜搜网站就可以,这样学习到的知识比较碎片化,没有系统性,很难循序渐进地学习架构。 在这里,推荐一个福利:极客时间「架构师系列课程」面向企业免费开放啦,你可以召唤自己研发团队的小伙伴一起来学习,每人都可以领3门课。架构师系列包含18门体系化的课程,超过29万用户已加入学习。导师们精心规划了学习成长路径,由浅入深,层层递进,高效进阶。从初级架构师到高级架构师,都能找到适合自己学习的课程。扫码了解活动详情: 对于初级架构师来说,需要学会独立完成一个系统的架构设计,可以是从0到1设计一个新系统,也可以是将架构从1.0重构到2.0。 初级架构师最主要的是形成自己的“架构设计方法论”,方法有很多,比如订阅专栏,阅读系统知识书籍。也可以研究比较成熟的系统架构设计,学习架构设计原理和思想。在此基础上,要根据所学知识,分析自己团队的架构设计优缺点,尝试重新设计、重构方案。对于中级架构师来说,需要学会完成复杂系统的架构设计,包含高性能、高可用、可扩展、海量存储等复杂系统,例如设计一个和Kafka性能匹敌的消息队列系统、将业务改造为异地多活、设计一个总共100人参与开发的业务系统等。 中级架构师开始接触系统复杂度高的架构设计,最关键的是“技术深度和技术理论的积累”,例如:
成长为高级架构师需要 10 年以上时间,其典型特征是“创造新的架构模式”,高级架构师与中级架构师相比,典型区别在于“创造性”,高级架构师能够创造新的架构模式,开创新的技术潮流。 列举几个可能诞生创造性架构的背景: |