我是怎样成长为系统架构师的

我是怎样成长为系统架构师的

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

 

 

来这家公司从事信息化工作已经也有三个年头了,有必要对这三年的工作和成长以及不足之处做一个总结。在此之前,从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,数据持久化等问题,这样便确定了技术方向,这对于没有经验的团队来说,也是艰难的。


上述便是我团队的情况的简要概况。项目总是要做的,由于领导决策了啊。先看上述两个问题我们是怎样解决的。

1.针对开发团队没有JAVA的开发经验,进行培训,由我亲自操刀。培训为期15天,从开发环境熟悉,到JAVA基础知识,上午半天讲知识,下午上机练习。

2.针对没有J2EE的项目经验。

整个项目就我一个人有过J2EE的项目经验,可是我曾经没有做过J2EE项目的架构师至少没有做过如此大型项目的,我仅仅是做过J2EE项目的开发(B/S的,而本次项目是client)并了解软件project、面向对象的设计、设计模式等。怎么办?我们是这样解决的,请老师。专门请了老师来讲架构设计知识。这还不够,我们花钱请人做架构设计。但仅仅是做架构设计,生成一个架构说明书后,离架构的工作还非常远,还有非常长的路要走,而在合作公司做好架构设计后,他们的工作也就基本结束了。后面的架构方面的工作,基本上是由我来做的。我说说我都做了什么事情。

1)依照架构说明书,将整个架构环境搭建起来。

2)开发一套便于开发者开发的开发框架。

3)设计了SwingMVC模式,并开发实现。

4)开发了整个系统的基础组件,为了实现架构中的复用的原则,这个非常重要。

5)负责整个系统的权限的管理,这个非常重要,跟各个模块都有关系。

6)负责开发的编码规范的制定,包含JAVA的编码的规范,同一时候还有质量属性方面的编码的规范。

(7)整个系统的异常处理、日志、错误验证等机制的设计和开发;

(8)第三方系统和工具的集成,如报表系统,浏览工具的集成等;

上述,仅仅有(1)是现成的。其他的都是详细的架构方面的工作。非常多人,都以为,架构师嘛,不就是高高在上的,待在象牙塔里给开发者发号施令的人吗?事实上不然,架构师须要每天跟开发者在一起,一起写代码,一起工作,一起交流。

回想起,在搭建高速开发框架的过程中,开发者在开发的过程中,提出了非常多有意义的改进的意见,直到今时今日,我们还在改进,仅仅有开明的架构师,才可以设计出好的系统,好的基础组件。当然没有意义的,也被筛选掉的,架构师必需要有这种决断力。

SwingMVC模式就不说了,可能每一个团队对于该项设计都会有所不同。

说说怎样实现组件的复用,要实现组件的复用,必需要鼓舞开发者复用已有的组件以统一界面风格以及降低工作量。那么,就要告诉开发者,眼下我们的系统有哪些基础组件,他们都是怎么样使用或调用的。有了这些,开发者自然就肯用了。

关于编码规范,可能非常多人认为这是项目开发中的小事情,事实上不然,某位架构大师说过,架构无小事,编码规范的运行不力,直接影响到整个项目的代码质量,甚至影响质量。比如,要求不要出如今循环,要释放对象,尽量用StringBuffer等。在编码规范的运行的难度是,不是说你有没有规范,而是你的规范有没有被运行。那么怎样使得你的规范被运行呢?

这就须要架构师的耐心和沟通能力了。在整个项目的开发过程中,架构师始终要保持与开发者的沟通,苦口婆心地说,编码规范的重要性。时间长了,开发者养成了好的习惯,架构师也就省心了。

依据上述经验,我做个总结。

1.经验是能够复制的,当您没有这方面的人员时,最好请求专业或外援,并培养自己的人员,同一时候有吸收的学习。

2.架构师是整个团队的技术领导,须要具备领导能力。

3.架构师须要较强的沟通能力,须要与项目的各个方面的人员进行沟通,与项目经理沟通,帮助项目经理制定合理的开发计划;与需求分析员沟通,了解系统的关键需求和非功能性需求;与开发者沟通,使得架构设计可以被真正运行;另外还有与项目经理、物理架构负责人沟通等等。

