系统架构师这条路,首先要明确到底什么是架构师,其实似乎没有很明确的定义,而且各个公司的衡量标准也不太一致。我们暂且这样认为:(1)架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功;(2)系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。
明确了目标,想从事这个工作的,需要从哪些方面来修炼自己的素质?
一、具备实际编程的经验
最少三年吧,多了就不说了,这个年限虽然不能过于武断,但没有这个年限肯定是不行的,毕竟没有积累就没有经验。而且要有成功经验和失败经验,只有成功没有失败,那不是一个完整的经验积累。
二、具备抽象思维和总结的能力
架构师,顾名思义,在系统未搭建好之前,就要能够有一个草图在心。而如果是对现有系统的改造,那么能在看过系统的文档(如果有的话)和代码后,就能总结出系统的架构特点。
架构师必须能够理解表述模糊的概念并将其变成相关各方能够理解的项目构件。他们必须能够理解抽象概念,并以具体的语言对其进行沟通。开发人员中好的候选者经常要求或自己主动解释开发生命周期中容易混淆的问题。他们能迅速评估各种想法并将其纳入后续工作的操作建议中。
好的开发人员经常具有很强的数学能力,而好的架构师则倾向于表现出更强的口头表达能力,具有很强的解决技术问题的能力,但还必须能够准确获知更为全面的人员如何与技术交互的信息。这要求具有某种形式的抽象思维(而不再是代码的细节),这种思维能力可能较难形成。
三、具备书面表达和口头交流的能力
综合利用架构图,UML图,文字和代码片断,表达自己设计思想,至于是Word还是ppt,应该通吃。写作技能也非常重要,还需要具有制作草图的技能或使用制图软件的能力。
在开发人员中发现架构师的最有价值标准是有效的沟通。架构师必须对理解方面的差距进行预计,然后才能有所贡献。架构师不必对各方意见进行协调,因为这是项目经理的工作。他们的任务是确定表述系统设计时的最佳工具和构件,以促进有效的意见交换。
四、具备技术资讯吸收和鉴别的能力
作为开发人员出身,对于某一个具体问题的研究能力(虽然很多人总结为google能力),已经相当具备了。但是对技术资讯的全面接受和选择性深入了解能力,并且做出正确的判断,那些技术无非是厂家的噱头,而那些技术是真正可以用到项目,提高项目质量的好技术,这种能力确实至关重要的。
任何一个架构师,都会像是一个吸血鬼一样,每天不停的在网络中、书籍中、同事中、...吸取技术和其他。这种能力和毅力是重要的,也是比较难于保持的。
五、具备积极解决问题的主动性
很多时候,架构师的日常工作目标并不十分明确。开发人员直接参考功能规范来列出任务清单,而不是向架构师索取和求助,毕竟开发人员是有独立工作的能力和义务的。但在必要的时候,还是需要架构师出马的,往往在最关键的问题上,架构师亲自出手一小时,要强于开发人员讨论一天。毕竟架构师师总揽全局需求和全局架构的。这就要求架构师在需要的时候,可以主动出手,并且,一个好的架构师可以预知在何时何处开发人员是需要帮助或者协助的。
除了以上几点以外,还需要很多很多,比如完整的人格魅力、健康的身体等等。总之,这个职业具有一定的特殊性,属于透支体力和精力的职业。这个职业,需要从业者具备太多的素质,却给以不成比例的报酬,绝对是一个付出和收获不成正比的职业。