程序员(Programmer,Computer Programmer或Coder),它可以指在程序设计某个专业领域中的专业人士,或是从事软件撰写,程序开发、维护的专业人员。但一般Coder特指进行编写代码的编码员。
随着时代的发展,对程序员的要求也在变化,需要他们掌握更多的知识与技能如:UML、单元测试、各种方法论等,以更快更好的满足不断变化的商业需求。
工作范围:代码撰写, 测试与除错, 撰写技术文件
软件工程师一般指从事软件开发职业的人。软件工程师跟一般程序员的分别,在于一个程序员的工作是按照指定的规格进行编码,而软件工程师的工作则需要设计和规划。不过,由于现时社会的分工愈来愈模糊,软件工程师跟程序员的分工也愈不明显。但对于严格执行CMM的机构来说,各人的工作分也比较清晰,这有助于了解软件工程师跟一般程序员的分别。
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
1,需求整理分析
有人认为架构师是在需求规格说明书完成后介入的,但我认为架构师要从项目最开始的阶段就参与进来。理由有很多:首先,第一手的信息损失最少,架构师能够更好的把握需
求;其次,分析人员在与客户交流时,往往不会深入挖掘需求,因为有很多隐藏的需求客户自己都不见得意识的到,而架构师则可以依靠敏感的软件嗅觉发现这些需
求,减少以后的变数;第三,分析人员往往脱离开发团队,盲目接受客户需求,而架构师能够清楚把握现有的研发团队能做什么,不能做什么,提前预知风险,降低项目失败的机率。
2,系统分解
在收集完信息后,架构师需要将用户需求转化为软件需求,同时要补充非业务需求,如健壮性,扩展性等等。如何区分和化解用户需求与软件需求,如何有效把握用户需求与软件需求的区别,是系统分解的核心。这是最考验架构师的地方,也是只有架构师参与的工作
3,技术选型
这一步要根据对软件需求决定项目该使用何种架构,开发模型,及依赖选项。如使用多层架构还是分布式架构,是瀑布模型还是RUP,是使用MySQL还是
SQLServer,是否需要使用企业库,是否需要使用ORM。但是,架构师对项目的技术选型要提供多种不同的方案,并为每种不同方案提供详细说明文档,
用来阐述每种方案的优势,劣势,可行性等内容。这些文档供项目经理或领导决策最终的技术选型。
4,系统设计
依据软件需求和技术选型,架构师需要和软件工程师一起将软件需求落实到软件详细设计说明书中。架构师负责将软件需求分解,重组织为子项目,子系统,组件和模块,以及它们之间的逻辑关系,从而形成不同的逻辑组成部分,最后还需要确定各个子系统及组件间的接口。这些都是作为进一步的团队分工的依据。同系统分解一样,系统设计是考验架构师能力的重要职责。
5,培训与指导
在软件详细设计说明书完成后,为保证项目的顺利进行,架构师需要对整个团队进行技术培训,让团队中的每个人明白自己的职责范围,该做什么,不该做什么。
在项目实施过程中,架构师需要参与到具体开发过程中,给与每个开发人员有效指导,以避免团队成员对系统设计的误解而造成项目的延误。在我看来,这点对于新
手比较多的团队尤为重要。因为国内新手的一个通病是眼高手低,刚学会了一点点就认为自己什么都会;当他们拿到真正的设计时又往往不知所措,畏首畏尾。
6,保持沟通
沟通是保证项目顺利开展的有效保障。架构师要从多方面跟踪项目进度,及时与项目经理或直属领导汇报项目进展,与技术开发人员沟通遇到的问题,如果是迭代开发,还需要与用户沟通需求变更。
java工程师 接触的方面一般比较多, 前台的开发技术ajax、jquery等,spring、hibernate、Struts框架,数据库的基本维护和创建,程序的需求分析及其它文档编写、基本测试等。这些东西根据公司的需要你都可能接触到。
程序员->工程师->架构师
初级:套模板,依样画葫芦,就是传说中的copy cut程序员
中级:能独立开发单个的功能模块
高级:带领初中级程序员开发软件产品
架构师:写出各种基层代码和接口给初中级程序员套模板,决定项目使用哪些框架和技术,比如说客户要做个网站,架构师用SSH的架构,搭建好后给其他程序员去实现具体功能
纯属个人见解,大神勿喷
项目的三种典型角色。
项目经理:
负责项目的目标、计划和实施的组织与监控;负责项目利益相关人沟通协调;负责项目组的人员管理,包括分工、培训、辅导与评价激励等等。
要求:沟通能力;制定计划;计划监控能力;人员管理能力。
系统架构师:负责与项目利益相关人,特别是系统客户和用户,交流确定系统需求和业务场景;负责系统需求分析和建模;负责系统架构设计;负责协调软件、硬件等各个子系统或领域的架构师完成相应子系统或领域的架构设计;负责指导、培训开发人员完成系统的开发和测试。
对于一个软件系统来说,系统架构师通常就是软件架构师。
要求:客户沟通与管理;沟通能力;需求分析与建模;领域知识;架构设计;等等。
软件工程师:负责相应部分软件的开发。
要求:掌握特定语言的编程技能;测试技术。
以上只是一种典型的划分。实际上,每个公司和项目会根据自身特点而有变化。这些角色有时候是兼职的,如系统架构师经常兼项目经理。
以上就是关于请问JAVA程序员与JAVA工程师的区别是什么。 与系统架构师有什么区别全部的内容,包括:请问JAVA程序员与JAVA工程师的区别是什么。 与系统架构师有什么区别、java架构师和java工程师有什么区别、求大神,java初级程序员,中级程序员,高级程序员的区别。 架构师主要是做什么的。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)