即便没有翅膀,心。。。。。。也要飞翔

https://blog.csdn.net/lifetragedy/article/details/17721681程序员

 

企业IT项目开发之七宗罪(下篇)

即便没有翅膀,心。。。。。。也要飞翔!

 

在新年前一天预祝你们新年好,在新的一年里工做顺利,身体健康。web

 

前一阵公司给我下达了任务,一直在忙着打造面向SAAS的企业级微信平台,完全实现零代码配置,小小一个微信,当面向企业级并且是SAAS时,呵呵,还真的有许多须要注意的地方,很是感谢公司内最强的业务架构师咱们的大姐设计出来这么优秀的一款全动态微信业务。因此写完了中篇,一直没时间来得及写下篇。面试

 

下篇的开头,你们也看到了标题:即便没有翅膀,心也要飞翔!!!数据库

 

为何提这个标题呢?企业IT项目开发之七宗罪上、中篇你们看后不少人都说:目前形势就是这样,有什么办法?也有人说:道理都懂,大环境这样,有什么办法。编程

 

对,对,说得都不错,咱们没法去改变环境,咱们天生不是天使,咱们没有“翅膀,可这就表明咱们要就此沦落吗?api

 

NO!安全

 

咱们的心同样能够飞翔!服务器

 

环境落后没有关系,可悲的是心态也落后。微信

 

步入正题

 

如下我拿一个数据来讲明问题,2005-2011年世界上只有3家IT公司保持着每一年利润超10亿美圆,利润超10亿美圆哦,哪三家?网络

 

NO1. IBM,抛弃了Laptop后反而更强了,为何?

 

NO2. TCS, 塔塔,世界上最大软件外包,网友们要问了,一个外包,作这么大,对吧!为何?

 

NO3. APPLE,那是勿庸置疑的!

 

咱们不说APPLE,只说TCS 和 IBM。

 

IBM,你们若是注意IBM的人会发觉,IBM的WAS系列即Websphere系列经历了2次变化。

 

一次是WAS7开始IBM专门规划出了一个SOA产品区,里面有Websphere Process Server(ESB), Business Process Management, IBM iLog规则引擎,TAM,WebSeal,MQ,而后把WAS归在了这个区。

 

第二次变化是再次把WPS(Websphere Process Server),BPM,ilog等又划出了SOA,归成了中件间产品。

 

为何IBM要对其经典的产品,去作这样作两次大的变更呢?咱们放在下文中说,咱们先举例子,由于太多的道理你可能一会儿不可以去接受,回过头你再来看,你就会明白了。

 

欧债危机持续,企业客户没钱啦

 

随着经济危机,主要是欧债危机引发了金融保险行业的大规模的萧调,你们都知道,金融系统的IT每每都是大型的业务系统,当金融业受到了影响,IT业势必也受到了很大的影响。

 

那么咱们国内不少IT公司都是怎么生存的呢?

 

国内IT公司在经济危机以前的生存之道

 

大部分都是作项目的,或者是卖人头的,对吧!

 

就是我前篇讲到的学好SSH,货卖帝王家,SSH满天飞。

 

根据客户的需求,业务要求,作4个月,6个月的开发项目。

 

有的项目短,作个2个月,搞个项目,而后按照人月数用UCP,FP什么的estimation方法一估,而后报给客户多少多少钱。

 

在欧债危机前,因该是2008年前,或许咱们靠着公司好的名声,经营之道,管理有方,好的PM,好的客户关系,或多或少是能够不断的接到这样的单子的。

 

每每作这样的单子的时候,咱们用最简单的“软件开发生命周期”,就是咱们说的七步曲即:肯定问题、需求分析、设计、开发、测试、布署上线、维护。

 

项目管理基本分红两种模式:瀑布式项目管理和敏捷项目管理,对吧,这个你们都知道。

 

关键的问题在于这个地方,即无论任何一个需求,项目大小,你都必需要走肯定问题、需求分析、设计、开发、测试、上线、维护,若是在项目中或者是项目后期有超出需求的部分,咱们把它定为:需求变动,一个需求变动也必需要走完这7七步走完这七步不算完,还要把之前开发过的代码和工程再从新测试、布署、上线。

 

