本文是IT职场人生系列的第十二篇。

最近移动互联网很流行,很多人都在学习IOS、Android编程。这也引起一个入行、改行的潮流。

那么,作为新手、老手,应该怎样选择自己学习的语言和技术呢?

本人从早期编程以来,实际使用并开发过商业软件的的语言有几种:C,TurboC++,C++Builder,VisualC++6.0, ASP.NET/C#,中间有很多次选择,配合为别人做的选型指导,写一篇文章供大家参考。

新手,老手

无论一个技术多么地过时了,都有人在做,而且做的人都是老手。

举个例子:若C++语言从业人数按时间排序分别是开始10万,中间100万,后来10万,则开始的10万中新老比例5:5,中间100万新老比例90:10,后面剩下的10万,新老比例1:9,那个1还是不识相的。

所以新手刚学编程,不要去学习旧的技术。不是说旧技术没有前途,而是旧技术里边全是高手,竞争激烈。这种激烈是一种“淘汰式”的而不是公平竞争的,进去的新人最可能被淘汰。

但作为老人,则有可能安心于旧技术。因为毕竟自己水平高,而且老旧技术随着人员的退出,基本薪金还会上升。老人也不太怕技术彻底过时,因为老人的出路不是学习更新的技术,而是学习业务、管理,寻找非技术出路。

新技术,老技术

如果刚开始学习编程,最好学习新技术。原因包括这样几个:

1. 技术和业务是同步的,新技术代表着新业务和新机会

比如早期的Fortan是为了科学计算;中间的C是为了嵌入式;C++是为了Client结构的管理系统;Java/C#则为了基于Web的互联网软件;最新的一些语言和技术则是为了移动互联网。

2. 竞争少

由于新业务总是膨胀状态的,而高手们又留在了老技术上,人才供求关系倒挂,刚开始比较好混。

即使那些水平一般的新技术程序员,也很容易找到工作。

3. 每个技术都有其生命周期

如果学习了旧的技术,没多久就得换了,得不偿失。

浅技术,深技术

某些技术整体学习的难度不大,而更新的速度却很快,称之为浅技术。比如Flash,UI设计,IOS/Android上小型软件,以及各种云的Client端的开发等。

另外一些技术则学习难度很大,更新较慢,称之为深技术。比如数据库,架构,各种云的Server端软件。

浅技术者应该多创新,多学习,多进化,多了解客户,多了解业务,要理解自己所学是要在众多开发者中独树一帜,让直接客户更加喜欢自己。

深技术者应该多积累,多深挖,多做大系统,多做性能优化,多了解架构,做技术领域的佼佼者。

比如一个常见的误区是有些原本做架构的程序员发现随便一个Android开发者职位工资都比现在自己高,就可能贸然转行。但实际上由于转入了浅技术,高工资是暂时的;未来若干年后新人会越来越多,竞争会非常激烈,到时候就可能会发现还不如留在深技术上积累。

这件事情曾经发生过。在10年前的互联网泡沫中,很多程序员转行做网站(使用FrontPage或DreamWaver等),但后来因为这个行当太好学了,大量兼职人员、高中毕业生也转过来了,造成很大冲击。在互联网泡沫后,网站建设变成一个蓝领工作。

这里不是鄙视浅技术的开发者,或鼓励浅技术的开发者向深技术转行,而是说根据自己正在从事的技术的深浅,要采取不同的学习和进化策略

比如如果还在做网站UI,就要不断探索新网站的UI方式,不要停留在FrontPage上(应该不会了,呵呵);而如果做后端,哪怕当年最“落后”的C++也仍然值得继续深入,不要三天两头

IT职场人生系列之二:大学生活
IT职场人生系列之三:第一份工作
IT职场人生系列之四:怎样写简历
IT职场人生系列之五:怎样面试
IT职场人生系列之六:员工的公司观
IT职场人生系列之七:学外语
IT职场人生系列之八:行业与公司类型
IT职场人生系列之九:消费观(攒钱,继续教育,买房)
IT职场人生系列之十:创业观
IT职场人生系列之十一:找女友IT职场人生系列之十二:语言与技术IIT职场人生系列之十三:技术?管理?业务?IT职场人生系列之十四:经验积累IT职场人生系列之十五:语言与技术IIIT职场人生系列之十六:入职(新手篇)IT职场人生系列之十七:入职(高手篇)