软件人员职责范围

软件架构师之职责范围

  1. 沟通能力和自我表达

因为架构师要做的第一件事就是与团队成员、项目经理、客户认同沟通,获得认同

  1. 有一定的魄力和感染力

架构师要与很多人打交道,其中不乏领导,刁钻的客户,技术狂人。而架构师是有职无官,但又要推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。这就需要架构师具有一定的魄力和感染力,依此来排除工作过程中一些个人情绪带来的影响,从而保证工作顺利进行。

  1. 有广阔的知识领域

架构师的职责有些特殊,多少有点需要创新的要求。虽然有很多现成的架构,但放到具体行业又有不同,不能生搬硬套。那么这时候你就需要专业的架构知识,丰富的业务领域知识,开阔的眼界。依此才能跳出架构和业务,从旁看清楚事实,从而将理论架构与实际业务完美结合。我认为,要做的这点,架构师不仅要努力学习架构和业务知识,也要把眼光放得更远。“世事洞明皆学问”,也许灵感正来自与软件毫不相干的东西。

  1. 有过硬的技术能力和丰富的编程经验

广阔的知识领域是广度的要求,因为没有广度就成了井底之蛙。然而有了广度还要有深度。人的精力有限,但至少要精通1~2门技术。有深度才能把握细节,才能保证自己的设计不是天马行空,不切实际。有丰富的编程经验,主要是希望保持一种代码感觉,能够和开发人员进行有效的沟通,了解团队的情况。当然这并不是要求自己成为一门技术专家,只要能够保持对代码的感觉就行。因为优秀的技术选型可能有很多,适应于团队的缺未必。

  1. 多方位思考分析能力

收集到客户需求和技术团队的反馈后,就要求架构师能够对这些资料进行系统分析,制订可行的解决方法。制订可行的架构,不仅要求你要从客户的角度考虑,也要从开发,机器等多方面考虑。这就要求你具备一定的抽象思维,多方位分析能力。只有具备这样的能力,架构师才能看清系统整体,掌控全局。如何具备这些能力的是经验,自己的,别人的均可,这点最重要。创新固然让人兴奋,然前人之鉴才更为稳妥,另外,相信大家都听过"听君一席话,胜读十年书"这句话,由此可知经验有多么重要;其次要学习。
能力要求

  1. 需求整理分析

有人认为 架构师是在需求规格说明书完成后介入的,但我认为架构师要从项目最开始的阶段就参与进来。理由有很多:首先,第一手的信息损失最少,架构师能够更好的把握需求;其次,分析人员在与客户交流时,往往不会深入挖掘需求,因为有很多隐藏的需求客户自己都不见得意识的到,而架构师则可以依靠敏感的软件嗅觉发现这些需求,减少以后的变数;第三, 分析人员往往脱离开发团队,盲目接受客户需求,而 架构师能够清楚把握现有的研发团队能做什么,不能做什么,提前预知风险,降低项目失败的机率。
2. 系统分解
架构师需要将用户需求转化为软件需求,同时要补充非业务需求,如健壮性,扩展性等等。 如何区分和化解用户需求与软件需求,如何有效把握用户需求与软件需求的区别,是 系统分解的核心。 这是最考验架构师的地方,也是只有架构师参与的工作。
3. 技术选型

根据对软件需求决定项目该使用何种架构,开发模型,及依赖选项。如使用多层架构还是分布式架构,是瀑布模型还是RUP,是使用MySQL还是SQLServer,是否需要使用企业库,是否需要使用ORM。但是,架构师对项目的技术选型要提供多种不同的方案,并为每种不同方案提供详细说明文档,用来阐述每种方案的优势,劣势,可行性等内容。这些文档供项目经理或领导决策最终的技术选型。

  1. 系统设计

依据软件需求和技术选型,架构师需要和软件工程师一起将软件需求落实到软件详细设计说明书中。架构师负责将软件需求分解,重组织为子项目,子系统,组件和模块,以及它们之间的逻辑关系,从而形成不同的逻辑组成部分,最后还需要确定各个子系统及组件间的接口。 这些都是作为进一步的团队分工的依据。同系统分解一样,系统设计是考验架构师能力的重要职责。

  1. 培训与指导

在软件详细设计说明书完成后,为保证项目的顺利进行,架构师需要对整个团队进行技术培训,让团队中的每个人明白自己的职责范围,该做什么,不该做什么。在项目实施过程中,架构师需要参与到具体开发过程中,给与每个开发人员有效指导,以避免团队成员对系统设计的误解而造成项目的延误。在我看来,这点对于新手比较多的团队尤为重要。因为国内新手的一个通病是眼高手低,刚学会了一点点就认为自己什么都会;当他们拿到真正的设计时又往往不知所措,畏首畏尾。

  1. 保持沟通