若是有了BUG,BUG的修改也是要走这七步的,对吧?

 

由于你的需求变化了,不表明我只完成变动后的部分就完成了任务了,由于你的变动可能会引发我已经开发好的功能上出现了BUG,这个问题想必你们都是碰到过的,这样的BUG叫Regression Bug。

 

在经济危机没有来时,你这样作,OK的,客户理应给钱,由于是他本身要变动需求的吗,对吧,不然的话你需求变动我也能作啊,可是没钱所以个人质量就不给你保证,客户也怕,因此愿意掏这个钱。

 

如今经济危机来了,企业怎么生存啊,还能这样生存吗?

 

《哈佛商业评论》上面有一篇文章文章说,IT已经不像之前那么关键了,由于IT的广泛应用,就像水电同样,成了一种基础设施,再也不是企业核心竞争力的来源。

 

经济危机,就是企业没钱啦,没钱,但IT同样须要,”再也不是企业核心竞争力的来源“不表明我就不要IT了,不表明技术无用论,这边的“不要了”只是表明“相关技术的普及"了。

 

普及就是SSH,J2EE, EJB,Webservice这种东西,你会我会你们都会了。

 

因而,大量的还在拿SSH作项目的公司面临着比之前多2倍,不。。。是10倍之多的竞争对手。

 

因而,你会我会你们会。

 

因而,大打价格战,你卖40万,我卖30万,成了自由叫卖市场。

 

因而,工程价格是下来了,GDP上升了,平均工资上升了,程序员的工资仍是要付的。

 

因而,加班不要钱,会个SSH,工做个5,6年还拿着一个月8K,9K,1万块钱到头了,没有年终奖了,Team Building取消了。

 

因而。。。。。。还有不少。

 

最后,因而,程序员成了民工还不如了,哈哈哈哈哈。

 

可是,可是,说多了因而还有一个可是。always 有一个可是,导演老是不给咱们一个happy ending,呵呵,像一些美国大片同样有多个结局哦!!呵呵!!

 

可是,仍是有一部分企业在这种大环境下脱颖而出,挣足了钱

 

这些企业越作越好,人头数就是head count反而年年愈来愈多,在这样的大环境下,还能持续的挣到钱,这些公司的IT人员反而愈来愈脱离业务愈来愈走技术路线了,反而比原来那些每天“业务业务”挂口头的公司挣得更多了。

 

为何?

 

这仍是要从客户的角度去出发。

 

前面说了,经济危机,客户没钱,项目同样要作,按照之前那样,个人一个项目,走完软件开发生命周期7步,若是有变动再按照瀑布或者是敏捷开发来走一遍需求变动,对不起,客户受不了。

 

反正之前的项目已经作了差很少了,新的项目客户要求的是:

 

业务上的功能能够随时变,当这个变动须要被提出时,若是你是开发商,你说:咱们需求均可以作,给时间,而后咱们翻代码,对不起啊,客户不会再让你这么作了。

 

若是你是开发商,你和客户说:你的需求咱们都能作,而后从新估算,走变动流程的话,告诉你,你从2008年后开始就很难接到新的项目了。

 

可能,之前你能够一年接1000万到2000万的单,2008年后你可能一年不如一年,一年能接个500万,300万就了不起了,有的连100万的单子都接不到了,真的,因而你就要面临危机啦!!!

 

喂喂喂喂,知道了吗,危机感啊!!!

 

那有人说了,我业务上的需求功能都变化了,原来是a+b+c*(x/y)如今成了a+b*(x+c-d)了我还不变代码啊?

 

业务完全变了我还不改动程序啊,改动了程序后我还不重测试,重布署啊,这都是人力啊,都要给钱的啊。

 

固然不是说所有100%可以作到,但至少能够说70%以上的需求能够作到不改动代码,就算改动代码了也只须要从新测试新开发的功能就能够了。

 

这就是SOA提倡的东西,这边不是说SOA的原则,咱们说SOA能够作到什么。

 

SOA能够作到什么?咱们粗看一下,有的人以为很空洞,有的人以为“很深奥,看不懂写点什么”,那就先来看一段SOA架构理念吧:

 

