本文是IT职场人生系列的第十五篇
本篇延续了技术与语言I的内容(之十二),搜集了之后大家的一些评论和我的反馈,整理在这里。
“新人学老技术有风险”的实质
其实不是说老技术没有学习的价值了,而是指新人依托老技术存活,风险很大。
我自己曾经是一个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变复杂了,本来高中毕业生就能做的工作,弄成要有很深厚的根底才能做的工作了。不过对于老手而言,这种深技术思维反而更好,就不会因为转行到新的技术上,而与新手竞争;反而是利用更困难但更有效的架构能力,获取新的起跑线优势,拉开距离。
本篇延续了技术与语言I的内容(之十二),搜集了之后大家的一些评论和我的反馈,整理在这里。
“新人学老技术有风险”的实质
其实不是说老技术没有学习的价值了,而是指新人依托老技术存活,风险很大。
我自己曾经是一个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变复杂了,本来高中毕业生就能做的工作,弄成要有很深厚的根底才能做的工作了。不过对于老手而言,这种深技术思维反而更好,就不会因为转行到新的技术上,而与新手竞争;反而是利用更困难但更有效的架构能力,获取新的起跑线优势,拉开距离。