Skip to content
微信公众号

架构

架构师思维认知

什么是架构师

架构师是技术开发领域中的特殊岗位,也是特别重要的岗位。架构师通常在软件设计到软件开发过程中,负责完整的流程设计和规范设计,制定软件的开发路线,迭代路线等内容。负责软件开发过程中的技术攻关和核心技术能力输出,团队的技术提升等内容。

架构师需要什么样的能力

很多人,尤其是大多数前端开发工程师会在漫长的开发道路上受行业约束,觉得架构师的任务就是做框架,做组件库,分配分配任务就可以了,以至于这部分人会把更多的精力放在具体的业务实现代码的编写上,这个思维方式其实是错误的。

一个合格的架构师应具备如下能力:

  1. 完整应用程序功能和业务的设计能力。
  2. 完整应用程序或软件系统的技术架构设计能力
  3. 团队业务开发所需插件系统的设计和开发能力
  4. 技术领域上的广阔的宏观视野
  5. 任意独立领域的专家级别经验
  6. 良好的编程基础和程序设计思想(精通任意一门编程语言)
  7. 组件调动能力,良好的亲和力,可以调动团队的协调性和积极性

也就是说,一个架构师,并不是指前端开发工程师或后端开发工程师,它具备的能力是抽象的,但是是通用的,不受限于行业、编程语言或技术栈。具备这样的综合能力才能被称为一个专业的架构。

什么是软件架构、开发人员需要什么样的软件架构

软件架构最简单的理解就是盖房子,比如生活中想要盖一栋大房子,需要从房子的设计图开始,进入房屋的设计期,设计的过程中还要考虑每个环节需要的材料,物理称重计算得等问题。然后才会进入选材料,实际打地基,根据不同结构请不同的人进行落地实施。后面还要对盖好的房屋进行验收和实际售卖等等操作,还需要设计好房屋的维修周期等等。

软件架构指的是从设计应用到构建应用的整个过程以及其包含的所有环节。对于前端开发岗位的技术人员来说,很多人对架构设计的理解仅仅是片面的,比如开发Vue项目或React项目时,使用路由和状态管理系统,配合UI框架,最后加入网络请求框架和一些优化手段,这个过程是架构的一个具体体现之一并不代表前端的整个架构就是仅仅而已。应用架构包括的内容繁多流程复杂,比如实际开发过程中,脚手架的设计和实现就包括了脚手架工具的内部架构从设计到落地到可伸缩概念,比如应用开发过程中除了技术组成外,还需要设计业务分离和业务整合,所以业务组成也是架构设计中的一部分。再比如应用架构构建过程中,项目从开发环境到发布上线的整体流程,测试不好走和持续继承方案,这些都是应用架构中必不可少的部分。

不以实现为目的的架构都是耍流氓,所以任何软件架构,软件开发和互联网行业中的目的都是落地和实现。所以有如下总结:

  1. 一个无法上线的应用架构,算不上好的软件架构。
  2. 一个没有人能完成开发的软件架构,算不上具有可行性的软件架构
  3. 一个在现有技术上不可行的架构,算不上合理的软件架构。

所以一旦我们谈及软件架构,需要讨论的第一个重点就是因地制宜。比如一线互联网公司的软件架构,都属于行业内的顶级架构设计方案,但是该架构在中小型企业并不是适合的架构,结合以上三点考虑的话,一下顶级架构在中小型企业就很容易称为2和3点所覆盖的内容。若使用优秀的软件架构,必须结合优秀的软件开发人才,若公司体量和技术能力有限,则选择眼下最适合公司情况的架构才是最好的选择。

架构师编程实践

思想在前,不要上来就写

在作为公司的顶梁柱级别的开发人员时,每个人写得任何代码都是责任重大的,所以在实际开发时,没有一个合格的架构师是上来就开始写代码的,并且一个合格的架构师绝不会被编程语言限制。所以我们在真正的实践编程前,一定要按照如下顺序做思考:

  1. 我们要做什么
  2. 我们做这个事情的目的是什么
  3. 完成这个目的需要的技术栈和编程语言的可能性有哪些
  4. 我对这些技术栈和编程语言是否有过使用经验
  5. 我们需要的技术栈和编程语言对我们要达到的目的起到多少帮助(即我们需要的技术栈实际有百分之多少是我们需要用的)
  6. 是否需要对技术栈和编程语言做一个详细的技术分析和demo测试
  7. 是否有其他功能是现有成熟技术栈无法提供的能力,我们应该如何设计这部分能力的技术输出
  8. 开发团队的综合技能水平和人员分布是什么样的
  9. 如何将目前所需要的软件架构更好的过渡到我自己的团队
  10. 任务分配的设计方案,软件的开发流程,测试流程,上线流程,文档规则等定义
  11. 软件架构、业务架构、部署架构等架构图的规划和绘制
  12. 业务流程的梳理、基础架构的建设
  13. 其他后续流程

也就是说,没有任何的成功时偶然的,没有任何大型操作系统或应用是几个人写写代码就成功问世的,任何合格的架构师在实际写代码前要做的事情是非常多的,如果把这些事情忽略或完全摸不到头脑的话是无法成为一个合格架构师的,其设计的应用程序在未来也会出现技术瓶颈或无法摆脱的持续bug困扰。

操练起来

对于任何级别的技术人员来说,基础开发都是重中之重,很多年限不高的前端工程师就开始鄙视HTML/CSS/JavaScript这三门掌握前端命运的语言,而把精力完全投入到应用层的各种框架中,比如React、Vue、Angular、Svelte等优秀的前端框架生态。这种思维方式其实是错误的,作为应用级开发工程师,掌握前端框架可以大大的提升项目开发的效率,并提升项目迭代时的维护性,但这种思维并不适合前端工程师向上提升自身技术能力,很多前端工程师在一定年限的成长后,会发现境界停滞无法突破,也正是这个思维所限制的。

若想在前端领域更精进异步,反而是应该将框架放下,回头去看HTML/CSS/JavaScript,回头去复习编程基础,培养优秀的编程思想。有的同学到这里一定会觉得,HTML、CSS、JavaScript有什么可看的,一共就那么点东西,做做网页而已。但是冷静下来思考一下,诸如React、Vue或优秀如Webpack等优秀的JavaScript框架,都是通过这些基本的编程语言基础配合JavaScript的一些系统级API,通过作者的设计思想而开发出来的框架。也就是说,你在使用这些优秀的框架时,是否知识单纯的学习官方文档介绍的API用法,并没有去感受作者的设计思路以及实现方式呢?这个过程是值得大部分前端开发领域的工程师反思的,若你还不能通过框架的使用看到框架的本质和实现原理,那么你的编程基础还有待提高。

比如网上有很多实现mini-vue的项目或是教程,自己可以根据网上的教程写一下,写完后会发现Vue这种框架中看起来特色鲜明的新语法,其实都是通过最基础的编程方式来实现的,所以并不要把自己定位到框架的使用者范围里,在适当的时间就应该跳脱出来站在更高的位置要求自己。除了提升自己的编程能力外,还要提升编程思想,因为再牛的基础,如果没有好的思想,是无法设计出好的应用程序的。

任何一门编程语言开发的框架和应用都会有过时和淘汰的一天,甚至是编程语言也存在淘汰的一天,为什么行业第一梯队的人不会有框架使用的焦虑症,和编程语言使用的焦虑症,这是因为编程语言和框架可能每个时间段都在改变,但是数据结构、算法、设计模式和编程思想永远都不会改变,所以一个优秀的工程师,在基础方面是非常扎实的。

本站总访问量次,本站总访客数人次
Released under the MIT License.