随笔 - 51  文章 - 0 评论 - 803 trackbacks - 20
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

以博结交四海朋友

Mail: david_lv_work@sina.com

QQ:51063624

昵称:david_lv
园龄:3年6个月
粉丝:13
关注:3

搜索

 
 

常用链接

我的标签

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜

上几次涂鸦写了几篇博文,没想到引起大家很大的反响。在这里,首先谢谢各位的厚爱。也接到许多来自学生朋友和刚出校门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专访发表。更详细的内容可以看

http://news.csdn.net/n/20080314/114366.html

标签: 流行技术
posted on 2008-10-18 23:02 david_lv 阅读(4020) 评论(40) 编辑 收藏

FeedBack:
#1楼 2008-10-18 23:25 林建入      
人才需要深度,但是也需要广度。
有限的时间内专注于有限的事,但也不过分拘泥于一件事。
有的时候深钻一门让人佩服,但有的时候只懂一门就成了井底之蛙;缺乏对比,哪来的认识呢?
关键还是弄清自己的情况,把握住一个度吧。

路,确实还得靠自己把握。

 回复 引用 查看   
LZ的意思我归纳如下
.NET :开发中小型软件(学历和能力一般的人使用)
JAVA :开发大型软件 (高学历高能力的人使用)
PHP :开发WEB网站

 回复 引用   
#3楼 2008-10-18 23:48 回头望见你      
未来是综合性人才的天下~~~
 回复 引用 查看   
学历和能力一般的人
 回复 引用   
#5楼 2008-10-19 00:26 Cat Chen      
真正能力高的人,不是做Java,而是什么都能快速学习,什么语言和框架都不是问题。

看看进入Google的人,他能够用C++写很优化的算法,但进去之后半年就学会了前端开发,产品的Ajax都自己做了。然后又半年就把Python学了,做产品原型就不用动用C++了,Python就可以了。

又或者看看进入Microsoft的人,不一定懂C#和SQL,可能只是算法和学习能力超好,给他一点时间就能学会Microsoft体系技术的基本功,之后做哪个门类就学哪个门类吧。

 回复 引用 查看   
#6楼 2008-10-19 00:28 凌军      
不太赞成...什么叫“如果你的学历和能力,只能进入一般的软件公司或集成公司,那么选择微软的技术体系不错。”弄的学MS技术的人是水平不行一样。
 回复 引用 查看   
#7楼 2008-10-19 00:48 孤枫客栈      
我用delphi的
没有学历和能力的人~~~

 回复 引用 查看   
#8楼 2008-10-19 00:57 ttzhang      
如果你想进入互联网公司或web2.0创业公司。那么一般Php、Mysql、Apache、Ruby on Rails、Python是你的学习目标。
=============================================
问楼主一句,MS在WEB上没有一席之地?

 回复 引用 查看   

--引用--------------------------------------------------
凌军: 不太赞成...什么叫“如果你的学历和能力,只能进入一般的软件公司或集成公司,那么选择微软的技术体系不错。”弄的学MS技术的人是水平不行一样。
--------------------------------------------------------

同感,楼主的文章让人感觉学M$都是能力不行的,这个不能同意。

 回复 引用   
--引用--------------------------------------------------
凌军: 不太赞成...什么叫“如果你的学历和能力,只能进入一般的软件公司或集成公司,那么选择微软的技术体系不错。”弄的学MS技术的人是水平不行一样。
--------------------------------------------------------

同感,楼主的文章让人感觉学M$都是能力不行的,这个不能同意。

 回复 引用   
#12楼 2008-10-19 01:08 我操[未注册用户]
博主写的还是很客观的,那些愤愤们没必要咬文嚼字
 回复 引用   
#13楼 2008-10-19 02:29 怪怪      
这篇不得不说,太扯淡了,有点外行看热闹的意味了。 LZ还是多写写关于项目和人的那些文章吧,确实不错。
 回复 引用 查看   
感觉写的还是面上的东西,也就是与到底应该学那种一语言之类的讨论一个层次而已,只不过更复杂了。 真正关键的东西没有说。当然,可能说了大部分人也不会理解的(呵呵,我也不会说的)。
 回复 引用 查看   
