来这家公司从事信息化工做已经也有三个年头了,有必要对这三年的工做和成长以及不足之处作一个总结。在此以前,从2001年開始学习JAVA,那时候用Struts的开发的企业也很少,而我在的作项目的企业当时已经本身开发了Struts的高速开发平台,专门作对日软件外包的项目,在这家公司工做,培养了我JAVA基础知识,软件project的认识以及项目管理的知识。随后博士毕业后去了一家外企作了4年的IT系统集成研究,主要用Eclipse Plugin搭建研究项目的验证的Prototype,期间研究了SOA,SSH,LDAP,Web服务发现等技术。数据库
刚来这家公司的时候,领导决策要将系统作重建开发。项目的详细状况是:咱们拥有了成熟的业务功能,仅仅要将老的系统的功能照搬到新的系统中,所以,对于老的系统进行了一次整理和分析,分析了合理的地方,也分析了不合理的地方,不合理的地方,但愿在新系统中进行改进,但原则上,数据库表结构不作大的修改,以避免将给未来系统迁移带来重大困难。固然,由于随着企业的业务的发展,会有新的需求,但大部分的需求都是没有改变的。设计模式
在项目的成员实力方面,没有的是:架构
1.熟悉JAVA的开发者。框架
2.J2EE项目的经验。工具
有的是:学习
1.IT项目的开发、測试和维护经验。编码
2.数据库系统开发经验。(事实上很是重要的,数据库系统对于企业应用来讲,数据也是很是关键的,拥有这样面的经验,为项目的兴许开发提供了很多的经验支持)云计算
在项目的初期阶段还碰到了技术选型的问题,依据应用的特色,终于选择了C/S三层结构,并选用标准的EJB 3.0做为中间层,採用成熟的商用中间件server,这样就攻克了ORM,数据持久化等问题,这样便肯定了技术方向,这对于没有经验的团队来讲,也是艰难的。
spa
上述即是我团队的状况的简要概况。项目老是要作的,因为领导决策了啊。先看上述两个问题咱们是怎样解决的。架构设计
1.针对开发团队没有JAVA的开发经验,进行培训,由我亲自操刀。培训为期15天,从开发环境熟悉,到JAVA基础知识,上午半天讲知识,下午上机练习。
2.针对没有J2EE的项目经验。
整个项目就我一我的有过J2EE的项目经验,但是我曾经没有作过J2EE项目的架构师至少没有作过如此大型项目的,我仅仅是作过J2EE项目的开发(B/S的,而本次项目是client)并了解软件project、面向对象的设计、设计模式等。怎么办?咱们是这样解决的,请老师。专门请了老师来说架构设计知识。这还不够,咱们花钱请人作架构设计。但仅仅是作架构设计,生成一个架构说明书后,离架构的工做还很是远,还有很是长的路要走,而在合做公司作好架构设计后,他们的工做也就基本结束了。后面的架构方面的工做,基本上是由我来作的。我说说我都作了什么事情。
(1)依照架构说明书,将整个架构环境搭建起来。
(2)开发一套便于开发者开发的开发框架。
(3)设计了Swing的MVC模式,并开发实现。
(4)开发了整个系统的基础组件,为了实现架构中的复用的原则,这个很是重要。
(5)负责整个系统的权限的管理,这个很是重要,跟各个模块都有关系。
(6)负责开发的编码规范的制定,包含JAVA的编码的规范,同一时候还有质量属性方面的编码的规范。
(7)整个系统的异常处理、日志、错误验证等机制的设计和开发;
(8)第三方系统和工具的集成,如报表系统,浏览工具的集成等;
上述,仅仅有(1)是现成的。其余的都是详细的架构方面的工做。很是多人,都觉得,架构师嘛,不就是高高在上的,待在象牙塔里给开发者发号施令的人吗?事实上否则,架构师需要天天跟开发者在一块儿,一块儿写代码,一块儿工做,一块儿交流。
回想起,在搭建高速开发框架的过程当中,开发者在开发的过程当中,提出了很是多有意义的改进的意见,直到今时今日,咱们还在改进,仅仅有开明的架构师,才能够设计出好的系统,好的基础组件。固然没有意义的,也被筛选掉的,架构师必须要有这种决断力。
Swing的MVC模式就不说了,可能每个团队对于该项设计都会有所不一样。
说说怎样实现组件的复用,要实现组件的复用,必须要鼓舞开发者复用已有的组件以统一界面风格以及下降工做量。那么,就要告诉开发者,眼下咱们的系统有哪些基础组件,他们都是怎么样使用或调用的。有了这些,开发者天然就肯用了。
关于编码规范,可能很是多人认为这是项目开发中的小事情,事实上否则,某位架构大师说过,架构无小事,编码规范的运行不力,直接影响到整个项目的代码质量,甚至影响质量。好比,要求不要出现在循环,要释放对象,尽可能用StringBuffer等。在编码规范的运行的难度是,不是说你有没有规范,而是你的规范有没有被运行。那么怎样使得你的规范被运行呢?
这就需要架构师的耐心和沟通能力了。在整个项目的开发过程当中,架构师始终要保持与开发者的沟通,苦口婆心地说,编码规范的重要性。时间长了,开发者养成了好的习惯,架构师也就省心了。
依据上述经验,我作个总结。
1.经验是可以复制的,当您没有这方面的人员时,最好请求专业或外援,并培养本身的人员,同一时候有吸取的学习。
2.架构师是整个团队的技术领导,需要具有领导能力。
3.架构师需要较强的沟通能力,需要与项目的各个方面的人员进行沟通,与项目经理沟通,帮助项目经理制定合理的开发计划;与需求分析员沟通,了解系统的关键需求和非功能性需求;与开发者沟通,使得架构设计能够被真正运行;另外还有与项目经理、物理架构负责人沟通等等。
4.架构师需要编写代码,这样使本身积累不少其它的代码经验,加深理解设计模式,能够帮助本身对于整个项目更加熟悉,同一时候能够回答开发者在开发过程当中出现的所有的问题,树立我的威信。
5.架构师须要有较强的IT知识和广博的知识面。IT的知识更新很快,现在云计算等的出现,一定要淘汰一部分架构师,所以,架构师要保持生命力,必须要不断地学习。
6.架构师要懂业务知识。架构设计要知足系统的需求。我尽管刚到公司不久,但由于以前积累了很是多业务相关的知识,通过短时间的学习,也掌握了业务知识。
7.不要怕作事情,我在整个系统的开发过程当中,个人开发量是别人的三倍还多,但我收获的,则也是三倍还多的经验。
本身的不足之处:
1.有时候会着急,当规范强调了10遍,仍是没有获得很是好的运行时,就開始没有耐心了。
2.需要增强沟通能力,将本身的想法能够推销出去。
3.需要在不少其它的业务领域知识方面获得高速的增加。
下一步的目标
1.系统理论地学习架构知识,使得知识更加固化,以进一步使得架构设计更加科学和有调理;
2.经过普遍地阅读学习企业信息化的各个方面的知识,包含ERP,SCM,营销管理,企业战略,企业管理等,每一年看书或阅读文章至少100本或篇;
3.熟悉企业的业务流程,与企业不一样层次的人员多多地进行交流,多学习,多沟通;
4.多交朋友,多向朋友学习与交流。