Technical architect 技术架构师
Project manager 项目经理
Business analyst 业务分析师
Layout designer 界面布局设计师
Presentation-tier developer 表现层开发者
Business logic developer 业务逻辑开发者
Data modeler 数据建模工程师
Database administrator 数据库管理员
Data migration specialist 数据迁移专家
Infrastructure specialist(system administrator) 配置专家
Testing specialist 测试专家
在有的组织中,这些角色有不同的名称。例如,有些机构中基础设施专家被叫做系统管理员;一个测试专家被叫做测试员,或者有些机构将测试工作管理者和单独的测试员区分开来。不管这些角色叫什么,备齐这些角色会使你的J2EE项目更容易获得成功。
更进一步,一个人担任多个角色是可以的,如果项目足够庞大,多个人分担一个角色也是允许的。有些组织合并了技术架构师和项目经理的角色。也有些组织让一个资深开发者同时担任数据库管理员或者系统管理员。或者是同一个开发者既忙于表现层工作也忙于商业逻辑层工作。在这里我不是推荐该如何组织一个开发团队,而仅仅是想交流一下个合理的J2EE项目团队中,应该设置哪些职能角色。
▲ 技术架构师应确定项目需要用到哪些技术
在许多组织中,一些技术的选择是企业级行为。例如,许多组织有既定的硬件平台选择和软件平台选择(例如,J2EE容器提供商)。通常,选择什么编程语言,例如Java,是企业级行为。
不过,绝大多数应用都有尚未在企业级明确约定或选择的技术需求。在这里,我区分了企业行为进行的技术选择和个人行为进行的技术选择。例如,决定在服务器端使用Java作为编程语言可能是企业明确约定过的要求,但是确定用哪个XML解析器,还是可能要由负责该应用的架构师来决定的。许多组织中,进行企业级行为的技术选择的人员和J2EE开发团队人员并不是同一批人。技术架构师通常负责选择用于项目开发的第三方开发包和实用工具,如XML的解析工具包的选用,是否使用Hibernate,Struts等。
▲ 技术架构师推荐开发方式和项目技术框架
一般来说,项目架构师向项目经理针对这些提供推荐和建议。例如,技术架构师建议项目经理将所有需求分析结果用UseCase 完整描述,并最好附有原型示例;或者建议设计文档使用对象化描述方式进行文档化等。
▲ 技术架构师提供从头到尾的设计和应用结构
不同开发者给项目带来不同的先入为主的观念、习惯和选择。技术架构师扮演乐队指挥的角色,统一矛盾之处,保证不同开发者的成果能够很好的融合在一起。也就是维持整个项目的概念完整性和同一性,达到和谐。
▲ 技术架构师保证项目被良好的定义
项目的分析必须详细一致,概念统一,能为构建应用提供良好的基础。技术架构师通常要和项目经理、业务分析员一起合作定义项目。
▲ 技术架构师保证应用的设计被适当的文档化
在项目团队的开发者之间建立良好沟通的关键步骤是写好应用的设计文档。写文档的具体过程强迫架构设计师充分详细地考虑设计中的问题。形成的文档也可以保证在改变和增加项目团队成员时,不占用技术架构师的时间。对于开发者来说,应用设计文档可以使得在技术架构师短时间缺席的情况下,工作能够继续良好开展;并且可以在不占用其它团队成员时间的情况下,解决应用设计中的冲突或矛盾。文档还可以将人员流动的影响和项目分离开来。
如果没有文档支持,项目团队新增成员,需要技术架构师口头传授设计给新人,必须通过口头交流设计,弱化了新增成员带来的好处。
▲ 技术架构师应该建立编码规范方针
因为不同的开发者有编码偏好;编码标准需要颁布,这样不同人编写的代码片断更容易糅合在一起。通常,系统架构师负责建立的编码规范方针包括下面几方面的内容:
Exception handling
Logging
Testing
Threading
▲ 技术架构师为项目经理识别和分解任务
在J2EE项目中,这个作用尤为重要,因为J2EE项目往往比一般系统项目牵涉更多的技术层面。另一方面,帮助项目经理做估算和计划,也需要架构师提供项目主要任务的划分情况。
▲ 技术架构师为困难任务向开发者提供监护
如果开发者因困难的任务而放缓进度,通常是技术架构师帮助提供解决方案。技术架构师更多的是提供监护而不是亲自操刀去做实现。
▲ 技术架构师应贯彻编码规范的实施
作为编码规范的制定人,技术架构师最可能在编码规范没有被遵照时及时发现问题,因此应该担负贯彻执行编码规范的任务。项目经理通常关注的是开发任务的完成与否,而不是实现任务的代码是否遵照了编码规范。
直接审核代码是非常好的手段之一。如果团队成员审核代码的话,任何开发者都很难绕开团队开发代码规范。
代码审核机制还是团队成员互相学习编码技巧的上好手段。技术架构师在这个过程中发现设计缺陷和漏洞,所有参与者从其余的团队成员学习编码手段和技巧。团队中最富经验的和架构师帮助和指导代码审核。为取得最好效果,代码审核应该在和谐友好的气氛中进行。
▲ 系统架构师应该为项目经理在项目估算方面提供的帮助
虽然项目成本和收益的估算通常是项目经理的职责,但是许多项目经理在J2EE技术体系方面经验不多,无法觉察到项目中所有应该做到的事情。
▲ 系统架构师应该在如何确定开发者定位方面向管理者提供帮助
虽然人员使用和任免通常是管理范畴的事情,但技术架构师更能适合评价技术水平和价值。不正确的人员任用会对项目时间线造成相当大的损害。
项目经理负责协调安排项目开发团队的所有任务。项目经理还要针对当前项目的事务和状态向管理层和最终用户代表做好沟通。甚至,项目经理还需要收集项目或项目团队所需的各种资源。技术架构师负责向项目经理提供技术方面的建议和指导。技术架构师还协助项目经理明晰必须完成的项目任务分工和和必须遵照的任务次序;以及帮助项目经理对项目所需资源和条件进行识别,包括项目团队成员的选择,从技术角度确认他们的技能是否适合。
业务分析师负责面向最终用户,定义应用的需求-设计和创建应用所需要的需求细节。因为最终用户和开发者通常使用不同的术语,业务分析师还需要承担最终用户和开发者之间的翻译转换工作。通常一个业务分析师应该应该具有用户端的经验和开发者的经验。
随着项目进程不断向前,业务分析师的任务和角色功能逐渐弱化,但是并没有消失。开发者通常会在代码实现逐渐明朗,测试活动逐步开展的过程中附带提出一些细化的业务逻辑问题。业务分析师需要针对这些问题向用户方面寻求答案。
技术架构师负责确认业务分析师定义的应用需求是适当的,满足开发和设计需要的。期望百分百的分析都能完成且正确,是没有道理的。毕竟,分析工作本身在一些程度上就是主观的东西。但是,分析的结果起码足够保证设计阶段的工作能够顺利进行。
许多应用,尤其是那些非常大众化的应用,需要专业的美工和布局设计。绝大部分技术架构师,通过他们自己的手段能够产生功能性Web页面,但那些页面通常丑陋且难于使用。图形界面设计,是技术更是艺术。通常,界面布局设计师主要和业务分析师以及其它的业务方面的代表们一起工作,作出相应的设计。但界面布局设计师也可一和表现层开发者一起创作系统原型。
技术架构师需要负责确认界面设计在技术上的可行性。我见过许多Web 页面的设计众,使用了一些在word中才允许的特效,但这些HTML是不支持的;例如:使用旋转90度的文本。技术架构师应该尽可能早地纠正这些错误。
表现层开发者,负责为整个应用编写所有与HTML, Javascript, JSPs, Applet/Swing code, Servlets 等相关的代码。一般来说,任何直接产生用户界面的程序,都是表现层开发者们的职责范围。表现层开发者常常和界面布局设计者合作,由表现层开发者创建原型和最终实现。表现层开发者还与架构师一起确定前端结构和业务导航设计。
技术架构师负责保证所用的设计模式是可维护的,可扩展的。导航问题通常是复杂的容易导致产生难维护的代码。架构师处在很好的位置上,去发现和纠正可维护性问题,以及凸现出的其它方面的技术问题。
业务逻辑开发者负责编写应用中所有不可见部分的代码:包括Enterprise bean,Web services,RMI services,CORBA services,业务对象(business objects),以及数据存取对象(data access objects).也有人把这些不可见部分称为应用的服务器端组件。业务逻辑开发者通常是Java专家,与架构师合作紧密,并且还在需要的时候做性能调整方面的辅助工作。技术架构师给业务逻辑开发者提供指导。通常,技术问题都出现在服务器端组件,毕竟服务器端组件是应用中最复杂的部分。因此,技术架构师常要监督业务逻辑开发者的工作。
数据建模工程师根据业务逻辑分析的信息,对应用中所有需要存储到数据库的数据进行识别、定义和编目(catalog)。数据建模通常需要将应用的数据用实体联系图(ER diagrams)描述出来。DBA根据实体联系图生成数据库的物理设计。因此,数据建模工程师和DBA常常是同一个家伙。
技术架构师需要负责确认数据建模是适当的。和业务逻辑分析工作一样,期望数据建模工作100%正确是无理的。不过,如果数据模型基本上遵照第三范式完成的话,未来的建模的变化和数据库的变化就会很小了。
数据库管理员负责遵照应用的业务需求设计数据库,并搭建和维护应用所需的数据库和环境。通常,数据库管理员要辅助性能调优,还要帮助业务逻辑开发者诊断应用开发中在数据存取上出现的问题。有时候,数据管理员既是业务逻辑开发者,还充当数据迁移专家。
技术架构师和数据库管理员一起解决有关数据存储的问题。不过,通常情况数据库管理员还是首先和数据建模工程师以及业务逻辑开发者沟通解决问题。
有些应用,例如哪些涉及到数据仓库的应用,很大程度依赖与从其它来源做数据迁移工作。数据迁移专家书写并管理所有脚本和程序,保证在运行中,将应用所需的数据转移出来。如果一个应用少有或没有数据迁移工作,则这个角色就没有,或者由数据库管理员一并充当了。
系统架构师为数据迁移专家定义数据迁移需求。和数据迁移专家一起解决数据迁移中的问题,则是技术架构师的另一个角色。
基础结构专家负责提供全部研发、测试、生产环境和部署方法。正规的研发和部署配置,能节省时间和精力。职责在于容器管理,书写部署脚本,辅助开发者们诊断测试环境的问题。
架构师定义配置需求给配置专家。架构师和配置专家一起决定所需环境的数量、特点以及每个环境所需的支持等级。许多项目至少需要一个开发环境、一个测试环境和一个生产环境。有些组织中将配置专家的角色和技术架构师的角色合而为一。
一个测试专家通常是面向细节的,测试专家负责确认软件产品符合规范,并发现那些不该被漏过的bug。一般而言,测试专家至少需要具有软件产品所涉及业务的基础知识。
技术结构师需要和测试人员一起明确配置需求和所需的支持。项目经理和业务逻辑分析师通常需要创建测试计划文档和测试方法。因此,架构师在测试工作方面,通常是提供一些必要的支持。
工作职责:
1、负责基于j2ee架构的软件系统架构分析、设计及原型实现,指导技术团队完成产品研发;2、参与制定设计及实现规范,指导设计、实现及部署工作;
3、配合项目经理进行技术决策,进行技术风险评估;
4、协助、指导工程师解决关键问题;
5、设计开发关键性功能模块。
任职资格:
计算机及其相关专业,本科及以上学历;
2、5年以上工作经验,3年以上j2ee应用开发经验,2年以上产品设计、架构经验;
精通j2ee系统架构,深刻理解j2ee架构的优缺点,具有大型基于j2ee体系结构的项目规划、系统架构设计、开发经验,精通j2ee设计模式;
深刻理解软件系统架构,精通面向对象分析设计方法,逻辑能力佳,具有丰富的ooa、ood、oop以及uml建模经验;
熟悉rationalrose、powerdesigner等系统分析设计工具;
精通websphere/weblogic/jboss/tomcat等主流j2ee应用服务器;熟悉hibernate,struts,spring框架设计者优先;
熟悉oracle/sqlserver/mysql等主流数据库管理系统、相关技术及工具;
熟悉unix操作系统及相关技术;
擅长技术文档的书写;
具金融软件行业、银行内部工作经验者、有银行系统开发实施经验者优先;
11、具备良好的表达和沟通能力,具备极强的团队精神和合作精神,对工作有热情,能够在一定压力下工作。
职位描述:
1、负责J2EE系统(电子政务方向)的架构设计,框架选择,模块设计,并解决主要技术问题
2、负责项目团队的日常管理
职位要求:
1、通信或电子类相关专业本科以上学历
2、5年J2EE系统开发经验
3、熟悉Structs、Spring、Hibernate、Ajax、Weblogic
4、负责过电子政务系统的架构分析与设计
5、有过团队管理经验
6、英语良好,能够口语交流
【必需条件】
(1)5年以上工作经验,拥有开发3个以上大型J2EE项目开发的经验
(2)精通Java, XML, WebService的开发
(3)精通J2EE 技术规范框架,熟悉Struts, hibernate, Spring等轻量级开源框架
(4)精通websphere or weblogic等J2ee服务器的的应用和开发
(5)精通Unix/Linux系统,精通db2等常用数据库
(6)拥有良好的沟通能力和团队合作能力。
【优先条件】
(1)熟悉liunx c 和gcc编译器
(2)有金融行业或者较大项目设计开发经验
任职要求:
1、全日制统招本科或以上学历;
2、熟练使用java语言,熟悉JSP、JAVABEAN、SERVLET、XML、struts,hibernate等技术;
3、两年以上基于oracle、Sqlserver等主流数据库的项目开发经验;
4、非计算机专业毕业人员要求有计算机软件相关职业认证证书;
5、承担过软件开发项目的技术负责人优先录用;
6、从事过ERP/CRM实际项目开发者优先;
7、从事过通信行业应用软件开发者优先;
8、熟悉C/C++语言者优先。
职责范围:
1、软件开发项目经理/高级软件工程师:
带领软件开发项目小组完成开发工作。
2、软件工程师:
负责公司软件产品的设计及开发工作。
职位描述
要求:
1、具有三年以上Java项目开发经验;
2、至少有一个以上项目管理经验或担任过大型项目开发组长;
3、具有项目产品开发工作经验者优先;
4、熟悉Hibernate/sping/stuts/webwork/ajax等主流技术;
5、有责任心和敬业精神;
职位要求
负责系统的业务调研和需求的整理
要求:
具有多年的需求分析工作经历
具有良好的交流能力
熟悉保险业务者优先考虑
能够使用OO思想进行需求调研和分析工作
熟悉常用的建模工具,如Rose, Together, Visio等
职位要求
岗位职责:
1、归纳公司产品UI需求,制定公司产品界面规范;
2、参与新产品开发,对界面进行整体规划,负责DEMO的制作,负责产品界面的设计和制作;
3、整理现有产品,对界面进行重新规划,制作界面模板;
4、为相关技术人员提供界面设计和制作方面的培训和咨询。
任职要求:
1、具备良好的美工基础和实践经验;有较强的审美观和美术设计功底,善于色彩搭配。
2、精通HTML、XHTML、CSS页面设计方式;
3、熟悉DIV、XML、XSLT页面布局方式;
4、了解网站及软件产品技术结构;
5、熟练使用Dreamweaver, Photoshop, Falsh, CorelDRW, Fireworks,Illustrator等工具;
6、熟悉行业应用软件的界面需求,包括c/s,b/s架构的软件界面布局者优先;
人员要求:
1、本科以上学历,计算机科学与技术专业,有2年以上的软件开发经验;
2、具有深厚的美术功底和良好网页艺术效果设计构思能力;
3、熟悉j2ee架构和j2ee B/S结构中间层架构,了解SOA/webservice等开发理念;
4、精通javascipt, 熟悉各种流行的ajax框架.
5、有良好的界面平衡感,熟悉div页面制作/css,具备VML/Flash ActionScript能力尤佳
6、良好的xml /dom解析能力,熟悉xPath/xForm/xQuery, 具备xsl/xslt等复杂应用的开发能力
7、有多年网页设计、软件界面设计的工作经验,对设计有较深的理解和大量的实践案例;
8、良好的学习能力和钻研精神,有团队合作意识;
岗位要求:
1、有大型商务网站或门户网站开发经验尤佳;
2、具备良好的客户意识,产品易用性和界面整体设计能力。
职位描述:
1、结合需求人员的需求文档、进行分析整理,完成合理的数据模型设计和设计文档的编写;2、撰写或参与项目/产品总体设计
3、参与设计评审,根据评审意见对模型方案进行修改;
4、积累行业经验,引导客户需求,把握产品方向;
5、负责所属的其他建模或开发人员的培训;
职位要求:
1本科及以上学历,计算机或相关专业,二年以上开发工作经验
2了解bi、数据仓库基本原理,有数据仓库的项目经历
3精通sql并熟悉至少一种数据库系统的安装配置和优化:oracle、db2、sybase、sqlserver
4具有etl实施经验,熟悉informatica、datastage优先
5有银行、保险、基金或其它大型企业数据仓库系统或其它管理系统开发经验者优先录用
6有团队合作精神
职位描述:
1. 负责不同项目的数据库设计,尤其是逻辑数据模型,与实现
2. 根据特定需求对生产数据进行数据分析并生成报表
3. 为在线分析系统和数据仓库系统搭建ETL及其他相关流程
4. 深入了解各产品线应用系统的系统功能,商业逻辑与数据库架构
5. 参与公司应用系统软件的设计开发, 为系统开发人员提供数据库技术支持, 包括设计与建立应用系统数据库,SQL语句的编写与优化 ,以及索引、分区等方面的性能优化
6. 负责Oracle数据库的日常管理、性能优化、健康检查和监控, 保障系统24x7无间断运行
7. 对开发、测试及生产环境提供数据库的安装、维护,及更新等方面的技术支持
8. 负责数据库的备份、升级、补丁与迁移, 并针对可能出现的缺陷随时提供TAR解决方案
9. 监控并确保生产数据库的正常稳定运行
10. 与其他相关团队协作进行生产及其他环境的数据库维护
职位要求:
技能要求:
1. 精通关系数据库设计原理, 具有逻辑与物理数据库设计的实际工作经验
2. 熟练掌握SQL编写与调试,能编写复杂SQL查询语句以满足特定查询需求
3. 精通在线分析系统与数据仓库系统的ETL及相关应用的设计与实施
4. 具有支持与维护大型数据库的实际工作经验
5. 精通Oracle(8i,9i,10g)数据库在各种操作系统平台(Sun Solaris, Linux等)的安装、维护及故障排除
6. 熟悉Linux, Sun Solaris及Windows等常用操作系统及其shell语言
7. 具备优秀的沟通协调能力及团队合作意识、较强的敬业精神和客户服务观念
8. 具备良好的学习能力,能够在短期内对新的项目与技术进行深入的学习及理解
9. 能胜任在多项目多重时限的环境中工作, 独立解决问题; 具有良好的逻辑分析能力
10. 拥有良好的英语听说读写能力;能与国外员工一起工作
职责描述:
- 负责与海外客户沟通,了解新旧系统之间的差异,制定出具体数据迁移的范围,方法及相应工作计划;
- 根据前期形成的文档,指导及协助脚本的开发;
- 参与负责后期的测试,调优,部署工作。
- 提供海外出差机会,对于有致于这方面发展的人才是一个很好的机遇和挑战。
任职资格:
- 本科及以上学历,计算机及相关专业;
- 具有良好的英语沟通能力,能直接和海外客户沟通,有相关海外学习或工作经历者优先;
- 了解关系数据库理论,至少熟悉一种大型关系数据库,如ORACLE,熟悉PLSQL;
- 具有良好的组织协调沟通能力和团队合作精神,能承受一定的工作压力,并适应较频繁的国内外出差;
- 熟悉UNIX操作系统及数据库调优者优先。
岗位职责:
1、与各产品的开发团队配合,为产品的配置管理活动提供支持;
2、为项目提供配置管理流程、工具方面的咨询、培训和支持,确保项目组成员理解并能正确使用配置管理流程、工具;
3、实施软件的构建和发布, 开发自动化构建脚;
4、参与软件产品(文档和代码)的基线管理、版本管理、发布管理、变更管理、配置审计等工作。
职位要求:
1、熟悉配置管理理论,具有2年以上大型软件配置管理经验;
2、熟悉ClearCase、VSS、SVN、CVS等配置管理工具,并对工具研究有浓厚的兴趣;
3、有丰富的大规模并发作业模式下的软件代码版本控制、整理、构建和发布的相关工作经验;
4、有丰富的基于产品线的软件产品和软件项目的关联配置管理经验;
5、有丰富的大型应用软件系统维护阶段的新需求和变更驱动下的软件代码版本控制和服务配置管理的工作经验;
6、熟悉CMMI/ITIL,具有软件过程改进经验;
7、工作态度积极,责任心强,良好的沟通与团队配合能力;
8、本科及以上学历,计算机或相关专业。
职位要求:
- 把握压力、性能及负载测试理论,能够设计测试场景;
- 熟悉1-2种常用压力或性能测试工具的使用,有相关经验者优先;
- 能编写测试脚本者优先;
- 有J2EE或者其他桌面语言开发经验者优先。