1. 模块和模块之间耦合度降到最低!

 

2. 业务间的规则能够由客户自由定义!

 

3. SOA不是一种软件,它是一种设计、实现的思想,它帮助一家企业创建起一个业务的infrastructure!

 

4. 它能够迅速实现客户的需求,为客户提供垂直的业务需求,能够快速的把客户的业务从需求直接变成IT实现!

 

固然还有不少,我先就举上面几条市面上见得最多的”行话“,怎么去理解上面4句话呢?咱们用大水词来理解吧,上面这4句说的就是:

 

1. 我新作的东西,应该按照模块化开发思想,就是你原来的系统给新接入的模块未来的接口要预留好(有人说了,我2011年开发的东西怎么知道你2012年的模块是什么样的,怎么给你预留接口啊,对的,能够预留看,你看下去)。

 

2. 因为我接口已经予留好了,新的模块就像搭积木同样,就是乐高积木啊,把新的东西”插“上原有的模块就能够用啦,若是这个模块很差了,旧了,我拿掉它,再换一个模块。甚至能够作到原本一个项目,10个模块,每一个模块都由一个开发商去实现,而后再找第十一个开发商来搭积木同样的去完成前10个模块的集成啊。

 

3. 而后就是诸如:a+b+c*(x/y)如今成了a+b*(x+c-d)这样的业务变换,我不须要去用个eclipse打开工程而后改动里面的代码,一改就是改jsp, action, service层,dao层对吧,改完后急着上线,而后BUG又是一堆,改不完的BUG,加不完的班,不要,程序员不要走这种路了。

 

4. 像这样的业务改变,你有一个界面,让业务人员就能够本身去经过拖拖拽拽本身去实现需求的变化了啊,这边的业务人员指的是企业里面用你开发的这套系统的最终用户,他们本身通过简单的培训就能够用你的系统本身去定义本身的业务变动啦。

 

若是你的系统可以知足客户这样的需求,啊呀,在如今这个大环境下,当人家公司接不到项目时,你必定可以接到项目。

 

那又有人说了,客户均可以自定义化了,我这个项目结束后不就没有后期维护,后期开发任务了吗,我就不可以长期的稳定的去得到一个客户这边的项目来源了吗?

 

错!!!

 

你错了,客户的需求是不断的在变的,由其是业务系统,那个业务变化太大量了,就说一个CRM系统,一个CRM系统它面临的是每月都在变的业务,为何?促 销,打折,双11,双12,圣诞打折,这些业务都在变啊。

 

个人系统由于耦合底低,能够作到模块间的任意互换,而后我又有这种业务人员自定义规则的界面,因此我新作的模块能够0影响到原有的已经布署的代码,并且我新作的模块的布署是不须要原有的服务器在某天的零晨停一下,而后我重去布署一下这种作法的,取而代之的是24*7的一种模式,因此我管你客户需求怎么变,新的需求拿来,我都是只须要从新估算新的功能的工做是量,可能新的功能里面有70%的业务是能够由客户中的业务人员去自定义完成的,所以这70%我留给客户,30%这我的工费我会收,客户也以为应该给你。

 

由于你作的东西不影响原有系统的功能,不影响原有的系统运行,不会有太多或者就算有regression bug也是降到最底的度,所以客户才会源源不断的每月,给你个20%,30%,10%,而后过几年系统大升级,软硬件中间件一块儿换也找你,就算客户新的模块是找另外一个开发商作的,可是在集成时碰到问题仍是要咨询你啊。

 

因而,项目钱,这个大头是能够挣到了。

 

因而,维护费,每月按期的,并且这种维护由于不是传统的那种翻写原来的工程,改动原有的系统,而只是搭积木同样的,你能够雇用相对便宜的年纪轻的程序员,利润也有了。

因而,你还能够收咨询费。

 

从原来的几个悲惨的“因而”,变成了多条腿走路,多方位收钱的因而啦,呵呵!

 

关键是这样的项目是怎么作的,说了这么多,这样的项目是长个什么样的呢?

 

