最近看了《浪潮之巔》第二版,對我這個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.aygfsteel.com/bolo