系统架构师和项目经理职能区别,以及冲突解决方法
架构师这个称呼不是拍脑袋想出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,我们参考一下,他们把架构师分为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。微软的这个分类是按照架构师专注的领域不同而划分的。
(一)系统架构师和项目经理的差别
1、一个不合理的计划往往被归咎于项目经理,但这并不是事实。计划的制定严重依赖于系统架构师所设计系统的部件完成工序,而唯一能对这个作出准确判断的只有系统架构师。所以,计划的最初版本是来源于系统架构师而不是项目经理。项目经理在这方面的主要作用是协助系统架构师制定计划,帮助考虑人员、资源方面的投入情况,并在项目的执行过程中严格监控项目的进度情况。
2、质量目标的制定和计划一样,来源于系统架构师,尤其是性能、可靠性等关键技术指标,而这些的第一跟踪主体也是系统架构师。项目经理在其中的角色,只是协助系统架构师安排各种资源,完成这些目标的测试、跟踪等活动。
3、成本是唯一的需要架构师以及项目经理共同关注并且严格控制的因素,原因很简单,这是大家靠着吃饭的来源。
4、项目其他的非技术方面的因素,则基本都是由项目经理负责搞定,包括合同、人员沟通、采购等等。
(二)架构师与项目经理的要求
项目经理和架构师这两个职位虽然在工作内容和职责上不同,但是在国内的企业中这两个职位的职责经常会放在一个人身上,在中小型公司中更是如此,一个人既是项目经理又是系统结构的设计者。在比较正式的企业中,也会存在同一个在这两个职位间相互转化的情况,例如从架构师转为项目经理。自己对这两块比较感兴趣,希望能够在这两个职位间自如切换。因而在“猎聘网”找了对这两个职位的说明,摘录如下,作为自己学习和提高的目标。
项目经理
1. 负责项目进度管理、质量控制、人员管理、风险管理,领导项目团队准时、优质实现项目目标;
2. 负责协调用户业务需求,制定具体的项目功能细节,负责软件系统需求的调研和分析,即时反馈阶段性成果;与客户保持联系,并按照客户的合理需求改进;
3. 按照项目要求对业务进行整理和流程设计,按照软件功能要求进行详细设计;
4. 制定项目开发计划文档,量化并分配任务;跟踪项目进度,协调组员合作;
5. 监督项目进展各阶段的文档,如《项目章程》、《项目立项报告》、《需求确认》、《实施计划》、《验收报告》等项目文档的编写,确保文档完整规范;
6. 判断客户需求变更的合理性,同时与组员及客户沟通协调;确认变更时,产生需求变更文档,更改开发计划;
7. 向上级汇报项目的进展情况、需求变更等项目信息;
8. 总结已完成项目,产生项目总结文档;
9. 传递知识,提升团队能力。
架构师
1. 熟悉分布式、高性能架构和开发技术,如分布式应用开发、数据分布式管理和同步等;
2. 精通J2EE系统架构,深刻理解J2EE架构的优缺点,具有大型基于J2EE体系结构的项目规划、系统架构设计、开发经验,精通j2ee设计模式;
3. 深刻理解软件系统架构,精通面向对象分析设计方法,逻辑能力佳,具有丰富的OOA、OOD、OOP、UML及SOA经验,精通RationalRose、PowerDesigner等设计工具;
4. 技术视野广阔,具有良好的前瞻性,思路清晰、逻辑性强,对移动支付和互联网支付的相关技术具有优秀的领悟力和前瞻性,有较强的业务分析能力;
5. 良好的沟通能力、团队合作精神和服务意识;认真负责、具有高度责任感和敬业精神;
6. 对于性能瓶颈可以给出最优的切片,集群和分布式服务器搭建解决方案
7. 理解面向对象分析和设计的基本原则,熟悉常用的设计模式,熟悉UML;
8. 熟悉Java的多线程,线程与线程,进程与进程的通信机制;
9. 精通系统优化,对系统优化原理有深入的理解。对系统端到端性能优化有丰富的实践经验,熟悉各种远程本地Cache组件(尤其是Memcached,Redis),对Cache服务器集群架构有丰富的经验;
IT架构师是根据需求分析人员跟客户沟通后,拿回的客户需求,将面向客户的需求文档变成面向开发人员的开发文档,同时要从功能实现和编程实现的角度出发来做系统的总体规划。
架构师的工作完成后,下一步就是开发团队沟通,然后每个开发人员各自依照开发文档负责一个或多个部分的开发工作。
而项目经理则是整个项目从头到尾的管理者,监督者,他的任务是随时保持和客户、和团队成员的沟通。对团队成员的工作进行监督和审核,以确保整个项目按时、按质、按量完成。包括处理项目实现过程中的一些特殊情况。在需求分析阶段。
简单点理解,以盖房子为例,架构师是建筑设计师,而项目经理就是工头或者说监工。一个管结构,一个管进度。
(三)架构师与项目经理的冲突亟待调和
案例:A软件公司新接手了一个金融IT系统开发的合同项目,公司领导层批准组建了IT软件实施团队实施该项目。整个项目实施由20人组成,其中配置项目经理一个(本人),架构师(老张)一个。团队成员依据项目特点划分为成三个组:业务分析组、数据分析组和技术实施组,每个组分别设置一个小组长。
虽然项目架构师老张的技术工作年限较长(12年),在以前单位也曾做过架构师,但老张在项目团队中发挥的作用非常有限。其主要原因是:1、沟通能力差,与甲方对口的技术组长经常无法实现有效沟通;老张与项目团队成员沟通时,在技术处理细节或方案上,无法让其他技术人员信服;2、组织协调能力差,在工作安排中,项目成员总会有意见,主要问题是不考虑每个人的实际能力情况,简单切分任务。
本人作为项目经理由于是业务出身,在技术方面无法实施有效指导,即想通过构建一个技术核心领导小组:架构师+数据分析组组长+技术实施组组长来共同组成一个项目的技术领导小组,由三个人共同进行进度协商、任务发布和技术指导。
但冲突出现了:架构师老张对此安排非常不满,认为这是削弱他的领导地位,让其他人不能再信服他,随与项目经理产生严重不和。
作为项目经理,我下一步应如何处理和应对。
分析:作为项目经理,在项目初期,没有做好相关的沟通工作,导致现在被动的局面。需要自己反省。
第一:对于老张的优势要给予肯定以及工作上的支持,对于沟通不流程的问题,首先要让老张明白,为什么其他技术人员对于他提出的处理细节和方案无法信服,对于组织协调能力,要向老张反映这个问题,让他本人意识到自己的问题
第二,想法很好,但是没有明确责任界限,对于每个组长而言,他在拿到相应权利的同时,必须也要付相应的责任。对于你提出的技术领导小组,你需要同他们明确每个人的权利和相关责任,对于最终的决策,要取决于你是要3个负责人统一认可的方案,还是需要1个人来敲定方案,这取决于你自己的决定。对于老张,从你的描述中看,你并没有和他做深入的沟通,从而产生了误会。
分析:接下来你可能需要和老张私下进行一次坦诚的沟通了。问题暴露出来了,就要着手进行解决了。个人认为这次沟通可以从以下几点考虑:
1.首先要明确项目实施最重要的就是要完成项目目标,满足用户的需求。这是第一位的。无论是项目经理、架构师,team leader还是团队成员,每个角色都有其相应的应该承担的职责和义务。大家只是分工不同,但方向都是一样的,力要往一处使。不存在谁就该高人一等,也不应一味追求领导的权利。从而导致问题的出现。
2.针对目前出现的问题,分析问题的root cause。无论是项目组成员还是用户,都与老张出现了沟通上的问题。至少一定程度上说明老张目前的沟通方法或方式是有问题的。要让老张认识到问题的所在。如果这个问题不解决,就会影响项目的实施,从而影响项目目标的达成。
3.要让老张知道构建一个技术核心领导小组,就是针对出现的问题,你所采取的应对措施,面对目前出现的问题,作为项目经理的你,不能无动于衷的。为了保证项目的正常实施,不得不采取相应的应对措施。如果老张有更好的解决方法,可以提出来,大家一起商量讨论解决方案。要让老张知道,目前不采取任何解决措施,肯定是不行的,这从一定程度上让他思考或参与问题的解决中来。
4.若老张通过这次沟通,意识到了自己的问题。决定有所改变:无论是你提出的方案,还是他自己提出的其他的解决方案。你们商量讨论后认为对目前问题的处理有帮助,那接下来就要召集一次项目组成员会议,发布你们对目前问题的解决方案。希望大家以后加强沟通,共同解决问题。
5.若通过这次沟通后,老张还是固执己见,不愿面对问题,也不愿进行任何的改进。我想这个时候,处于项目实施整体的考虑,你可能需要公司上级领导的介入了。个人是很不赞同处于怕得罪架构师,对其进行忍让,不去采取任何措施的。因为这已经不是得罪不得罪的问题了,这已经影响到项目的实施了。很有可能导致项目的失败,这就是你作为项目经理的不作为了哦!
分析:这个冲突其实就是项目经理和技术负责人的职责问题,技术负责人会从技术的角度考虑问题,项目经理则是从项目的角度考虑问题,不管怎么样,技术是为项目服务的,项目需要技术来支持,对于项目经理而言,是要让你的项目能够顺利下去,你需要给你们的技术负责人一个简单的时间概念,你们之间先达成一致,至于下面的人信服不信服这是另外一回事,因为你要相信你们的技术负责人,否则项目立刻暂停。其次你需要帮助技术负责人完成对外和对内的沟通,做一个中间协调人。最重要的,你要知道你需要靠什么人,最终是要完成什么事!
分析:技术人员尤其是老资格的技术人员往往很看重面子问题,其实我们很多人都一样。遇到这种问题我认为主要需要从以下几点着手考虑:
1、针对沟通能力的问题,需要让老张自己切实的体会到,这样在做相应调整的时候老张自己心里也会有些理亏的地方,反对的态度可能会有所缓解;
2、在技术领导小组中明确老张的主导地位,并在项目组内部得到确认,这样表面上看老张还是主导人员,可以减少老张的不满心里;
3、对于老张存在的技术方案不能服众、任务分配不合理问题,在相关问题讨论过程中,要创造宽松的讨论环境(鼓励提出反对意见)。如果技术方案或者任务分配不合格,要遇到一次坚决改正一次,这样也可以压压老张的气焰;
4、私下大家多多交流,老张可能与大家存在代沟,技术思维也不一样,大家要相互多沟通,遇到问题心平气和处理,项目经理不能偏袒一方,时间久了应该会有所改善;
5、要在合适的机会利用合适的手段,让老张体会到项目经理是项目的主管,不要一再的挑战你的权威。
分析:1、取长补短。
取长:老张工作年限12年,那么说明他有丰富的项目工程经验。必要时应该利用他的经验去解决难点问题。
补短:因为老张交流能力不强,因此建议重点难点细节通过文档及图像方式沟通。
2、与老张进行有效沟通,通过层级关系让老张架构师的层级关系明显化,让老张有工作成就感和责任感。同事,项目重大事件必邀老张参与讨论。
3、给老张设立一助手,任务分块工作让助手协助完成。
分析:首先要和架构师单独沟通,判断在项目目标上架构师是否和项目经理保持一致,如果大家方向一致,想达到的结果相同,就有了沟通和协商的基本前提。然后清晰问题,双方要在问题上达成一致。然后把沟通的方向变成大家一起解决问题,在此基础上,探索老张的个人需求,可以让老张自己出方案,然后进行不同方案的对比。总之坦诚很重要。
分析:项目经理作为项目的主要负责人,建议做如下工作:
1、建立岗位职责说明书,制定相关的奖惩制度以及风险防范制度。这个风险防范制度包括民主决策制;
2、直接指出架构师的不足点,做深入沟通,在项目组宣贯两位组长的辅助地位并肯定架构师的决定权,充分相信架构师的能力;
3、明确两位组长的作用,主要为弥补架构师的不足等。
4、向公司坦诚现状,如果状况没有改变,建议做人员调整;
5、项目经理1、需要反思:为什么看到的都是架构师的不足?
2、需要补习技术上的知识,知识的缺陷本身将会为项目带来风险!
分析:老张不善于沟通,是已知的事实。在同一个公司内的同事,项目经理事先应该是了解的。针对这点,在与客户的沟通方面,项目经理事前是如何安排的?从案例来看,应该没有识别到这个风险及应对方法。
老张是技术型人才,长于技术语言,与客户直接对话存在沟通不畅,这点可以理解。而当与客户沟通不畅时,项目经理似乎没有发挥作用。
问题出现后,项目经理没有帮助和指导老张去改善采用工作方式,而是用正式的权力来削弱老张的重要性和权威,于是导致老张的不满,这是情理之中的事。
事发后,项目经理想解决冲突,但没有从自身的角度反思,却问大家该如何办!这让我想起一句话:自助者,天助之。
如果不从自身反思过失,是不可能获得别人的谅解的。在这种情况下,问冲突如何调和,我的回答是:不如换个项目经理。
分析:典型的组织内权责矛盾。
1、肯定架构师项目中的地位。
2、明确本项目目标及架构师权责。
3、强调沟通效率在此项目中的重要性。
4、数据分析与技术实施参与目的是协助。
5、业务出身的项目经理重在平衡权责利,一碗水只要不洒出来就成。
分析:1、首先以大局为重。完成项目为目地。
2、因为项目经理技术欠缺,在没有余地的时候,要与老张充分沟通,给他在项目中树立技术权威。
3、在与客户沟通方面要发挥自身项目经理的优势,减少老张沟通弱对项目带来的影响。
4、最坏的打算换人。
分析:要解决架构师与项目经理的冲突问题,首先要向架构师做好沟通解释和说明工作,求得架构师的理解和支持,消除其误会。其次,在由三个人共同进行进度协商、任务发布和技术指导的前提下,应该让架构师担任技术核心领导小组组长一职,让其在技术核心领导小组框架内多和其他成员协商沟通。再次,要向数据分析组组长和技术实施组组长做好沟通解释工作,使其充分听取架构师正确建议,有事多和架构师商量。
