提高软件系统设计和架构理论水平之路

简介: 提高软件系统设计和架构理论水平之路

软件架构设计能力可能是任何一个行业中最逆向生长的一种能力了!因为我们都清楚,建筑设计、问诊把脉、机械制造、水利工程等等存在了成百上千年的行业,无论你后来有多么丰富的实战经验,前期必须要有扎实的理论基础。


但是软件架构恰恰反过来,从一开始就研究理论,等于在做无用功。具备软件架构的能力,前期需要有丰富的开发经验,然后在过程之中提炼模式,完善自我架构思维逻辑的系统化。因此软件系统的架构设计是逆向生长的过程。


当你的开发能力日益精进,不断在小的成就中积累出比较大的成功经验,那么软件系统的整个生命周期,尤其是多种类型的软件系统,不断被你体验,业务类型和技术模式在胸中逐渐清晰了然,那么你对软件架构的理解就会变得通透。


这就分为三个阶段:


第一阶段,编程的顶点阶段


这一阶段往往完成在程序员的头5-8年,如果你是一位天赋异禀的人,那么速度会更快。编程技巧的运用在这个阶段达到了顶点,尤其是面对复杂的业务问题,总能从别人看起来乱如麻的方案中缕出一条线索,化繁为简。


这个时候,你会认为编程对你来讲,不算个事儿,其实这个阶段,对于软件架构更多的理解还是在技术框架之内,对多种技术框架的组合运用有了一定经验。


第二阶段,内心回归阶段


在第二个阶段之前,你会经历一个比较长期的混沌,也就是玩腻了技术编程这些自以为芝麻大点的事情,而是转向管理,人事,经营和产品等工作,在这个过程属于个人认识的外延,自己的技术能力会有所退步,但是眼光明显扩大,但始终找不到落脚点。


这个混沌的时期会经历好几年,自以为很多事都能干,最终发现任何事都不是那么好干,回归于技术往往是本心所求,那么这时候的你实际上已经进入到了架构精进阶段,那么你对软件架构的认识不再局限于技术本身,而是开始学会推己及人,懂得让别人看起来简单比自己觉得技术酷炫更重要,心态也会不在傲娇,懂得了谦让。


这时候你的力量会全部集中在技术爬升上,软件架构师的角色感在你身上更为突出,不仅能书写方案,还能搞定核心代码,团队任何一员都尊重你,甚至在重大架构方向上,可以于公司高管据理力争,这时候的你已经可以承担重大的项目架构主导者了!


第三阶段,理论化的觉悟阶段


到了这个阶段,你已经从编程开发,技术框架,产品化,等各个方面走过来,那么就不再对这些应用操作层面的事情带有太多的好奇心,开始关心支撑应用的基础框架技术体系是怎么建造出来的?我也可以吗?在具体要突破的领域内,研究清楚所有相关的技术,知识和理论,结合实验,业务和经验,打造一套属于自己的核心理论资产,这套理论可以应用于这个领域任何人的学习,参考和使用。


这个阶段你会发现原来上学和初期编程阶段食之无味的算法,数据结构和经典理论,是如此的富有趣味,而且这些基础知识灌溉了整个技术生态体系,它们一直存在,只是你感受不到,如饥似渴的理解这些理论,那么你真正将进入到基础平台的架构问题解决的专家级别架构师了!


这就是我作为一个老架构师,对已经走过的路的一些内在感受。


相关文章
|
22天前
|
人工智能 运维 虚拟化
完善多云平台软件体系,VMware再探索下一代企业IT架构
完善多云平台软件体系,VMware再探索下一代企业IT架构
|
18天前
|
边缘计算 物联网 5G
软件定义网络(SDN)的未来趋势:重塑网络架构,引领技术创新
【8月更文挑战第20天】软件定义网络(SDN)作为新兴的网络技术,正在逐步重塑网络架构,引领技术创新。随着5G、人工智能、边缘计算等技术的不断发展,SDN将展现出更加广阔的应用前景和市场潜力。未来,SDN有望成为主流网络技术,并在各行各业推动数字化转型。让我们共同期待SDN技术带来的更加智能、安全和高效的网络体验。
|
7天前
|
消息中间件 Kafka Java
Spring 框架与 Kafka 联姻,竟引发软件世界的革命风暴!事件驱动架构震撼登场!
【8月更文挑战第31天】《Spring 框架与 Kafka 集成:实现事件驱动架构》介绍如何利用 Spring 框架的强大功能与 Kafka 分布式流平台结合,构建灵活且可扩展的事件驱动系统。通过添加 Spring Kafka 依赖并配置 Kafka 连接信息,可以轻松实现消息的生产和消费。文中详细展示了如何设置 `KafkaTemplate`、`ProducerFactory` 和 `ConsumerFactory`,并通过示例代码说明了生产者发送消息及消费者接收消息的具体实现。这一组合为构建高效可靠的分布式应用程序提供了有力支持。
30 0
|
1月前
|
监控 持续交付 数据库
持续交付的软件系统架构
持续交付的软件系统架构
22 1
|
15天前
|
测试技术
软件设计与架构复杂度问题之区分软件维护、演进和保护(苟且)如何解决
软件设计与架构复杂度问题之区分软件维护、演进和保护(苟且)如何解决
|
15天前
|
微服务
软件设计与架构复杂度问题之理解软件复杂性的递增性如何解决
软件设计与架构复杂度问题之理解软件复杂性的递增性如何解决
|
15天前
|
Serverless 微服务
软件设计与架构复杂度问题之ady Booch描述软件的复杂性如何解决
软件设计与架构复杂度问题之ady Booch描述软件的复杂性如何解决
|
2月前
|
供应链 监控
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
34 4
|
2月前
软件复用问题之复用决策中,业务架构和技术之间有何关系
软件复用问题之复用决策中,业务架构和技术之间有何关系
|
2月前
|
监控 前端开发 UED
软件交付问题之架构让代码组织更有序,如何解决
软件交付问题之架构让代码组织更有序,如何解决

热门文章

最新文章

下一篇
DDNS