记得我当年在公司里面临第一次升职选择时,公司给了我两条路:PM道路和技术道路。我选择了技术道路。因而我次日接到了美国总部一个Chief Architect,就是主任架构师的第一轮考核电话。

 

老外,很牛B,大家知道他是怎么考核的吗?至关的夸张:

 

嘿,你,看看公司的员工内部系统,里面有考勤,在线学习资料,请假,报销,你在公司这些年一直用这个系统吧,如今请给我写一下,若是让你设计这个系统,你会怎么去设计?给你30分钟,嗯。。。。。。对,就30分钟,如今是4:10分,请你在4:40分把你写的东西经过email发给我,as much more as you can think。

 

我花了25分钟,最后他用了一个excellent把我给录取到了公司的架构师队伍,从而我成为了中国这边惟一一个可以进入到美国核心技术队伍的成员。

 

那我是怎么写的呢,固然,我也只是给你们参考。 我是这样写的

 

首先,这个系统无论是考勤、请假、报销都有一个”流程“性的东西,由于每作一步,系统都会有相应的EMAIL告诉你或者是某个环节的审批人:你目前有一个什么什么样的任务,还常常会收收到系统的EMAIL要求我上传这个附件,那个附件,驳回,拒绝,经过啦等等等,所以我会采用工做流,若是客户是大型企事业客户我会推荐他们去用一些商用软件如:IBM Lombardi,或者是Oracle的Pega Rulz。若是是中小型客户我会推荐一些开源的工做流如:jbpm, aris或者是activity。

 

其次,该系统中存在大量的”上传单据“,”发票复印件“,”病历扫描件“,”会议文件“,”PPT“等文件上传文档的接口,所以,我不会本身去拿个common upload去作这么多的界面。

 

首先,若是我本身作,若是时间容许,我会去作,可是我本身作这些上传文件的界面和系统,我还面临着上传完后根据个人上级,上上级,上上上级这样的一个”按照权限“查看附件的一个权限系统问题。

 

那我本身作了上传系统后,除了解决按照权限查看调阅这些文件系统外我还须要面临着去作,我上传了第一次,传了不够,加点东西,传错了撤销重上传这么一个版本控制的问题。所以我会选用CMS即Content Management System。

 

比较适中的好的CMS系统如:Microsoft Soft Share Point Server即MOSS系统,或者是纯免费开源的OPENCMS进行二次开发来帮助我作到上述这些事情。

 

而后,这个系统有考勤,有报销,有请假,有在线学习资料课程管理,我确定会按照模块一个个开发,而后模块与模块间的集成怎么办?对吧?这个系统是单点登陆的,这个勿庸置疑,你登陆了企业公司内的AD域就能够登陆这样的一个系统,模块和模块间又要低耦合,那就是按照模块分离开发和布署原则,那只有上PORTAL了,因此Websphere Portal Server或者是liferay portal纯开源免费的这个是。若是不用portal那就是模块和模块间用web service接口,即组件合开发SCA概念。可是组件开发若是按照Webservice来对接,就意味着若是我新作一个模块,须要和原有模块的webservice间的连调问题,所以咱们能够考虑采用esb统一webservice路由后全部的新作模块按照这个统一的接口,而后像搭积木同样把新的模块“搭”上去。


 

还有就是这个系统,同时还链接着公司的财务,进销存等其它系统,它们之间确定会有相似自动”定单“的东西或者是数据交换存在,那就存在着异步调用,那我确定会用JMS,可是JMS里队列我要本身去实现,你有那个能力那个精力本身去实现一个企业级的队列?

给我时间,又说给我时间。

人家企业开发集成4个月,6个月哪有这么多时间给你去本身光开发一个队列系统,你当人家企业是小白鼠啊,经济危机,没钱没时间,OK,因此我会上MQ,开源的我有activeMQ给企业选择,若是是商业级的我推荐用IBM Websphere MQ。

