全部博文(141)
分类: IT业界
2011-12-02 15:36:55
企业级开发解惑
其实“企业级开发”是个非常有意义,并且值得探讨的主题。虽然我们平时总在说“企业级开发”,也在做各种“企业级项目”,但并不见得就真正的理解何谓“企业级”。
其实在早些年,我已经在很多的IT社区发布了一些有关企业级开发的一些文章,从文章的反映来看,发现很多的朋友对“企业级”开发,有着很多的不解。从我从事IT这些年所接触到的一些人和公司来看,他们对“企业级”又有着太多的误解。
提到“企业级开发”,这里就不得不提到“企业级项目”,它们二者是紧密相连的:企业级项目的开发过程就是企业级开发。
有人将“企业级项目”简单地理解为“为一些企业做的项目就是企业级项目或企业级应用”,照这个理解来看:为大企业、机构和组织做的项目就是“大型企业级项目”,为小企业或者公司做的项目就是“小型企业级项目”……
另外,还有很多的人(特别是做互联网应用的朋友)将企业级项目指代为:低性能,用户量少,并发性差,甚至是不断需要缝缝补补的项目,而且其应用马马虎虎。可以说这些理解都是有点望文生义的。
其实“企业级开发”这个词,最早是源自于国外。当时国外有很多的企业都需要软件公司为他们定制软件。同时,因为这些要求定制软件的企业各自有着比较成熟的管理和规范,所以,他们会给软件公司提出很多的要求,例如,从长远考虑,为了节省经济成本,他们需要所开发出来的软件可以进行扩展,而不是每次公司系统升级的时候,都需要从头开发。于是,软件公司就需要极力的满足客户的这些需求。
不同的公司给出了各自的要求,于是这些要求就被慢慢的提炼和总结,成为企业软件的标准和必备的特性。而满足这些特性的软件就是“企业级”软件,开发满足这些特性软件的过程就是“企业级开发”。
所以,“企业级开发”不是我们常常理解的那样,而是在背后隐藏的是一些指标和原则,这些原则就是:可靠性(Reliability),灵活性(Flexibility),重用性(Reusability),可维护性(Maintainability)。只有满足了这些标准的软件,才称得上“企业级”。
国内企业级开发的现状
清楚了什么是“企业级开发”之后,在回头来看看国内的项目开发,其实很多的一些开发都称不上是“企业级”。这样说,可能有点让人觉得不礼貌。但是这确实是国内的现状。因为我也在很多的不同公司做过,例如日企,欧美企业,民营互联网公司等。
首先,我们可以回头想想,我们的项目一般是怎么做出来的!,我们先看看我们平时是如何开发项目的。
每次项目到来,几次会议之后,项目就开始了,开始分配人员,开始分析一些从客户那里拿来的需求,然后一些骨干的开发人员就开始为项目搭架子。于是一个项目就算是进行起来了。
谈到了为项目搭架子,专业点说就是做架构了,说是做架构,其实就是把项目按照惯例分割为几个逻辑层,至于说这个架构好不好,有什么风险,是否可以适应以后的变化,采用的技术的风险和可行性分析,这些很少考虑,原因很简单:一般的都是这么开发的,应该没有什么大的问题。而且客户,老板也不管什么架构,要的就是结果。
确实,很多的项目也确实是这样的开发的,而且很多也成功了。这些无可厚非,至于说什么标准不标准,是否遵循了什么开发的原则,没有多少人在乎,不管怎样,项目是成功了。
以上的流程,虽然每个公司有不同的做法,但是都反映出了一些共同的问题。
下面,我们就来分析一下,国内软件开发要走上“企业级“的道路,面临的一些问题。
高端人才流失,积累不够
高端人才可以指代架构师、技术组长等,那些对项目有着全盘考虑和把握,有高瞻远瞩能力的人,并且这些人是技术与业务都比较过硬的。其实在国内的绝大部分软件企业,都没有,也不需要架构师。因为没有那些人,也照样能够交付客户需要的软件!通常,项目中的组长或项目经理担任着“当爹当娘”的职责。
现在出现的问题就是:技术骨干转型,业务骨干脱离项目。
很多的技术人员,做了几年之后,纷纷开始转型,甚至从事与计算机毫无关系的职业。一方面,这是由于家庭原因,使得很多的技术人员不能再在一线战斗,慢慢退出(或被公司请辞,另外,很多的公司都乐意把高端人才砍掉,用聘请他们的工资重新聘请几个新人来顶替高端人才,因为公司相信:三个臭皮匠合成一个诸葛亮);另一方面,也是国内的大环境,很多的技术人员都到达了他们的瓶颈阶段,不知道如何突破。于是,好不容易培养出来的技术骨干就这样没了。
其实国内技术人员的技术周期是很短的,加起来不到10年:从20多岁,到30多岁。不管信不信,吃的就是青春饭。所以这就造成了技术人员积累不够,总是呈现“前仆后继”的景象,这不是好事情—因为新入行的技术人员依然得从头奋斗,自己摸索!
国外的情况和我们却是大不相同,他们的技术人员可以做到退休,可以一直做技术。有时间将一批新人一步步的带到成熟。
国内很多的人总是抱怨:为什么中国就不能成为技术原创国,为什么总要学习别人的技术。答案也很简单:你用10年的时间去做一个事情,别人用一生的时间在做。
技术人才地位低下,中低端人才不足
虽然做IT在别人眼中都是“高薪白领,聪明人”,个中的心酸只有IT人自己清楚。
在国内的很多的软件企业,可以说技术人员是最低下的:给你一点钱,就可以对你任意的使唤,吆喝,并且你还不敢大声的回应,只能唯唯诺。即使项目成功了,那也是有功从上面算,有过从你开始。我也不想这样说,因为可能会扼杀很多朋友们的希望和梦想,但是现实总是残酷的。我也是做技术的。
有个做销售的朋友告诉我:他们公司也是做软件项目的,公司里面十来个技术人员,每个月给他们一点钱,就可以让他们拼死的干,他们搞销售的天天和老板吃饭,旅游,喝酒。更加可悲的就是,软件公司的老板,自己也不看好这些技术人员,也认为搞软件没有前途,所以公司又开展了其他的业务,定期拨些钱给技术部门,慢慢的维持着。
很多的技术人才没有得到成长的空间和足够的重视,使得很多的技术人员慢慢的开始迷茫,要么过早的结束了IT主路,要么就在路上到处晃悠。
开发流程不完善
流程的不完善,说到底还是人的原因。因为前面谈到的两点,就导致了项目中的技术人员良莠不齐,能力和经验上面的缺乏,使得项目成为“乱葬岗”-------任何的想法和代码都往项目里面堆。
很多的软件公司都在项目中引入国外的项目管理和流程控制方法,例如scrum等敏捷思想,有的是用原版不动的照用书本理论,在部门里面大刀阔斧,全盘整改,从上到下开始“革命”;有的是“五分钟的热情”,坚持不了多久,一看没有成效,立刻就停止了。
完全照搬国外的这些方法在中国很难成功(马列主义传到中国也是和本土结合了的),一方面是因为国内的软件客户不成熟,他们希望你怎么干,你就得顺着他们来;另一方面,也是缺乏成功的经验,全靠摸索,于是不同的人,有不同的想法,最后就乱了。
公司急功近利
软件项目,靠得就是人。可以说:整个的软件项目,就是思考后的产物。用专业点的话来讲述就是:现有设计,后有实现。想清楚了,再行动。
但是在国内的软件企业,软件不是“设计”出来的,而是“堆”出来的。为了赶进度,项目经理,公司高层为了都喜欢看着墙上的进度表按照他们的期望描绘。于是底下一批人没日没夜的干,顾不上其他,放弃了一个技术人员的思想,最后做出了一个被做互联网朋友指责的“应用破破烂烂,功能马马虎虎,性能差”的软件项目。
记得之前,在项目中,我们花了几天时间去检查和优化软件项目的性能,因为项目运行的太慢了,已经达到了无法使用的地步,每次运行,调试要花很长时间,严重影响了进度。所以,对于新来的,那些小的需求(把界面调整下,再添加某个小功能),我们暂时放在一边。后来项目经理发现没有按照他的期望进行,我们也说明了原因,项目经理最后一句话,让所有的技术人员沉默了:性能?什么性能?不要给我玩虚的,你们按照我的进度来进行就可以了!甚至慢慢的使得开发团队有了这样的想法:开发出来的项目不是要让客户满意,只要让项目经理满意就行了!
技术人员之间螃蟹效应
同行之间以及团队内部存在着竞争,这是很正常的,只要是良性的、正当的竞争,就好!
其实,现在很多团队队员都面临这样的一个情况:在完成一个事情的时候,说好是以团队为核心进行工作,但是队员之间做事情的时候总是勾心斗角,见不得别人比自己好,也不承认别人比自己强。大家有着各自的想法,不想承担责任!当然,这与公司的文化,管理有着一定的关系,也与队员本身的心态、职业操守有着关系。.
有时候,并不是非得要拼个你死我活,思想要开放一点。IT世界,天外有天,眼中只看窝里,拼出第一, 意义不大--也许心里舒坦点,满足自己!
这使我想起了一个经典的故事:有个渔夫背着一篓螃蟹赶集。在路上,有人告诉他:你要把你篓子的盖子盖上,不然螃蟹要爬出来,跑了。渔夫笑笑,指着篓子里面的螃蟹说:你看,每次只要有一只螃蟹往上爬,下面的螃蟹就会一起把它拉下去,所以,篓子里面的螃蟹永远爬不出去!
注:本文已经在CSDN投稿,转载请标注,版权所有,违版必究