Misaya7914
这里以软件架构师为例说明,软件架构师是从程序员一步步干起来的,也是大多数程序员梦寐以求的。混到架构师级别,一般需要的综合能力比较强,需要做的事情比程序员也要多。
确认需求
首先,架构师需要彻底弄清楚产品需求,才能进行下面的工作。这需要架构师和产品经理、业务需求方不断地沟通,挖掘用户需求,搞清楚用户到底需要的是什么,能够做到对现有的需求整理透彻,并且具有下一步用户想要什么的判断能力。
系统分解
当需求确定后,架构师需要将用户产品需求转换为软件需求。在构建软件系统模型的时候,需要对系统进行分解,比如将整个系统进行纵向分解,分解成各组件与子系统;比如还可以进行横向分解,将系统分解成不同的逻辑层或服务后,对逻辑层进行分块,确定层与层之间的关系。
技术选型
这个阶段考验的是架构师的架构能力、综合技术能力、对前沿技术的掌握能力等。
系统分解后,需要进行技术选型。
比如前端是用vue、React还是Angular;
比如后端框架是选择SpringCloud全家桶还是使用阿里系dubbo组合拳;
比如缓存是用Redis还是其他;
比如数据库是用关系型数据库还是使用noSql;
比如线上节点需要部署多少;
。。。。。
而这一切都要基于用户需求、用户使用量等。并不是根据自己的爱好随意选择的,否则线上出现了问题导致系统崩溃,这是不能容忍的。
制定技术规范
“约定大于配置”,程序员水平不一,编码风格千秋,所以要制定一套开发规范,这样对进度的把握以及以后的运维都是非常有好处的。
要和涉及的程序员保持沟通,以确保他们在自己的开发任务下领会到架构师的设计意图。
指导员
要对开发过程中程序员遇到的问题做到及时的沟通指导,遇到的技术难题要随时攻关。
布道师
软件行业发展日新月异,新技术的诞生说来就来,所以架构师要时刻保持对新技术的热情,善于钻研新技术,并且能够将新技术引入到当前的团队中。
当然,架构师的职责不仅上面所述,还有其他的,比如汇报工作等。
所以对于一个合格的架构师,他们的综合能力需要全面。
残缺的孤独君
架构师其实有很多种的,有业务架构,技术架构之分。业务架构很好理解了,就是当前的业务为谁服务,都需要做什么,满足什么需求等等这样的定义。技术架构其实还有软件架构,网络架构等等。
从你的提问来看,我们暂且认为你说的是软件架构师。那么软件架构师都需要做什么呢?最主要的,他先要了解业务,而且是深入的了解业务,包括业务的使命,所有者的期望,使用者的期望,业务未来的发展方向等等。当各方面了解清楚后,才能进行技术方面的工作。这里面包括了系统怎么划分模块和服务,各个模块和服务应该用什么语言,什么框架来实现。各个服务间调用的形式是http还是二进制,数据库怎么选择,数据表怎么定义等等这些吧,在架构设计中还要考虑到系统未来的扩展和维护,当然也要包括日志,监控等等周边的非功能性需求。而且还要保证自己的技术选型和架构设计师可实现的,当前团队不会有太大的阻力。还要识别系统开发过程中可能出现的风险,怎么规避,怎么解决。
理论上来说,架构师在编码过程中还需要时刻与开发人员沟通,解决问题,升级设计方案等等。其实架构师就是开发的领头人,描述清楚方向和实现的方法,并且保证开发人员在自己规定的范围内解决或实现业务。