谈谈程序员重复造轮子的几点思考

3,713 阅读4分钟

今天来写一篇鸡汤帖。

1. 重复造轮子有意义吗?

重复造轮子,大部分一听感觉浪费时间和经历去搞一个别人已经开源的东西,花了时间可能还没搞的别人效果好,何不直接拿别人的过来直接用了,确实非常有道理。

而且工作任务完成过程中,有时候工期紧,要求功能又多,很多都需要建立在别人的基础上完成,轻松又快,快速完成交付,老板又赏识,简直完美。

以上观点我非常赞成,我也经常这样在工作做,节省的自己的时间。

但是还有另外一个角度,抛开工作工期,有交付压力的情况下,个人觉得有想法的情况下有必要去造轮子,经常从网上或身边听到某某面试,问他简历上的东西,比如部署过某某产品,面试官问怎么部署的,面试者回答拿公司现成的工具部署的啊。显示这不是面试官想要的答案,但站在面试者的角度上确实说的是实话,的确干过这个项目,也确实都是公司现有的工具,尤其在大公司,这种现象可能多一点,因为流程工具都非常完善,只需关心业务就好了,但可能业务写多了就变成CV(复制粘贴)大神。

就像是学知识一样,只有把别人变成自己的,然后再去实践才是真正的懂了。互联网技术个人感觉写出来和会用是完全两回事。只有真正去写的时候才知道坑在哪里,是不是哪里线程不安全啊,高并发的情况如何保证数据一致性啊等等。

所以从个人成长的角度出发,重复造轮子还是有必要的,当然得抛开工作交付压力的情况下,强调这个是因为实际工作项目中,用别人更好的且已经完善的东西,显然对项目本身来说是非常好,拿公司钱就得把事情做好。在业务没有交付压力的情况下,个人建议多尝试先想自己如何实现,就算之后用的别人的东西,你看看源码,知道人家如何实现,也就不会出现上面说的面试中遇到懵逼的问题了,简历上自己的项目如果都回答不好,会给面试官不太好的印象。

2. 谈谈我从造轮子里的收获

简单谈谈我造轮子中的收获吧,比如写技术博客,很多知识点网上很多已经写过了,如果这样是不是觉得没必要写了,直接看就好了,个人实践发现写的过程中还是有些知识点写的时候才发现原来之前都理解错了,同时更加能加深对知识点记忆。比如我写了上一篇MySQL索引原理,现在对B-Tree数据结构和磁盘原理理解比较清晰点,以前就觉得这种高级数据结构离我很远。

去年我重新造轮子封装了一个非常轻量的ORM,缘起也是因为业务中用别人的有点不爽,就想自己看看能不能封装一个,平时也没有时间去写,就国庆在家撸了7天。写完之后,遇到很多坑,再去看牛人写的ORM,才知道代码还可以这么写,对MySQL的语法和ORM的常规实现都有了一定的理解。之前也还造过类似elasticdump的脚本,费了很大神,运行一段时间才知道有elasticdump的存在,果断换了elasticdump,虽然结果上最终用了elasticdump,但是过程还是蛮多收获,同时也会激起你去看源码的冲动。

最近在接触项目里有接触到RPC,我就有想法去了解原理,重新造轮子,但你可能会问时间和精力问题。工作时间内去造这种轮子,是不太现实的,确实。只有牺牲自己的业余时间,去写这种对自己能力提升有帮助的轮子,这是值得的。之前看动漫,主角修仙者都是闭关多久出来才成了厉害角色,角色只是让我们看到了结果,但是想想闭关期间,吃饭睡觉都在修炼,所以要想成为大牛。

哈哈,鸡汤帖结束,希望大家事业上都能修道成仙,来分享你的故事。

更多精彩文章,欢迎关注公众号: 「天澄技术杂谈」