#15楼 2008-10-19 09:34 生鱼片      
觉得对语言的评论也有一些不足之处,Domino现在在OA领域依然不可小视。
 回复 引用 查看   
#16楼 2008-10-19 09:36 Little Snail      
--引用--------------------------------------------------
netma1ster: LZ的意思我归纳如下
.NET :开发中小型软件(学历和能力一般的人使用)
JAVA :开发大型软件 (高学历高能力的人使用)
PHP :开发WEB网站
--------------------------------------------------------
第一条我就不同意,太瞧得起java乐吧

java目前的主要优势就是跨平台,至于什么大型不大型,.net一样能做
看设计者的水平了

 回复 引用 查看   
#17楼 2008-10-19 10:32 SuperWulei      
@Cat Chen
顶一个。
语言只是外表,真正有功底的人是可以驾驭任何语言的。计算机语言不应该成为选择性的问题。

 回复 引用 查看   
#18楼 2008-10-19 10:34 SuperWulei      
--引用--------------------------------------------------
netma1ster: LZ的意思我归纳如下
.NET :开发中小型软件(学历和能力一般的人使用)
JAVA :开发大型软件 (高学历高能力的人使用)
PHP :开发WEB网站
--------------------------------------------------------
坚决反对。这些都是一样的,不在乎学历与能力。

 回复 引用 查看   
可现实的情况是,大型的Web应用(企业级)的都是Java,银行、金融、电子商务、物流等行业统统是J2EE。.net的项目一般都很小,一个团队不到10个人,工期很短,做完就另外接项目,很难有持续性,无法专研。从市场来看,Java的需求远远大于.net的,而且工资比.net搞1-2K。C++则在嵌入式行业称王,和硬件相互关联,因此可以有更高的技术积累,能自主创新。
LZ的观点还是很客观的。当然,如果说做.net的工资比java高是有人的,因为事物不是绝对的,但是从数量来说,.net还是中小项目为主,而且挣钱不多。 另外,本人不建议一直在软件外包企业做项目。软件外包说到底是“富士康”加工工厂,需要的是大量“农民工”,技术牛人1-2个即可,其他有钱途的只能是PM和销售,干“农民工”附加值低,而且会有年轻人代替你的可能。

 回复 引用 查看   
@ Little Snail,SuperWulei
--引用--------------------------------------------------
netma1ster: LZ的意思我归纳如下
.NET :开发中小型软件(学历和能力一般的人使用)
JAVA :开发大型软件 (高学历高能力的人使用)
PHP :开发WEB网站
--------------------------------------------------------
你们别搞错了,这是LZ的意思,不是我的意思,
我是帮他归纳!

 回复 引用   
我的意思是,
如果你真正的懂得.NET和JAVA,
那么你就会感觉他们是如此的相似。。。。
几乎说不出哪个比哪个好

 回复 引用   
建议LZ别在这里误人子弟了,
你之所以得出这么荒谬的结论,我看你对.NET。或者说是ASP.NET的理解也仅仅是停留在拖拖控件的层次,你根本没有inside .net。什么架构师啦,CTO啦,我看你是徒有虚表,
还有你那个整天的”三五个人十来条枪,。。。“,纸上谈兵,烦不烦啊,看了都想吐,
你还是乖乖的呆在CSDN做你的砖家吧,这里一群搞.NET, 学历和能力都一般的人是无法跟你高学历高能力的人相提并论的!

 回复 引用   
#23楼 2008-10-19 12:01 神龙腾翔      
--引用--------------------------------------------------
回头望见你: 未来是综合性人才的天下~~~
--------------------------------------------------------
同意这样的说法

 回复 引用 查看   
#24楼 2008-10-19 12:04 巡山小牛      
总感觉现在开始流行的思潮就是: MS的确强大,但东西不好,没有技术含量,而JAVA才是牛人搞的,真的不明白为什么会出现这样的局面,做出东西来就是爷,管它什么工具呢?一直崇拜Java,但我是搞.net的
 回复 引用 查看   
#25楼 2008-10-19 12:09 canbeing      
LZ贴个图都贴不好,对其中的许多观点也不敢苟同
 回复 引用 查看   
#26楼 2008-10-19 12:39 Allan_Green      
各有所长
我相信未来会大同的

 回复 引用 查看   
