学习一门技术外语

在擅长的技术领域之外, 学习一些其他技术领域的知识, 像学习一门外语那样,收益巨大

马克思说过: A foreign language is a weapon in the struggle of life https://www.marxists.org/archive/lafargue/1890/xx/marx.htm. 学习一门外语,可以深入了解不同的文化和价值观,不同的思维方式和认知。像学习一门外语一样,程序员也可通过系统学习一个全新的技术领域,来增加知识面,加深对自身专业的认识,差异越大的技术领域,越容易产生有意思的化学作用。

外语

举例来说, Java与CUDA程序员,互相就是"技术外语", 因为他们的技术相关太小,日常工作也较难走到一起。但如果他们都系统学习一下对方领域的知识,一定会有很大收获。Java程序员,会突破自身CRUD的局限,了解高性能计算的概念,学习到除了多核和并发之外(Java程序员自身也会接触到),还有CUDA这样并行加速的概念,在某些CPU特别难优化性能的地方,也许就会用上了CUDA。对CUDA程序员来说,除了开发专门的面向数据的算法片段之外,自己也具备开发完整应用的能力,也许可以尝试用Java搭建一个跨机器分布式应用,来高效率实现CUDA参数调试,或者利用Java丰富的生态开发一个日常用的辅助工具。再比如,全栈程序员,就是懂了几门相关联技术外语,能够搭建从云到终端的完整应用。

除了增加自己的知识面之外,学习技术外语,还有助于提高自己的认知水平:认识到所谓技术鄙视是多么的可笑,毕竟计算机里最朴素,最基础的那些知识才是最核心的,很多领域不过是特定的问题和特定方法。另外培养的新的技术栈,有助于提高程序员的生存能力,随时可以将新的技术栈发展为主栈,这在技术剧烈更新换代的时候,尤为重要。

对于以Python为主力开发的AI工程师来说(对他们来说MPI/CUDA高性能计算就不能算严格的技术外语了),不妨系统学习一下前端领域与或者数据库领域的知识。对前端开发来说,去学习一个嵌入式开发,也许是一个挺好的主意。对搞系统底层开发的C++程序员来说,学习一下多媒体领域比如音频编程,说不定会有好玩的结果。总之,技术领域差异越大,就像人们学习差异巨大的外语一样,受到的文化冲击越大,带给程序员收获和思考越多。

最后,要强调的是,像学习外语要和人交流一样,技术外语也要正儿八经的学,拿出三个月的时间来进行系统学习和实践,扎实入门新领域的基础,才会有真正的效果,否则就是一般意义上科普了,无法达到“技多不压身”的效果了。