沟通是保证项目顺利开展的有效保障。架构师要从多方面跟踪项目进度,及时与项目经理或直属领导汇 项目进展,与技术开发人员沟通遇到的问题,如果是迭代开发,还需要与用户沟通需求变更

高级软件工程师的职责范围

  1. 软件开发与测试

驱动测试用于分析子系统/模块内部逻辑,用于在开发之前暴露开发过程中可能遇到的大部分问题和对子系统/模块进行更进一步的划分;白盒测试是保证在项目交接到测试团队手中时,能满足基本的项目要求,即能够进行α测试。另外,驱动测试因团队而异,并非必须,但个人更推荐这么做。

  1. 子系统/模块分析设计

软件架构师做完系统设计,项目经理进行项目分工后,项目就正式进入开发环节。这时候每个软件工程师会拿到自己负责的子系统/模块,首先要做的就是进行分析设计,其次才是开发。开发前进行分析设计,便于从整体上对子系统进行把握,提前隔子系统中的变化点和问题,同时也可以对子系统进行更详细的划分,用于制定个人的工作计划,与项目经理和软件架构师进行具体的沟通。

  1. 撰写文档

在进行子系统和模块设计的同时,要撰写子系统设计说明书;在开发过程中,要记录技术要点和发现的问题,同时如有需要,要修改子系统设计说明书;在白盒测试时,要记录每个Bug。

  1. 定期主动沟通

项目经理需要和团队中的每一个人沟通任务进度,其主要职责是从整体上把握和控制项目的进度。那么作为团队一员的高级软件工程师通常会负责项目中很重要的子系统/模块,这些子系统/模块往往能决定项目的成败。因此定期主动与项目经理沟通解决遇到问题,与架构师和专家沟通解决技术难题就显得非常重要了。另外,就对个人而言,定期主动沟通也往往表现为个人的主动积极性,对于个人长远发展非常有益。

  1. 持续学习
  2. 带新人

软件工程师资格等级:初级,中级和高级

  1. 见习生:刚从学校毕业

除了他们专门研究的核心平台之外,受训人员对任何框架都不熟悉,对数据库是什么只有模糊的认识。

  1. 初级:程序员:通过反复试验

为了使一切顺利,新手开发人员需要通用的上下文无关规则。 由于急躁,他们希望立竿见影。 同时,错误可能使错误陷入瘫痪,因为他们不知道如何处理错误。
高级初学者开始遵循固定的规则,并根据所处理的类似情况制定通用原则。 主要问题是,他们忽略了更大的背景,也许认为这无关紧要。

  1. 中级:软件设计师:编程世界的主力军

中级开发人员有时被称为“编程世界的主力军”,它们对常规代码的影响最大。
在此阶段,他们还可以在故障排除和调试方面做得不错。
称职的程序员非常主动并且足智多谋。 他们在团队中担任领导角色,并可以指导新手。 但是,有能力的开发人员仍然缺乏在进行项目工作时将注意力集中在优先事项上的经验,并且他们几乎无法反思自己的错误。
**

  1. 高级:系统分析师:问题解决者

**
具有深厚专业知识和详尽经验的开发人员,使他们可以指导同龄人,被称为资深人士。 此外,高级开发人员在他们所支持的业务领域中也很有知识。 他们的能力甚至可以扩展以帮助市场营销和整体业务发展。 高级开发人员将始终在考虑自己在做什么,从而为业务带来多少收益。
简而言之,他们的工作是为问题提供最佳解决方案。 实际上,一位年长者正试图预见并解决问题。 作为解决问题的人员,长者必须事先考虑系统瓶颈,并牢记由不当使用工具引起的漏洞和问题。

高级开发人员之后会怎样r> 架构师:设计复杂的系统,该系统将由高级和初级开发人员团队实施。
产品经理:具有编码经验的产品经理会更轻松地领导产品交付。 他们从内部了解开发过程,就能更加有效地管理产品上的工作。
高级领导:高级领导者的工作与编程无关,而与人的技能有关:鼓舞,激励,领导和制定策略。 在制定决定公司发展方向的高层决策时,高级领导者应确保所有员工都遵循这些决策并相信使命。

软件人员职责范围

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月15日
下一篇 2022年1月15日

相关推荐