写的很好,转载下, 转载自:https://www.cnblogs.com/doit8791/p/8157453.html
技术的道与术
回归平淡是一个热门技术必然的趋势,五年在IT领域已经是很长久的时间了。回归平淡的未必是技术过时,反而可能是技术过于普及。但是如果你精通的不只是浅表,那是否回归平淡对你来说就无所谓了。
趋势和热点肯定是对前途/薪水会有加成,比如大数据(其实火了很久了),或者AI。在几年内会对从业者薪酬有不小的增幅。但是就如你所说,热点和趋 势是会降温的,比如慢慢社会上就会有越来越多会捣鼓Spark的人,能跑Tensorflow的人,热点带来的红利会慢慢减少到消失的。有些人会迷茫,为 什么自身价值似乎越来越低,是不是要换一个热点;但是有些人却越做越深入,越来越资深,越走越顺。
我的想法是,工程师应该更重视“道”而不是“术”,才能保持竞争力。
什么是“术”?
比如,“遣词造句”,是术。如果你是一个作家,遣词造句无疑是必备技能。
同样,“熟悉编程语言”是术。作为一个程序员,熟悉自己常用的语言的特性,完全是必须的。
类比一下大数据,应用开发或者数据库领域。如何配置Hadoop,架设集群;如何使用某个UI库做出炫酷的界面效果;使用什么参数可以调整某数据库缓存大小等等,都是术。
那什么是“道”?
比如,“一部小说如何谋篇布局”,是道。如果你是一个作家,那么无疑这是比遣词造句更影响你职业生涯的技能。
同样,作为一个程序员,了解系统背后的原理,比熟悉一门语言一个框架对你职业发展会有更深远的影响。
如果你做大数据,那你是否知道分布式系统的一致性保证有些什么不同的设计和取舍?容错又该如何实现?如果你做数据库,又是否知道不同索引的数据结构有什么样的特性?抑或优化器背后的原理是什么?或者你做业务逻辑开发,那你是否通晓了逻辑背后的业务流程以及相关的行业知识?
术的特点是容易过时,或者附加值越来越小。如何使用工具在每天都有新发明的计算机领域无疑是非常容易过时的,公司也不会为使用工具的经验投资太多钱,毕竟够用就行。
诚然术是你必备的技能:不会写代码,不熟悉语言,根本找不到工作。但是并不是你修炼的方向:公司并不会因为你精通一个语言的各种细节而特别青睐你。公司的确是招人写程序的,但是公司并不仅仅是招人“写程序”。
道是我们在领域内不断精进成长的根本:只有了解背后的原理,你才可能在每天都有新系统新语言新框架诞生的科技领域存活;某个框架你并没有摸过,但是你知道哪些指标和特性是选择取舍的依据;某个系统你才听说,但是看了架构设计,你就知道它在你的使用场景下会有什么样的表现,可能会有什么样的坑;再或者你看了某个论文,发现它的原创性设计能改进在你们现有的系统解决之前无法解决问题等等。这样的你,往往比只是对语言熟悉,API精通的码农更受欢迎和尊重。
有人可能会说,你看那些大神程序员,哪个不是对某些语言滚瓜烂熟。是的,我们看到的码农大神们,往往写的一手好C++,精通Go的上上下下左左右 右,但那并不是因为他们专门修行这门语言,而是因为他们在不断研习“道”的路上,顺便磨练了“术”。为了更好的性能,为了实现构思的新设计,他们必须更熟 悉所用的语言。
再你当然可以举出特例:通晓一门语言的方方面面能成为参与制定语言规范的大神;哪怕写字写的好也能成为书法家。这样说也没错。铁砂掌练到极致,也能 和五绝一拼,但这比修内功的路难多了。况且,某人能制定语言规范肯定不是因为她特别熟悉这个语言的细节;书法家之所以是书法家也远不止写字写得好。