摘自百度百科:所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。
正如《架构漫谈》作者所说,架构师必须是一个组织的领导人。软件架构师的主要任务并不是从事具体程序的编写,而是从事更高层次的开发架构工作,因此软件架构师需要有良好的组织管理能力以及一定的实权。
要想成为一名合格的软件架构师,首先要明白架构师是去帮助别人解决问题,而不是自己完成工作,并且工作完成与否是别人说的,不是自己,所以身为一名架构师要把完成别人工作当成自己的最大利益,要努力地越来越多的人依赖你 认同你。
架构师要学会发现问题,把别人的问题当成自己问题来思考并且解决问题。同时架构师是一个领导人,他所考虑的不光是解决问题,他更要考虑如何用最小的成本获取最大的利益。架构师是在不断的平衡与调整别人的利益过程中让组织成员都能够积极地为服务。所谓架构师,不光技术要好,还要有良好的管理能力。
通过阅读GItHub一篇文章,我了解到软件架构师的日常与必备技能,并把每个技能简单概括如下。
日常:
- 定义和确定所需的开发技术与平台;
- 定义开发标准,如编程标准、工具、审核流程、测试方法等;
- 对确定和理解业务需求提供支持;
- 设计系统并根据需求做出决策;
- 对架构定义、设计和决策进行讨论记录;
- 检查并审核架构与代码,比如检查前期确定的模式与编程标准是否被正确实施;
- 与其他部门和架构师合作;
- 对开发人员的引导及咨询;
- 将高级设计细化,并转化为较低级的设计。
10项技能:设计、决策、简化、编程、记录、沟通、估算、平衡、咨询、市场。
设计:(深入了解各种现存的设计模式,了解质量度量,理解不同的技术栈,分析和理解应用模式)
决策:(架构师的决策指引着项目甚至整个公司的正确方向,对于决策分得清主次,决定要做在能力范围之内)
简化:(你指定的解决方案要尽可能简单,多方位角度观察解决方案,学会分而治之的思想,得到解决方案以后不要着急下定论,退一步再想想是否是最好的选择)
编程:(虽然架构师的主要任务不是编程,但是你必须了解开发人员的日常工作,只有你对主要趋势有了解时,你才能参与到讨论中来把开发引向正确的方向)
记录:(好的代码本身就是最好的文档,好的架构师应该拥有辨别好坏代码的能力,文档要简洁,多记必需的东西,内容尽可能少,只记录这件事的必要信息)
沟通:(架构师比起程序员更多的是与人打交道,有一个良好的沟通能力可以去很好地给别人传达你的想法,不然设计再好也是无用)
估算:(作为架构师经常会被要求提供估计以实现你的想法,长时间,多少人,多少人,哪些技能等,这就需要架构师了解所使用的软件开发过程的活动。此外,身为架构师,还应该能够评估架构在当前或将来上下文中的适用性)
平衡:(架构与功能需求的平衡,要避免过度设计;从长远眼光考虑解决方案的选择;克服不同级别之间的通信冲突)
咨询:(要积极主动地去帮助别人,时刻为下一步做好准备;始终需要对要实现的中长期目标有一个远见;设置固定时间段组织沟通当场解决一些现存的小问题)
市场:(除了管理学,还有就是营销技巧,要能够说服别人,并且有的时候还可以不断坚持,重复你的想法,反复接触某个观点会使人们更为相信观点)