流行技术我该学哪样?--给刚进入IT的朋友的一封信

上几回涂鸦写了几篇博文,没想到引发你们很大的反响。在这里,首先谢谢各位的厚爱。也接到许多来自学生朋友和刚出校门1-2年的朋友的邮件和QQ交流。
有人说,我写的太意识流,看了不少当年流行的技术,都被看晕了,不知道如何去选择本身适合的技术。
有人说,说的有些随意,不够严谨,有些地方有偏见,没有真正去查数据论证。
确实是,由于只是本身偶尔心得体会,就在网页上直接敲的文字 ,只是但愿给你们能抛砖引玉,给你们介绍个点和方向,真正看好一项技术,扎实去钻研一项技术,必需要严谨的阅读,调试,论证。
另外,本身的偏见也来自于本身的工做专业所限。笔者从出道至到现在,15年了,一直工做在企业管理软件行业,从未跑出这个圈子。因此有的朋友问我关于互联网创业的、网络游戏的、嵌入式开发的、互联网技术的,笔者只能根据本身多年的从业经验来个我的见解,也说不上独到与创见,可能还不对。因此,在写博的时候,确实有些偏见。这是脱离不了的。每次写技术眼光的文章,老是从企业管理软件开发的角度上去看问题,去思考解决问题。并且本身多年从事的是C/S的开发,因此一些论调和角度让开发B/S的朋友颇感难解。
不说这些了。此次写博,是为了弥补第一篇博文带来的缺憾。第一篇博文发表后,许多朋友但愿我能整理整理,把当今流行技术能有个架构体系出来,这些你们好清晰认识。
我是作架构师出身(若是有人立志但愿成为架构师,我也会根据你们的反响和需求来写一些关于架构的文章),虽然如今已经脱离架构,身在CTO位置,通常关注产品战略发展、开发过程管理、产品Framework、IT行业发展变化、新产品新应用新盈利模式、客户行业变化、竞争者变化。但对如今的流行技术仍是在一直跟踪。虽然不少技术不能应用到产品开发中(毕竟做为公司赖以生存的产品和竞争策略,不能随意选择技术和改变技术),可是一个产品的生命周期,你们都知道在业界通常都是5-8年一代产品(开发期、导入期、成长期、成熟期、衰落期。若是有感兴趣的朋友但愿能详细了解这些,我能够另外他日起一篇博文给你们介绍,这是一个CTO必需要具有的,有对CTO成长感兴趣的能够一看)。下一代产品用什么技术,这种技术是否成熟,何时该开发下一代产品体系,何时相关的技术能成熟,如何选择合适的切入点,是每一个CTO都要思考的。因此这么多年,一直在关注着。
那我就把我临时画的一个图分享给你们。算是对第一篇博文《2007年技术回顾》的整理。
 
 
从这张图能够看到,我把业界你们看得眼花缭乱的技术作了架构分层。每个技术都在各自的层次上面适合发展,并且都是为了弥补本层现有产品和架构的问题。
但愿作架构师的朋友注意了。你无论何时,不论是学习.net,WINDOWS,SQLSERVER,必定要有架构的思路。要分层,从点到线,从线到面,从面到体系来横竖切分。
并且一个产品架构,也每每是这么多层,并且在应用软件架构上,也就是:表现层、业务层、数据层。其余咱们都是利用的中间件和VM和OS的现成技术,咱们自己通常无须深刻。而表现层、业务层、数据层,层与层之间都有接口层,而不是硬性接口,不然就成铁板一块了。通常架构经验不足的架构师,每每容易出现这样的毛病,层是分开了,本身沾沾自喜,觉得这个架构是颇有扩展性的。但具体一应用,就发现很硬,动不了。这就是缺少接口层的缘由。
可是这样表现的图,你们好像还不解渴。由于不少朋友是刚出道,选择什么才有钱途,才能好找工做。这才是你们关注的问题。想当架构师,那是遥远的梦。先把温饱问题先解决了。
我通常都是这样告诉同窗或朋友们的:
若是你的学历和能力,只能进入通常的软件公司或集成公司,那么选择微软的技术体系不错。由于微软体系,网上不少学习资料,并且大量的企业应用是用微软技术开发的,并且不少公司也用微软技术。因此公司多,你好找工做。微软的技术通常固定:C#+Asp.net+SQLSERVER+Visual Studio。
若是你的学历和能力,能进入作大型企业应用的公司,那么你就选择JAVA的技术体系。由于如今大型企业,基本都用JAVA开发。你能够从eclipse、structs、hibernate、WebService、Tomcat、Apache、JBoss、POJO、Oracle开始学习,而后再学习WebLogic、WebSphere、Portal技术、工做流技术。
若是你想进入互联网公司或web2.0创业公司。那么通常Php、Mysql、Apache、Ruby on Rails、Python是你的学习目标。
若是你想进入手机开发,那么Symbian和C++(Nokia,市场份额最大)、J2ME(android产品,google发布,还未正式生产,但笔者认为颇有前途)、Windows Mobile(微软,好开发,从开发思路到工具到语言,都是你所熟悉的)。这三类都会三者鼎立,谁也不会把谁干掉。至于5年以后,就很差说,至少5年内,是手机时代,是手机无线时代,每一个厂商都在争抢这一块将来最有钱途的肉。
若是你想进入目前煊赫一时的网游公司。作服务器端,你得C++过硬、网络传输技术过硬、并发线程处理、了解Linux编程要和了解windows编程同样深刻。若是你想作客户端,那么图形图像处理算法你得首先过关。固然,如今不少引擎、工具、AI包、材质库、脚本减小了很多客户端编程的难度。
若是你想进入如今已经将来10年内一直很热的嵌入式编程,那么C++,并且你的单片机编程你得过关。中国是世界第一制造大国,并且这种局面在5-10年内也很难改变。制造,过去比谁的工人成本低。可是如今材料和人工的增加,使制造压力巨大。就只能提高本身的制造能力。制造高尖端的产品,就须要高尖端的流水线。并且,中国的电子产品也愈来愈强大,日本产品从最初的独霸中国,渐渐变成了中国国货的天下。在手机上、数码相机上、家电、冰箱、DVD、空调、汽车、交通、医疗、数控,等等,不少领域须要嵌入式编程。就连我们的嫦娥一号也是嵌入式编程的典范。华为、中兴这些通讯设施也是嵌入式编程范围。
固然,你也能够剑走偏锋。过去是Notes编程,随着国产OA的兴起,Notes编程渐渐衰退。可是,中国如今大型企业都在上线ERP,并且大多用的是Oracle或SAP的ERP。这些ERP产品,都提供了客户化定制编程开发环境,提供了完备的应用API。大型企业应用ERP,都须要定制化开发,大量缺少这类人才。可是,市面上这些学习资料都很是少,这是个难题。
另外,如今的外包也很是热,各地创建外包园,就跟当年创建软件园同样群起。想进入外包公司,首先日语或英语须要过关。我们国家的外包,通常来自日本和欧美。在开发中,通常也是三种语言的主流:C++、C#、JAVA。
因此,从以上分析来看,C++、C#、JAVA,都是当今的主流。都在各方面都应用很广。你选择哪一类都会有不少的机会和空间。但若是你学了C++,又怕之后碰不到C++的工做,还要学C#,还要学JAVA,那么你终将一事无成。
不要怕,钻一门足矣。
不过,拥有了一份技术技能,你能应聘进入一家公司。可是,一家软件公司如何管理,你是否适合这种管理,你在这个团队中能扮演什么角色,你在公司中奋斗的路径是什么,我会在下一篇详细介绍软件公司管理的时候给你们讲到。
我是工做2年后就跳一次,而后加15%的薪水呢,仍是有计划的发展个人IT职业呢?仍是我就混一混,很差玩我就换行业呢?
你的路,你本身把握。
但,千万不要本身玩本身,很差玩。
 
后记:
此文以被CSDN网站做为CTO专访发表。更详细的内容能够看