理顺竞争与互补的关系:关于技术学习答驴问
主席说过:“谁是我们的敌人?谁是我们的朋友?这个问题是革命的首要问题。”敌人能给我们带来伤害,而朋友能给我们带来帮助。在技术学习中也可以采用这种观点,分清哪些技术是朋友,哪些技术是敌人。所谓敌人,也就是和当下是竞争者关系的对象,所谓朋友,就是和当下是互补关系的对象。辨析竞争关系和互补关系,是很重要的技巧。别人卖刀你卖刀,别人卖水你卖水,这就是竞争关系。别人卖刀你卖金创药,这就是互补关系。在技术学习中,就需要善于辨识出所选择对象中的竞争关系和互补关系。
比如,Java和.Net之间在企业开发领域是竞争关系。MSSQLServer和Oracle是竞争关系。在Web开发领域,Python、Ruby、Asp.Net、PHP是竞争关系。竞争关系的实质就是你只用选择一个就可以满足需求,而不需要过多的去看其它的技术。
再比如,在服务器编程这一块,Python和C++是互补技术,做图像处理的话,如果通过C#调用C/C++库,那么此时C#和C/C++之间是互补技术(如果我直接用C# Unsafe来写代码,根本不鸟C/C++,则此时C#就成了C/C++的竞争技术)。
就搞算法的人来说,Matlab和C++是互补技术,而Matlab和Python是竞争技术。
合适的学习策略应该是在众多竞争技术中选择一种最合适的技术作为主技术,然后把这门技术学习深入,再把这门技术的互补技术尽量多学,就够了。这样一看,领头驴需要的技术就很少了:NLP领域的待选技术就只有三个C++,Matlab和Java。如果以Matlab为主技术,对就业没好处,除非是算法超级大牛;Java估计用的企业不多;就剩下个C++了。C++的互补技术在领头驴这里有三个待选:C#、Matlab和Python。最佳选择也就是Python了。Python既可以当一个强大的Shell语言来用,也可以像Matlab那样作为研究工具来用,也可以用来快速开发原型和界面,用来写爬虫啥的也是很方便的。
主技术C++,互补技术Python。剩下的仅仅只需要了解即可。这样一来,技术学习的任务就太轻松了。至于新技术,如果和自己的目标是互补关系,是一定要了解的,如果和自己的目标是竞争关系,可以看看有没啥好借鉴的,如果没有,直接pass即可。
数据库最好也要了解一些,这个属于互补技术。数学、英语这些也自然是互补的。当互补的东西多了,抱成一团了,就强大了。
这样一分析,哪里有什么新技术?都是老怪物!倒是什么语言学、火星文啊、神马、你懂得啊这些俗语和中文NLP形成互补的关系。