发布网友 发布时间:2022-07-29 15:27
共1个回答
热心网友 时间:2023-11-24 23:46
主要是管理与技术两方面的能力,管理与技术两手都要硬,而技术是基础。技术不行、退化了,那只好做 PPT 架构师、首席布道师之类的。
技术能力
软件架构师是一位具有一定技术、产品、项目和团队等管理能力的高级程序员(编程高手),通常是一个开发团队里面技术最牛(或者比较牛)的少数几个人之一。架构师自身的技术水平和管理水平不行,常常会把团队带沟里,重要性可想而知。
成为架构师需要较长时间的一线开发经验的积累。单纯看工作年限,一般 3-5 年可成为初级架构师,5-8 年可成为中级架构师,8-10 年以上可成为高级软件架构师,当然这只是大致的估计,具体达到何种水平还要看架构师的实际能力。
经年累月,摸爬滚打,一位优秀的软件架构师需要掌握的技术能力很多,先说几个最基本的。
建模
软件开发领域的建模能力,主要是指抽象的思考能力。
普通码农通常用代码思考,负责一个系统中的几个小模块,所以思维常常局限在低层(low-level)、战术(tactic)的层面,考虑的基本上大多是某个功能、某个模块实现的具体细节与技巧。这是应该而且正常的,是团队合理分工的结果。
而架构师,顾名思义,要负责整个系统的架构,尤其是涉及到一个系统(或子系统)全局的整体设计,所以往往需要高层、上层(high-level)的战略(strategic)层面的思考,这样就必然需要架构师经常进行建模(Modeling),对代码、模块、子系统和系统中的各种静态结构、关系和动态行为、交互等等进行抽象。所以,在架构师的日常工作中,经常看到各种各样的图表、图形符号和模型,是很正常的。
可以说,不会建模,不习惯于用模型思考的程序员,是很难成为一名称职的软件架构师的。这里不得不推荐一下动力节点,他们的教学方式和其他机构截然不同:
这里以全栈教学为主,精通前段后端,程序设计思想,并且培养真实企业项目开发经验
系统分析与设计
前面已经说了,系统分析与设计(System Analysis and Design)的主要技术手段是建模,两者是高度重合的。
编程的四门功课
上图画的是任何软件开发、软件工程必然离不开的四门基本功课(四项基本活动或任务):
1、需求分析
2、设计实现
3、测试验证
4、调试纠错
把这四项活动连起来正好组成一个菱形,所以我也把它们叫作“编程之钻”(The Programming Diamond)。
这四门功课既可以看作是一个团队在整个项目开发过程中所连续从事的必不可少的四项基本活动(团队层面),也可以看作是一名程序员在日常开发中为了实现一个需求而需要完成的必不可少的四项基本任务(个体层面)。
从一个功能的需求分析,到程序设计、编码实现,再到测试确认这个功能的完成,以及发现错误后进行调试定位、代码修改、设计重构或优化,再次进行测试和确认,通过后再选择下一个需求进行分析,如此周而复始。。。这四个基本动作正好构成一个功能开发的小循环,也是每个程序员日常工作的标准核心动作。
那么,为什么普通码农的开发不如编程高手,总是比别人慢,往往也不如别人的好?可能有许多种原因。有一个比较简单的办法能帮你找到开发的瓶颈:评估一下以上这四项任务在你的日常开发中的时间占比。
我这 20 年的观察是,国内许多码农的开发效率低、质量不高,是因为他们往往在 Coding、Debugging 上花去了大量时间(人称 code-and-fix),而在“编程之钻”的需求分析、自动测试、架构设计等其他几个重要方面往往草草带过,占比明显不平衡。
什么原因?因为许多人不知道怎么有效率、高质量地去做需求分析、自动测试、架构设计以及调试除错,以为只有 Coding(编程语言的语法技巧和框架 API 如何使用等)最重要,忽视了其他的软件工程关键实践,于是导致个人整体的开发速度和质量降低,老是提不上去。
而这又是什么原因造成的?因为一方面“软件工程无用论”长期存在,加上浮躁和急功近利的社会风气,影响了人们的观念和意识,导致追求短平快、糙快猛;而另一方面仅通过大学短短的四年,常常很难全面、扎实地学到并掌握“编程之钻”的关键技术,而工作以后又常常忙于加班应付、各种赶工期,缺少足够的时间来学习提高自己的开发水平。