#27楼 2008-10-19 12:40 pgg[未注册用户]
这文章误人子弟啊
 回复 引用   
#28楼 2008-10-19 12:42 htqx[未注册用户]

在初级阶段,或许有点道理。

但是根本上还是个人技术的提升,即使你学习js,你能力很强,也不是说就比那些学c++的会更加不擅长做游戏。

而且,初级阶段是每个人都应该克服的,都应该超越的。


 回复 引用   
#29楼 2008-10-19 12:44 pgg[未注册用户]
楼主SB
 回复 引用   
学这玩意,终究是混口饭吃。哪个又钱途,就学那个!
不要说什么,振兴中国软件事业,轮不到你。金山的WPS,让M$整的基本残废了。求伯君那么牛的程序员不也是眼睁睁看着自己的孩子惨死?
纯软件领域,有M$这座大山,很难超越。倒是和硬件相关的设备可以让国人实现世界第一的梦想。中兴、华为就是嵌入式设备厂商,也是离世界顶级最近的中国企业。

 回复 引用 查看   
#31楼 2008-10-19 20:35 Lao Cai      
很多人把java定位为做大型软件,.net做 中小型项目,但是有没有仔细考虑过为什么是这种划分?

本人所在项目组,做一个四千万的项目,用.net,不知道这算不算大型项目?

 回复 引用 查看   
#32楼 2008-10-19 23:04 oec2003      
语言知识 解决问题工具而已

哪有什么三六九等啊 ...

 回复 引用 查看   
#33楼 2008-10-20 09:06 路缘      
大家不要断章取义,我觉得楼主写得很客观,符合大致情况,
不要以为用.NET做了个大项目,不要认为有人很牛,就能改变局面,
大家混口饭吃,相对而言,用.NET的情况是不如其他的好。

 回复 引用 查看   
不赞成学MS技术的人是水平不行
.相对微软公司,似乎还没有那个软件公司比微软能赚钱啊,不要拿自己的或个人情况来论证观点,而应是整个社会的贡献。技术也是。

 回复 引用   
#35楼 2008-10-20 11:23 mr.s[未注册用户]
我应该好好学些C和汇编,写个操作系统玩玩了
 回复 引用   
java和.NET本质上有啥区别?分布式:java有ejb,.net有remote,vc有dcom。只不过叫的名字不同而已,最终所要达到的效果都是一样的。语言只是个工具而已,html页面最开始从c语言cgi的方式来写,其实用汇编语言也可以写html页面,只不过生产效率不同而已。任何一种语言,归结到最后,无非都是那些最最基本的理论。
 回复 引用   
#37楼 2008-10-25 10:09 VisualStudio      
老师教导我们说:“不管现在流行什么技术,你现在主要是学基础,这个最重要,技术可以以后再学!”

 回复 引用 查看   
#38楼 2008-10-27 12:32 没事偷着乐      
图不能出来?
 回复 引用 查看   
#39楼 2008-12-16 11:20 PatrickChen      
无论什么开发语言,都只是工具,好的程序员是不区分语言的,在他眼中,所有的语言都是一样的。
很多程序员就是因为太专注于自己的领域而导致见识十分短浅,我觉得一个好的程序员应该是基础好,学习能力强且见多识广。
我从嵌入c,到c#,到java,都开发过,见过很多号称很牛的纯的.net程序员或者纯的java程序员,它们的思想很狭窄,拘泥于语言的语法和代码,他们其实只是熟练的代码工人。
好的程序员赢在思想,而非代码工具。

 回复 引用 查看   
#40楼 2008-12-26 13:52 boy1268[未注册用户]

--引用--------------------------------------------------
ttzhang: 如果你想进入互联网公司或web2.0创业公司。那么一般Php、Mysql、Apache、Ruby on Rails、Python是你的学习目标。
=============================================
问楼主一句,MS在WEB上没有一席之地?
--------------------------------------------------------
估计你弄错楼主的意思 了 .web2.0 创业 需要大把的钱 试想 微软的东西 那样不要钱 ? 一个数据库 就几十万 了 操作系统等 这都需要大把的银子啊 ,php ,mysql 等这些都是不要钱的 开源的

 回复 引用