前面刚才说到了单点登陆,这个单点登陆是逃不掉的,并且你光单点登陆是不够的,还要去集成企业内的权限系统,你本身去重头写一个?固然若是如今是一个新产品开发,你能够花2-3个月甚至更长时间把个权限系统作完美了,如今是企业级开发,业务系统,我确定会去想,如何拿灵活的,组件化的模块,成熟的组件去实现我这个需求,所以我会选SSO组件和企业权限组件如:IBM TAM,或者是WebSeal或者是YALE CAS去集成这个SSO和权限,这样,利用这些组件自己强大的访问LDAP即AD的能力我能够把精力专一在如何去组成这个系统上而不是拿个SSH,天世界的每天敲代码把这些东西重头到尾作一遍。

 

而后是安全上的考虑,我会考虑:

1. 我要从应用层面上来讲防止跨站式入侵,SQL入侵,脚本注入入侵,中间人攻击入侵等

2. 我要从系统层面上来考虑病毒的入侵,恶意的DDOS攻击等

3. 数据的传输安全层面我要考虑数据如何保护,哪些层面,哪些传输是须要加密须要保护的

4. 硬件层面的时间同步

5. 因为系统中不少层面上用到了加解密认证等东西,我确定要考虑一个证书、口令管理系统,不可能我只把个证书放在WEB-INF目录下就完了,什么certificate.bin这样的东西就能够整个项目都拿来用了,这是不对的,不能这么干,确定要有本身的证书和加解密管理库的。

 

扩展性上的考虑:哪些层面我是能够集群的,因为是组件化设计和开发,所以哪些面可能面临数据集中访问,访问量大,能够集群扩展,一上集群后你原有的开发的程序会有不少东西须要作同步,和改动,这些我是怎么考虑的。

 

兼容性上的考虑,有些客户有钱,有些客户没钱,有钱的上WAS, WEBLOGIC,没钱的上TOMCAT, JBOSS,那个人系统不可能作4套,对WAS一套,WEBLOGIC一套,对TOMCAT一套而后对JBOSS一套。我系统确定只有一套,在WAS, WEBLOGIC, TOMCAT, JBOSS上均可以运行或者只须要装至关有限的扩展LIB库就能够运行起来对吧?

 

数据库层面,JAVA跨数据库,我确定要最起码支持主流的ORACLE, DB2, MSSQLSERVER吧,不可能会为这几个数据库各作一个版本,我确定是只有一个版本,而后个人SQL语句就能够在DB2时支持DB2, ORACLE时支持ORACLE, MSSQLSERVER时支持MSSQLSERVER吧?(提示:当碰到绕不过去的必须使用到某个数据库的特性来写SQL时,请参照hibernate dialect的原码即实现原理去写你的SQL)

 

基本写了上述这些,而后后面几天的面试与考核固然就是围绕着我第一天写的这篇文章里的技术点进行详细考核了。

 

你们不知道看出来没有,出现了一堆的新东西,由其是最后3项,安全性,扩展性和兼容性。

 

这里不是说我列一下这些名词就能够了,你必须把这些列出的名词都玩一把吧。

 

并且我说了”商业的我会选用哪款产品,为何,开源的我又会选用什么产品,为何“。

 

因此,要成为架构师不是说嘴上可以列出一些名词就能够了,你必须都玩过,就拿个Webservice来讲,你说你会Webservice,OK,用Axis2怎么实现,JAXWS怎么实现,XFIRE怎么实现,SPRING-WS怎么实现,QOS是什么,这些你都必须学过用过才可以说得出一个因此然啊!!!不是说我光会个jaxws就说:我精通webservice了!!!

 

对于实现上述这样的一个系统错误的作法是什么样的呢?

 

本身设计一套数据库去作权限,不少公司这么作,就是基于RBAC原则,固然,咱们能够这么作,前提是:你作的是核心系统,就是一家企业的系统从没有到有都是让你来作的,那么咱们先会从权限系统下手,能够从新设计一套。

 

可是当你触及到的是业务系统时,你大多时间面临的是去集成客户的权限系统和你本身的系统,所以你要想清楚如何去拿你模块自身带有的权限系统去集成客户已有的权限系统,而不是试图去用你已有的权限系统去劝说客户走你的权限模型。

 

碰到审批流程化的东西时,如大量的用VISIO画出来的逻辑去写一堆的IF, ELSE,SWITCH CASE语句,HOHO,千万不要这么作。

 

