软件架构设计能力可能是任何一个行业中最逆向生长的一种能力了!因为我们都清楚,建筑设计、问诊把脉、机械制造、水利工程等等存在了成百上千年的行业,无论你后来有多么丰富的实战经验,前期必须要有扎实的理论基础。
但是软件架构恰恰反过来,从一开始就研究理论,等于在做无用功。具备软件架构的能力,前期需要有丰富的开发经验,然后在过程之中提炼模式,完善自我架构思维逻辑的系统化。因此软件系统的架构设计是逆向生长的过程。
当你的开发能力日益精进,不断在小的成就中积累出比较大的成功经验,那么软件系统的整个生命周期,尤其是多种类型的软件系统,不断被你体验,业务类型和技术模式在胸中逐渐清晰了然,那么你对软件架构的理解就会变得通透。
这就分为三个阶段:
第一阶段,编程的顶点阶段
这一阶段往往完成在程序员的头5-8年,如果你是一位天赋异禀的人,那么速度会更快。编程技巧的运用在这个阶段达到了顶点,尤其是面对复杂的业务问题,总能从别人看起来乱如麻的方案中缕出一条线索,化繁为简。
这个时候,你会认为编程对你来讲,不算个事儿,其实这个阶段,对于软件架构更多的理解还是在技术框架之内,对多种技术框架的组合运用有了一定经验。
第二阶段,内心回归阶段
在第二个阶段之前,你会经历一个比较长期的混沌,也就是玩腻了技术编程这些自以为芝麻大点的事情,而是转向管理,人事,经营和产品等工作,在这个过程属于个人认识的外延,自己的技术能力会有所退步,但是眼光明显扩大,但始终找不到落脚点。
这个混沌的时期会经历好几年,自以为很多事都能干,最终发现任何事都不是那么好干,回归于技术往往是本心所求,那么这时候的你实际上已经进入到了架构精进阶段,那么你对软件架构的认识不再局限于技术本身,而是开始学会推己及人,懂得让别人看起来简单比自己觉得技术酷炫更重要,心态也会不在傲娇,懂得了谦让。
这时候你的力量会全部集中在技术爬升上,软件架构师的角色感在你身上更为突出,不仅能书写方案,还能搞定核心代码,团队任何一员都尊重你,甚至在重大架构方向上,可以于公司高管据理力争,这时候的你已经可以承担重大的项目架构主导者了!
第三阶段,理论化的觉悟阶段
到了这个阶段,你已经从编程开发,技术框架,产品化,等各个方面走过来,那么就不再对这些应用操作层面的事情带有太多的好奇心,开始关心支撑应用的基础框架技术体系是怎么建造出来的?我也可以吗?在具体要突破的领域内,研究清楚所有相关的技术,知识和理论,结合实验,业务和经验,打造一套属于自己的核心理论资产,这套理论可以应用于这个领域任何人的学习,参考和使用。
这个阶段你会发现原来上学和初期编程阶段食之无味的算法,数据结构和经典理论,是如此的富有趣味,而且这些基础知识灌溉了整个技术生态体系,它们一直存在,只是你感受不到,如饥似渴的理解这些理论,那么你真正将进入到基础平台的架构问题解决的专家级别架构师了!
这就是我作为一个老架构师,对已经走过的路的一些内在感受。