了解基本的设计模式:模式是架构师开发可维护系统所需的最重要工具之一。基于这些模式,你可以把一些已经在其他问题上奏效的方案迁移到一些模式相同的新问题上。「Gang of Four」(GoF) 所著《Design Patterns: Elements of Reusable Object-Oriented Software》是所有从事软件开发的人的必读书。尽管这些模式发布于 20 多年前,它们仍是现代软件体系结构的基础。例如书中的模型-视图-控制器(Model-View-Controller,MVC)模式就被应用于许多领域,它同时也是一些新模式(如 MVVM)的基础;
再挖深一点,研究一下模式与反模式(anti-pattern):如果你对 GoF 所写的模式具备全面的了解,那么你就可以学习更多的软件设计模式了,或者深挖你感兴趣的领域。在应用集成领域,我最喜欢的一本书是 Gregor Hohpe 编写的《企业集成模式》。当两个应用需要交换数据时,无论是来自一些遗留系统的老式文件交换还是现代微服务体系结构,这本书的内容都适用;
尝试并理解不同的技术栈:我认为这是你成为更好架构师之路上最重要的一步。尝试新的技术栈,并了解其发展历程。这些不同的技术具有不同的设计理念和模式。只浏览 PPT 学不到太多东西,你需要自己去尝试并感受这项技术的喜与悲。架构师不仅要有广博的知识面,还要在一些领域有深厚的积累。重点不在于掌握所有的技术栈,而是对你所在领域最重要的技术有坚实的理解。你还可以尝试一些领域外的技术,例如,如果你对 SAP R/3 有很深的了解,你应该尝试一下 JavaScript,反之亦然。尽管如此,双方都会对 SAP S/4 Hana 的最新进展感到惊讶。例如,你可以自己尝试并免费参加 openSAP 的课程。保持好奇心,多尝试新事物,也可以尝试一些几年前不喜欢的东西;
重构并非坏事:如果找不到更好的解决方案,那么修正一个复杂的解决方案也是不错的选择。如果某个解决方案问题很多,你可以稍后重新思考该方案,再将想到的新东西应用到该方案中。重构并非坏事,但是在你开始重构之前,请记住:(1)准备好足够的自动化测试,以确保系统的正常功能;(2)获得利益相关者的支持。要了解更多关于重构的知识,我建议阅读 Martin Fowler 写的《Refactoring. Improving the Design of Existing Code》。
开展副项目:做副项目的目的是尝试新技术和工具,从而发现目前和未来的开发方式。经验是观察、情感和假设的结合 (《Experience and Knowledge Management in Software Engineering》,Kurt Schneider 著)。阅读教程或对利弊的介绍当然好,但这只是「书本知识」。只有当你自己尝试时,你才能体验到开发人员的情绪,才能对事情好坏背后的原因做出假设。使用一种技术的时间越长,你做出的假设就会越好。这会帮助你在日常工作中做出更好的决定。我刚开始编程时,并没有代码补全功能,只有一些可以加速开发的实用程序库。显然,把那时候的背景知识用在今天,我会做出错误的决定。现在我们有大量的编程语言、框架、工具、流程和实践。只有当你有经验,对主要趋势有粗略的了解时,你才能参与到讨论中来,并将开发引向正确的方向;