“不要重复造轮子”原话是不要重新发明轮子,被许多人偷梁换柱篡改成了不要重复造轮子。谣言就是这么起来的。“发明”和“造”,差之毫厘谬以千里。
从事软件开发多年,倒是经常轮子两个字打交道,经常也会教育刚入行的程序员不要尝试着开始就造轮子,先把轮子怎么使用的套路搞明白,后边基本功上来了随便怎么造都是可以的,虽然这个词经常挂载嘴边上,但真正能够造轮子的人还是少得可怜,能够把外国的轮子使用的非常熟练并且在这个基础上能够做到精准的定制就非常不错了,说到轮子具体来讲可能是从开源社区拿到代码,也可以是别人封装好的一个库文件,毕竟现在能够很多地方拿到很多可靠的类库。下面,我们不妨从多个角度去看待“造轮子”的问题。
项目实现的角度
国内的项目开发习惯,程序员大部分的工作从开源社区拿到一个框架,直接在上面开发功能然后拿来去用,虽然很多程序员对这种做法不屑一顾,但在追赶阶段拿过来别人先进的东西去实现功能也不是什么丢人的事情,毕竟现在国内的软件基础还是落后于欧美等国家,先把自己缺失的大坑给弥补上,随着国内软件的发展已经有很多开源社区里面出现中国程序员贡献的代码了,随着时间的推移这种参与感会变得越来越强,就目前的状态看国内程序员总体质量提升已经是不争的事实,依照发展的角度考虑未来必然有一些造轮子的中国工程师出来。
多数互联网公司角度
从大多数互联网公司角度考虑中国的企业大部分还是应用级别的开发多一些,对于核心技术的触碰还不是很多,最近从华为公司被美国公司打压,突然一夜之间觉得我们还是欠缺非常多的核心技术,真正的核心技术还是要靠创新,因为涉及到核心块的技术别人不会让你触碰,只能自己自己去开发创造,所以核心技术这块更多的是需要创新大部分情况下都要造轮子。现在国内的互联网公司对于核心技术的打磨还是欠缺一些,在战略级的核心技术方面还是缺乏突破,在桌面和移动操作系统方面差距都还是比较巨大,好在云计算这块阿里云已经慢慢跟上来了,核心层面的技术必须做到自主创新。
程序员角度
对于程序员来讲如何提升自己的技术能力,很多程序员都有一个架构师梦,但真正成为架构师也未必去造轮子,距离造轮子还是有一定的距离,所以程序员的工作是水到渠成的事情,可能我们在网络上经常看到某个公司的技术大牛做出什么样子的事情,从概率上讲能成为架构师的人少得可怜,但在平时的编程过程中还是要以架构师的标准来要求自己。机会是自己抓住了弄出来的,机会也不是坐等就能来的,所以作为程序员就是坚持每天都能学到新的东西,才能慢慢积累技术能力前进。
对于常见的基本类库,在学习的过程中可以尝试自己去实现,但在真正的项目研发过程中,直接拿来成熟的类库是最直接的办法,如同现在的美国打压华为,难道华为公司要把所有的供应链都自己提供了,显然也不是很现实的问题,精细化分工是一种大趋势不是某个国家或者民族来决定的,好用的东西直接去用,对于核心层面的东西必然要进行自主研发创新,如果有必要就是造轮子。
最后,造轮子的前提
1.没有轮子用,造轮子
2.有轮子,但是有人找不着,造轮子
3.有轮子,但是不好用,还是想自己造轮子
4.有轮子,也好用,但是就是不想用别人的轮子
5.时间的推移,轮子难以维护,性能瓶颈,回到前面几个点,重新考究轮子。
6.没有能力造轮子,不得不用别人的
7.有能力造轮子,没时间造,你懂的
8.有能力,又有时间,api的创造者,轮子的发明人。
换核心往往意味着要投入很多成本,自己造合适自己的轮子无可厚非,需要衡量得与失!