若是有一个流程的分支改变了,先不说你本身用IF ELSE实现的艰巨与复杂,若是一旦你改变了,可能你可以经过分析之前一堆的IF ELSE代码找到你将要新加的IF ELSE的地方,也可能由于你多加了一个IF ELSE而让原先跑得通的流程所有做废,坏掉。用引擎吧。

 

若是有一个诸如:原来是a+b+c*(x/y)如今成了a+b*(x+c-d),请考虑使用规则引擎,而不是去写一堆的store procedure,由于规则引擎提供了客户自定义规则流,规则描述的图形化界面从而可让客户去本身修改规则。

逆波兰表达式不是让你用在这边来作复杂的企业规则的实现的,编译器原理学了不是让你本身去开发引擎的,除非你作的是科学计算机,企业级开发里请尽可能使用规则引擎吧。

由于有了规则,你能够任意去改变客户的业务规则,由于有了规则,你能够把DAO, SERVICE打包成规则上传后规则会经过CLASS LOADER自动加载而运用到客户现有的系统中从而实现不重启机器又能达到改动规则的目的,由于有了规则引擎,改变规则的事情能够交由客户的业务人员去作,由于他们本身的业务是常常的在变的,而咱们程序员要作的就是给客户提供这些A,B,C,D,,E,F,G的元素,而后让客户本身去组合。

 

我还看到过有用”伪规则“的开发商,这样的开发商真的要被人骂了,就是他已经有了规则这样的思想了,把规则的组织去交由客户,可是他没有用规则引擎而是作了一堆的STORE PROCEDURE,差很少有2百个之多。而后客户若是要改规则了,只要改其中的20几个STORE PROCEDURE,而后他们还会教客户如何拿个ORACLE的PLSQL/DEVELOPE客户端去让客户本身写CASE WHEN。。。天哪,把客户的业务人员也变成了IT开发人员,你够牛B,很少评价了。

 

请考虑PORTAL,或者是基于WEBSERVICE的SCA编程模型,而不是本身作一堆的WAR包,而后WAR包间互相用api调用的方式来依赖,原本你已经把模块分离了,这下好,模块又依赖到了一块儿,伪耦合。

 

有时在面对大量上传,文档管理模块时请考虑使用CMS系统或者理念,而不要本身去用记数据库的方式去实现版本控制,更不用提CMS所具备的权限整合能力了。

 

作一个工程,涉及到工做流,规则引擎,CMS,SSO,PORTAL,原本这个工程已经挺大了,你除了把要实现的业务代码实现一遍,你还要本身拿个SSH,去实现工做流,规则,CMS, SSO, PORTAL本已经有的那些底层功能,那我问你,究竟是在作项目仍是在作这些产品,你说我都本身实现,HOHO,你牛B,等你作出来后,客户早就飞走了,项目早结束了。

 

回过头来看IBM与TCS为何成功

 

因此回过头来,咱们说由于IBM把它的精力集中在了开发这些BPM, CMS, SSO, BUSINESS RULZ ENGINE中间件上面了,同时,许多企业也认清了目前的大环境以及如今的客户对于项目的这一系列快,变动不触及到原有,任意替换,分析模块等要求,所以这些开发商须要有相应的,成熟的,稳定的组件拿来用啊。

 

因此IBM专作这些组件,靠这些组件它发了财了。

 

IT界有句笑话吗,说:有人说山上有黄金,因而来了许多人去挖黄金,结果谁都没发财!那谁最后发了财呢?山底下那个卖铲子的老头发了财了。

 

那TCS呢,TCS凭借着他第一个是印度人廉价的优点,第二个它及时的把从原来的作外包,变成了”方案外包“,就是我不仅,不光光只有人头给了你,而是我可以为你的项目,你的需求,从软硬件上提出一个总体的solution,就像我在回答咱们的那个美国的chief architect的问题时所说的那些,数据库层我怎么样作,安全层我怎么样作,扩展性怎么样作,对于上传文档管理我是怎么去解决的,对于流程化的东西我是怎么去解决的。

 

