最近看了《浪潮之巅》第二版,对我这个IT从业者触动很大,同时也有一些感悟,就想写出来,给自己一个提醒,同时也给一些新入行的朋友一些参考。
这本书通过分析世界上非常著名的一些大公司他们的商业发展历史,透过现象看本质,吴军博士他向我们着重阐述了IT领域非常重要的几个定律:
摩尔定律:集成电路的集成度每18个月翻一番,或者说相同性能的计算机等IT产品,每18个月价钱会降一半。
安迪-比尔定律:指以微软的比尔·盖茨为首的软件商通过不断增加软件占用硬件的资源,消耗掉了安迪·格鲁夫的英特尔以摩尔定律创造的硬件性能,使硬件的提升同时被软件的升级给中和了。
反摩尔定律:可以理解为,如果达不到摩尔定律中的发展速度,就离死不远了。
诺威格定律:一家公司的市场占有率超过50%后,就无法再使市场占有率翻番了。
70-20-10定律:一个成熟的领域,一般在全球最多只会有三个主要竞争对手,而他们所占的市场份额的比例差不多就是70:20:10这样子。
基因定律:每家公司都有自己的企业文化、做事方式、商业模式、市场定位等因素,这些东西会深深植入这家公司,会形成一种模式,一种本能。
上面这些定律也可以说是决定一个公司成败的关键因素之一,当然其它方面还有历史机遇、商业模式、领导才能等等因素。大象是做Java的,主要是想根据这些定律结合我从事的职业去分析,它如何与我们IT从业者相关。
我们投身在IT行业,公司的兴衰与我们息息相关,我们努力工作为公司创造价值,公司也会回报我们相应的价值。但是,如果公司的决策与发展违背了客观规律,违背了上述的这些定律,那么它的情况就会不妙了,而我们也同样会陷入失业的危机中,特别是刚刚进入这个行业的童鞋,他们还没有很多经验,会对他们的生活造成不小的麻烦。因此我们有必要在进入一家公司前擦亮自己的眼睛,或者在公司向错误方向前进后,能够及时的看清形势,选择更好的发展平台。
其实不光在硬件领域有摩尔定律,我认为在软件领域也有摩尔定律,尤其是对开源的Java更是如此。虽然Sun公司不在了,但它创造的Java确是真正的影响了全世界的编程开发与互联网的发展。而基于Java的开源软件更是得到了蓬勃发展,Java从1995年到现在一共经历了8个重大版本的发布(1996-2011),比摩尔定律的速度慢了两个数量级,而从时间上看前面几个版本基本上都满足了摩尔定律的发展速度,转折点是在2006年,这一年Sun公司发布了Java 6,而直到2011年Oracle收购Sun一年后才发布Java 7,这中间差不多间隔了5年之久!当然Sun的没落和Java语言本身的发展没关系,大象只是想说明软件的发展也在遵循着摩尔定律。如果不能达到这个速度,必然会出现新的软件来取代旧的软件。在开源项目方面表现得更明显,这里面一个典型例子就是Struts1,这个Web框架,曾经占据Java Web开发的半壁江山,而且时间长达数年之久,但后来由于越来越慢的更新速度,让大量开发者非常不满,到了2008年12月彻底关闭了这个项目。而Struts2就成了替代Struts1的第二代产品,但由于这两个框架根本就是两个不同的东西,不能平滑迁移,并且Struts2的更新速度还是慢得令人发疯,而Spring在2009年12月发布了非常具有里程碑的Spring MVC 3.0版本,让Web开发变得非常方便,这些都使得很多项目的技术选型发生了变化。这也从侧面体现了摩尔定律与反摩尔定律在影响着软件行业。
再来看看安迪-比尔定律,我在这里只谈Intel的多核处理器,因为最早的双核处理器可以追溯到2003年苹果发布的Power Mac G5电脑上面搭载的IBM
PowerPC 970双核处理器,大家都知道苹果的东西是出了名的贵,用的多的还是Intel和AMD这两家的,之所以不谈AMD,是因为它与Intel相比实在不是一个级别的对手,另外Intel也是为了避免美国的反垄断法才一直让AMD存在着。Intel在2006年推出了基于酷睿(Core)架构的双核CPU后,正式开启了电脑多核时代。而早在2004年9月30日,Java发布了代号为Tiger的JDK 5.0版本,新增的java.util.concurrent并发包为多线程编程提供了非常大的帮助,在服务器相继用上多核CPU后,如何在多线程并发上面充分利用多核优势,提高性能,提高资源利用率,是开发者最关注的问题。所以看似电脑有了多核CPU,性能提升非常爽,但是软件也会想方设法的利用这些提升带来的好处,显然不全是微软的操作系统在消耗。
在Java开源项目里面,和70-20-10定律也很像,每块领域都由几个著名的软件引导着,然后还有很多其它的小项目,不能说这些项目不好,只是使用人数不多,比较小众。我列出一些仅供参考:
开发工具:Eclipse、NetBeans、IntelliJ IDEA(它分免费和收费两个版本)
Eclipse版本控制插件:Subclipse、EGit
Web框架:Spring MVC、Struts2
ORM框架:Hibernate、MyBatis(iBATIS3.0之后改名)
Web服务器:Tomcat、Jetty、Resin、JBoss、GlassFish
构建/集成:Maven、Ant、Hudson、Continuum、Jenkins(前身为Hudson)
消息中间件:ActiveMQ、HornetQ
模板引擎:FreeMarker、Velocity
工作流:Activiti、jBPM
任务调度:Quartz
网络应用框架:Netty、MINA
WebService:Hessian、CXF、XFire、Axis
NoSQL:Memcached、Redis、MongoDB、Cassandra、HBase
搜索引擎:Lucene、Solr、Nutch
…………
当你刚刚进入软件行业,你需要考虑一下技术选型,我应该朝哪个方向发展。每次TIOBE公布编程语言排行版的时候,总是大打口水战,每个从事不同开发领域的人都觉得自己这行是最好的,所以争论这个没有必要,还是应该根据自己的想法来做出选择。另外在选择公司的时候,特别要注意这家公司是做什么业务的,这个业务的市场规模,采取的是什么商业模式(商业模式非常重要,吴军博士曾在书中反复强调过),有哪些主要的竞争对手,当前有没有已经比较成功可以领导行业的统治者(70-20-10),还有公司的企业文化,晋升机制等等等等。
对于已经有工作经验想换工作的童鞋,我觉得应该首先考虑的是发展发向,其次才是公司。现在大的方向主要分为企业应用开发和互联网开发。是继续当前行业还是换个行业做?这都是需要考虑的。
还有一些比较求稳的童鞋,在公司做的不错,公司的发展也比较平稳,也不打算跳槽,这时应该关注下公司的战略,这些东西虽然是公司高层决定,但一旦决定后肯定会召开员工大会,传达这些内容。在了解这些后仔细分析它会对公司带来什么,未雨绸缪永远不是坏事。
我们既然处在这个时代,又在IT行业工作,真的是一刻都不能让自己放松下来。必须要擦亮自己的眼睛,紧盯行业的变化。大象深深的感受到,IT真他妈不是一般人能干的,而且经常看到过劳死的消息。虽说很累,但我真的很喜欢写代码,研究技术,我还是会继续在这个行业里走下去。为了生活,为了家庭,为了孩子,还有为了自己热爱的事业。
文章开头说是自己的一些感悟,现在完全变成了唠叨,不爽的童鞋请不要喷我,写的不对的地方还请帮我指出来,大象鞠躬感谢。
本文为菠萝大象原创,如要转载请注明出处。http://www.blogjava.net/bolo
posted on 2013-10-31 21:12
菠萝大象 阅读(1048)
评论(3) 编辑 收藏 所属分类:
随笔