“新人学老技术有风险”的实质

其实不是说老技术没有学习的价值了,而是指新人依托老技术存活,风险很大。

我自己曾经是一个C++高手,心里很清楚如果自己亲自”无私地“带领一个徒弟,要让他学到我的水平,没有5年做不到;而如果一个人要自学超过我,那可能是10年的事情了(本人编程10年,当年也跟了个师傅才有今天);何况这5年和10年里边,我也在成长,所以几乎是一个无望的竞争。尤其是如果业务市场萎缩,一般水平的人退出,而只剩下高手的老技术。

这种竞争的残酷性,不是来自于技术新旧,也不是来自于人的差异,而是来自于起跑线的不同

这是为什么我建议新人尽量学习新技术的原因,毕竟起跑线是公平的。

不想放弃老技术,怎么办?

1. 若从事老技术(比如嵌入式,很多都是老技术)

若想获得突破,就应该另辟蹊径。

典型的,在技术中多融入应用的概念,也就是换应用领域,换用户体验

比如360杀毒软件,其所用语言、业务领域,都与以往杀毒软件没有本质区别,但是其突破在于更人性化,更易用,更明白用户要什么。因此360在衡量人员的技术水平的时候,就不会单独看技术本身,从而给有想法的新人留下了空间。

在嵌入式、移动互联里边也肯定存在同样的事情。

第二种则是引入新思想

我们曾经有一次是软件服务器后台用C++,机顶盒则是使用C(相对较老)。后来机顶盒里边总是有问题,就让做后台C++的帮助看一下。

结果发现C由于不是面向对象的,里边有很多设计不合理的地方。帮忙的人就利用面向对象的思想,把整个结构重新整理了一下,立刻就干净多了。因此如果你到了一个C环境,就可以尝试学习一下比C更新一点的C++,来超过一直在用C的老手们。

这个在下面还有一种相反情况的介绍。

2. 若从事新技术,应该顺便学习老技术

老技术既然能存在这么久,自然有其道理。若从事新技术,应该多去学习老技术之神。

比如C#是一种很灵活的语言,其特点在于可以让很多不太会编程序的人拿起控件就能使用,但缺点也就出来了:这些控件多数MVC不分离,极难重构,用一次造一次,灵活度有限。

所以像我们这些从C++转来的程序员,就会毫不犹豫地选择MVC架构,除了SQL用LINQ取巧之外,其他地方都用“相对笨拙”的方法实现。但是结果却是:一旦实现,就很容易维护、重构、改造,可保未来5年即使业务千变万化,架构依然稳定。

曾经有一篇文章说MVC把Asp.net变复杂了,本来高中毕业生就能做的工作,弄成要有很深厚的根底才能做的工作了。不过对于老手而言,这种深技术思维反而更好,就不会因为转行到新的技术上,而与新手竞争;反而是利用更困难但更有效的架构能力,获取新的起跑线优势,拉开距离

更多本系列文章: 

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