他可以提出大量的这样的solution,而后它把咨询顾问人员派到你客户这边,而后开发人员在印度、在China这边的这种“offshore(离岸式)”方式来进行开发。

 

而后这样的一个系统一旦上线,咱们说了,由于它是一个”解决方案“级别的,那围绕着这样的系统会有一堆的需求变动,后续开发,集成,甚至和第三方集成,那都是会被TCS吃下来的。

 

这就叫”斩首行动“,就是我吃掉了你的”大头“后面的零碎的其它的外围系统就都是个人了。我要吃时,随时能够吃,我不想吃时,分点羹给你啊,对吧!

 

因此国内的一些企业,由其是传统外包,巨头外包或者是一些一直作项目而如今发觉项目愈来愈难接的公司,大家须要转形了。

 

对这些企业我想引用我前公司的的一位领导,他同时也是个人技术人生第一导师的话来讲:外面其实有不少项目,可是它们不来找你,而你,找不到项目适合你来作

 

结束语

 

基本我先总结这些吧,因此,程序员们,大家看看,大家要学的东西还有哪些?

 

SSH不是没有用,SSH是基础,是1+1=2,是九九算数表,由于你在作接口时,在开发一些底层的东西时仍是须要用到SSH的,而对于一些只有“组件”才能作的事,留给组件去作吧。

 

SSH不是没有用,SSH更重要了,由于它已经成了你迈向更高阶的一个踏板,没有了这个踏板,你很难上车,就算上了车你也是骑不稳的。

 

若是你还还处在迷茫中,那么就是说你尚未翅膀,但你也想飞翔,那么这些东西够你学一生的了,相信拥有一双翅膀绝对是值得你去追求的吧?

 

SOA是一个理念,如今的SOA又包括了云计算,社交网络,企业级MOBIE应用的混合应用,SOA+云,SOA+MOBILE, SOA+云等等等是近20年可能仅有的挣钱的机会了。

 

由于SOA把原有的企业级开发人员,再次变成了真正的IT开发人员,在SOA理念的指导下去开发系统,IT开发人员更须要去关注于技术和业务的infrastructure即业务组合的架构和技术框架上去,而不是去实现业务;实现业务交给了业务人员,这是一种返璞归真即从新回到了IT人员作技术,业务人员作业务的时代中去了。

 

我固然这边也只是发表一下本身的意见。

 

我本身总结了一下,由其是还处在迷茫期的程序员,有人说:到底我干了4年,5年我还能干技术吗?还要学点什么,还差点什么,那我总结出来下面这么一张图,从上往下看:

 

 

这张图我把它分为3层。

 

从上面第一层来看,我列举出了一些行业界的优秀组件,这些组件都是和业务无关的,但又都是用来组合和集成大型业务系统时所须要用到的。所以我以为是有必要都去熟悉,学习,运行一下的,若是有志向,应该每个都会用而且知道分别能够在哪一种场景下运用以及它们在运用和集成到你的框架时的优缺点、注意项。

 

当中这一层,我以为是一个准备走技术道路的J2EE开发人员所必须具有的,要否则你无从去了解和设计出一个跨数据库,跨平台,扩展性,安全性的J2EE系统了。

 

最底下一层,是为了去知足当中这一层和最上面这一层所要具有的”基本功“,这就和1+1=2同样,这个不会,你也不要去谈四则运算了。

 

要学的东西还有不少。

 

你若是要来问我:还学点什么,相信此文能够回答你的问题。

 

谁说技术道路走不到底?谁说30岁左右就要换PM的角色?

 

技术道路也能够走下去啊!

software engineer, senior software engineer, team leader, architect, senior architect, chief architect, principal architect。

 

嗯,principal architect,差很少到了这层我应该是vice president的待遇了,哈哈哈哈,估计那时我已经50岁了吧,可我依然走技术,嘿嘿!

 

而我从此的篇章在前面有了SSH,性能调优,几个主要的APP SERVER的使用和调优,以及为面试准备的基础技术重温后,也将逐渐引入一个个组件化的应用,而且会在相关的例子中来向你们展示一个灵活的业务架构是怎么去设计、实现和搭建的。

相关文章
相关标签/搜索