4.架构师须要编写代码,这样使自己积累很多其它的代码经验,加深理解设计模式,可以帮助自己对于整个项目更加熟悉,同一时候可以回答开发者在开发过程中出现的全部的问题,树立个人威信。

5.架构师需要有较强的IT知识和广博的知识面。IT的知识更新很快,如今云计算等的出现,必定要淘汰一部分架构师,因此,架构师要保持生命力,必需要不断地学习。

6.架构师要懂业务知识。架构设计要满足系统的需求。我尽管刚到公司不久,但因为之前积累了非常多业务相关的知识,经过短期的学习,也掌握了业务知识。

7.不要怕做事情,我在整个系统的开发过程中,我的开发量是别人的三倍还多,但我收获的,则也是三倍还多的经验。

 

 自己的不足之处:

1.有时候会着急,当规范强调了10遍,还是没有得到非常好的运行时,就開始没有耐心了。

2.须要加强沟通能力,将自己的想法可以推销出去。

3.须要在很多其它的业务领域知识方面得到高速的增长。

 

下一步的目标

 

1.系统理论地学习架构知识,使得知识更加固化,以进一步使得架构设计更加科学和有调理;

2.通过广泛地阅读学习企业信息化的各个方面的知识,包含ERPSCM,营销管理,企业战略,企业管理等,每年看书或阅读文章至少100本或篇;

3.熟悉企业的业务流程,与企业不同层次的人员多多地进行交流,多学习,多沟通;

4.多交朋友,多向朋友学习与交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118614.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开放API接口_软件接口开放

    开放API接口_软件接口开放前言在开发测试阶段,或者是在写Demo的时候,难免会用到一些测试数据,有时苦于没有可用的接口,需要自己动手去写,但是这样大大降低了效率,前期我也找了一些开放的接口,这篇文章整理一下,以下接口完全免费,不用注册,返回格式全是JSON,所有接口均可无限制使用,有需要的小伙伴可以进来看看。(ps:所有数据来源于网络,如有侵权,请作者联系删除)图片类接口美女图片:https://w…

    2022年10月3日
    0
  • nginx正向代理(超简单)

    正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。环境192.168.153.179:正向代理192.168.153.178:客户端CentOSLinuxrelease7.5.1804(Core)关闭防火墙和selinux开始部署:首先,两台服务器安装nginx源码安装:1、安装启动安装依赖yum-yinstallwgetgcc

    2022年4月5日
    32
  • 怎么修改HTML网页的名字_如何修改html文件内容

    怎么修改HTML网页的名字_如何修改html文件内容NetCms默认设置中,只能上传Doc文件,不能上传xls文件和PPT文件。 上传文件类型可以“控制面板–>参数设置–>上传文件允许格式”中设置。但是,仅能上传,添加新闻时,添加附件的文件选择框中无法看到xls文件和ppt文件。 通过查看源文件,添加新闻页面是~/Manage/News/News_add.aspx文件,在该文件中,添加附件位置,通过调用JavaScript的s

    2022年9月29日
    0
  • 优先级队列详解

    优先级队列详解动力节点小编来为大家进行优先级队列详解,优先级队列是一种特殊类型的队列,其中每个元素都与一个优先级值相关联。并且,元素根据其优先级提供服务。即,首先服务更高优先级的元素。但是,如果出现具有相同优先级的元素,则按照它们在队列中的顺序提供服务。分配优先级值通常,在分配优先级时考虑元素本身的值。例如,具有最高值的元素被认为是最高优先级的元素。但是,在其他情况下,我们可以假设具有最低值的元素作为最高优先级元素。我们还可以根据需要设置优先级。优先队列和普通队列的区别在队列中,执行先进先

    2022年9月23日
    0
  • MySQL修改表名注释「建议收藏」

    MySQL修改表名注释「建议收藏」MySQL修改表名注释altertabletest1comment’修改后的表的注释’;

    2022年6月1日
    41
  • nginx源代码分析–模块分类

    nginx源代码分析–模块分类

    2022年1月23日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号