您好,欢迎访问三七文档
项目经理和架构师一、软件项目经理兼职架构师的无奈1.国内似乎流行软件项目经理兼职架构师2.其实大家都知道软件项目经理不是架构师3.合格的架构师凤毛麟角4.为了保证项目成功,还是由软件项目经理兼职架构师吧1.国内似乎流行软件项目经理兼职架构师软件项目经理兼职架构师,在国内的软件项目中随处可见。一个项目,不管是2、3个人的小项目还是10多人的大项目,大多数软件项目经理都是一把抓,亲自参与程序的设计和核心代码的编程。不光是小公司,国内知名软件企业不少项目也是这么干出来的。2.其实大家都知道软件项目经理不是架构师这种现象历来有不少所谓的管理大师对此大加批评。大师们总是提出项目管理理论证明项目经理兼职架构师是管理不善,是决不可取的;并经常举出IBM、微软等例子证明他们的观点。对于这种纸上谈兵的论调,笔者颇不以为然;这种废话也并非什么高深理论,其实大家都知道软件项目经理不是架构师。3.合格的架构师凤毛麟角出现这种现象的真正原因其实很简单。因为几乎找不到合格的架构师所致——现在不单是小企业,就是国内知名的软件企业也奇缺合格的架构师。合格的架构师一般要求有8年左右的软件开发经验,而且要具备非常强的技术能力。笔者提出软件项目经理技术能力100分应该有80分左右(软件项目经理需不需要懂技术),架构师则应该有90分以上。以这个条件,想找合格的架构师,难!当然,牛人也有,而且大多数牛人远比这个条件优秀的多,可惜的是他们都已经是技术总监或者首席架构师了。4.为了保证项目成功,还是由软件项目经理兼职架构师吧在这种情况下,具有5年左右开发经验的项目经理当然应当承担构架师的责任。不然谁敢让1、2年经验的员工去冒险?所以,项目经理兼做架构是现有国情下的正确选择,绝对是明智的;如果项目经理让经验不足的开发人员勉强去做架构,那才是项目经理的失职——如果出现这种情况,高层管理者应当反思是不是找了个冒牌货。说到这里,相信大家不难明白为什么IBM、微软能够职责分明的原因了。二、架构师之路/系统分析员、系统架构师、项目经理的区别架构师(Architecture)是目前很多软件企业最急需的人才,也是一个软件企业中薪水最高的技术人才。换句话说,架构师是企业的人力资本,与人力资源相比其能够通过架构、创新使企业获得新的产品、新的市场和新的技术体系。那么什么是架构师、架构师的作用、如何定位一个架构师和如何成为一个架构师呢?这是许多企业、许多程序员朋友希望知道的或希望参与讨论的话题内容。所谓架构师通俗的说就是设计师、画图员、结构设计者,这些定义范畴主要用在建筑学上很容易理解。小时候到河中玩耍,经常干的事就是造桥,步骤如下:1、在沙滩上画图;2、选择形状好看、大小适合的石头;3、搭建拱桥。其中我们挑出来画图的那位光PP小孩就是传说中的“架构师”了。在软件工程中,架构师的作用在于三方面:1、行业应用架构,行业架构师往往是行业专家,了解行业应用需求,其架构行为主要是将需求进行合理分析布局到应用模型中去,偏向于应用功能布局;2、应用系统技术体系架构,技术架构师往往是技术高手中的高手,掌握各类技术体系结构、掌握应用设计模式,其架构行为考虑软件系统的高效性、复用性、安全性、可维护性、灵活性、跨平台性等;3、规范架构师是通过多年磨砺或常年苦思顿悟后把某一类架构抽象成一套架构规范,当然也有专门研究规范而培养的规范架构师。他们的产物往往也分为应用规范和技术规范两类。与建筑学类似,如果软件系统没有一个好的架构是不可能成为成功的软件系统的。没有图纸的建筑工地、没有设计的造桥工程都是不可以想象的混乱世界。建筑工程如是,软件工程中亦然!由于国内合格、胜任的软件架构师极为少见,直接导致了我国民族软件产业水平的落后。在未来以信息产业为主导的社会,信息产业水平的低下将直接影响国家核心竞争力。究其原因,无企业非急功近利、个人缺乏引导。企业的急功近利是有无法克服的原因的,那就是社会发展总体水平。“生存是第一位的,赚钱是第一位的”,多年来许多客户抱怨国内的软件公司无法信任、系统项目累做累败、公司越换越差,但因国外不可能给中国做应用系统项目还不得不找国内软件公司做。由于人月费用低、公司开发成本高,软件企业对于应用只能草草了事,拿钱走人(很多公司拿不到后期尾款)。这样的环境下,企业几乎无法投入更多资源培养自己的架构师,加上眼花缭乱的跳槽风气企业更是不愿投入……那么要成为架构师的途径似乎只有现在较为流行的软件学院和个人自我培养了。关于软件学院我接触过不少,其宗旨绝大部分都是造就(or打造)企业需要的软件架构师(or程序员or人才)。教师来源与企业、学员来源与企业、人才输送到企业是他们办学的手段。尽管各个如雨后春笋般出现的软件学院口号差不多,但恐怕大多只是为了圈钱卖学位了事...架构师不是通过理论学习可以搞出来的,不过不学习相关知识那肯定是不行的。参考软件企业架构师需求、结合目前架构师所需知识,总结架构师自我培养过程大致如下仅供参考:1、架构师胚胎(程序员)学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。2、架构师萌芽(高级程序员)学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容)3、架构师幼苗(设计师)应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计模式(c++版本、java版本)、ejb设计模式、J2EE架构、UDDI、软件设计模式等。在此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。4、软件架构师的正式成型在于机遇、个人努力和天赋,软件架构师其实是一种职位,但一个程序员在充分掌握软架构师所需的基本技能后,如何得到这样的机会、如何利用所掌握的技能进行应用的合理架构、如何不断的抽象和归纳自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才这可不是每个人都能够遇上的馅饼……然而学海无涯,精力有限,个人如何能够很快将这些所谓的架构师知识掌握?这是秘密,每个人都有自己的独门家传秘笈就不敢一一暴露了。不过有一点就是广泛学习的基础之上一定要根据个人兴趣、从事领域确定一条自己的主线来努力。如果说架构师是在模型图纸上工作的,那么模型元素必须是实实在在的,正如我们不可能期望抽象派画家来设计高楼大厦,没有实际意义的模型元素,是不可能构筑出软件系统的。迄今为止,绝大部分软件架构师是依赖软件程序员来实现他们的架构意图的,这二者直接的鸿沟是显而易见的。设计模式的出现是为缩短二者之间的鸿沟所做的努力,目的是让架构师和程序员之间有更多的共同语言和规范。尽管设计模式让软件开发效率和质量有一定程度的提升,但是它始终面临一个很明显的局限,那就是人的因素。人虽然在创造性方面有绝对优势,但是在精确性、持久性、效率、质量上是无法比拟机器的。所以我们希望在软件系统构建过程中,人和机器发挥各自的长处,也就是说,让人来扮演架构师的角色,而让机器来扮演程序施工者的角色。事实上,目前已经有了成功的模式了,那就是KCOM商业工程()企业应用平台所采用的基于设计的全自动化软件工厂模式,采用这种模式,架构师在工具平台所提供的模型图设计环境里做软件系统的设计,设计结果由工具平台自身所带的“软件工厂”自动加工成最终企业应用软件系统。这样的开发模式,能使企业应用软件系统的开发在效率、质量上有了质的提升,从根本上区别于传统的设计模式,因为这里的设计模式已经包含在软件工厂编译器之中了。系统分析员、系统架构师、项目经理的区别系统分析员重点关注客户的业务,将客户的需求转化成类似用例图这样的表示,从而架起客户与系统设计人员之间的桥梁,所以系统分析员要朝着客户业务专家的方向发展针对现有系统在业务/数据/组织结构等方面进行合理的分析和优化等功能,就是能指出系统中哪些东西是好的哪些有问题等等.,比如专注电信行业、电力行业、金融行业等。系统架构师关注的是软件的骨架,就像设计大楼的设计师一样,把大楼的框架设计好,至于里面的分隔、装修等不是他的关注点,所以系统架构师往往能够从系统需求(规格)书中很快的抽象出今后系统将会成为怎么样的一个系统的轮廓,然后将部件、部件与部件之间的交互用类似UML这样的建模语言表达出来,供详细设计人员参照。系统架构师必须拥有相当的工作经验,并善于从以往的项目中总结出各种设计模式并加以引用到新的系统中来。项目经理一般是指软件开发项目经理,其关注点是开发计划的编制、计划的执行、计划的检查等,以按时保质开发出软件为终极目标,但涉及面却非常广,既要有良好的技术背景,又要有与人沟通的能力(一般技术人员出身的人最欠缺的),要讲究一定的方法论,但更要掌握管理方方面面的最佳实践。常和好友孙向晖探讨软件开发之道,他把我作为架构师推荐到程序员杂志,提笔良久却不敢下笔。虽然多年来一直负责开发浪潮软件的企业应用架构,却总觉软件架构师在软件行业中是一神圣的称号,所以不敢随便妄称架构师。本文叙述了笔者工作以来的历程,穿插谈谈工作以来的一些关于架构师的体会。尚在大学时候,非常崇拜那些技术天才,特别对求伯君前辈等以一己之力编写著名软件的前辈豪杰等佩服得五体投地,期望有一天也能像他们那样成为大侠。无论黑天白夜,挥斥键盘程序人生,累了可以游戏中十步杀一人,何等自由与潇洒?毕业后到公司,有了机器,抱床被子到办公室,静躺着躲过12点钟保安手电的扫射检查,就可以在里面通宵奋战了。两个月时间,也终于把自己打造成气质癫狂、头发蓬乱、脸色苍白、双眼通红、键盘敲得满屋响,具备技术高手的一切外表特征的狂人了。和大多数新工作的程序员一样,那时是比较喜欢搞纯技术的工作,隔壁办公室还有另外一位气质癫狂的战友,和我一样喜欢键盘敲得满屋响,闲暇时候常聊些技术话题,也都对写数据库的增删改程序比较深恶痛绝,觉得比较俗。不甘于平静的生活,决定跳槽去淘金,新去的公司使用Lotus,在这个公司持续了短暂的两个月的通宵奋战。对Lotus学得也算小有心得。(回头想想,如果没有工作前几年的知识积累和对技术的狂热,我或许永远也走不到现在这条路。)对技术的狂热兴趣和爱好,不仅对于架构师,而且对于想做好任何工作的人都是必要的,只有对真正感兴趣的工作,方能做得出类拔萃。转眼间风气云涌,.COM泡沫正起,BS开始大行其道,试用期没有结束就辞职开始了短暂的创业经历。头是个为了搞个程序可以几天不合眼的人。他认准了BS结构和J2EE,带着我们追逐J2EE之梦,那时是2000年初。不过这次是完全不用Lotus,改为使用Java了,从学校时候使用VB,到工作后用Unix下C,新的公司用Lotus,现在又完全不用Lotus改用Java了。从学校时候使用VB,到工作后用Unix下C,新的公司用Lotus,每样在周边环境中都能成为佼佼者。有一段时间也是比较浮躁,寻思刨根究底每样都学明白又有什么用?书到看时方去学就行了。这种心态前前后后持续了半年,其间虽然还熬夜,却是都打游戏了。一段时间下来,做J2EE的应用心里还是没有一点底,募然回首,发觉这一段时间收获空空如也。在头的指导下,对自己做了反思和重新定位,其时架构师的概念在国内开始比较热了,于是我对给自己树立了一个目标,做架构师。目标树立起来后,回顾工作两年来的情况,分析和目标的差距,朝着目标一步步前进。下面是当时的一些反思和体会:补充基础理论知识。IT的技术发展是非常快的,新技术层出不穷,但是各种技术之间很多原理是一样的,是相通的,重要的是要把原理搞通。笔者所在的学校以管理严格、学生基础扎实、踏实勤奋而著称。但在大学的时候毕竟由于缺乏实践对理论的认识不到位,工作以后回过头来看看老书,发觉有更深刻的认识和丰厚的收获
本文标题:项目经理与架构师
链接地址:https://www.777doc.com/doc-4504244 .html