前言:你所做的事情,也许暂时看不到成果。但不要灰心,你不是没有成长,而是在扎根。
程序员圈经常流行的一句话:“不要重复造轮子”。在计算机领域,我们将封装好的组件、库,叫做轮子。因为它可以拿来直接用,直接塞进我们的项目中,就能实现对应的功能。
有些同学会问,人家都已经做好了,你再来重新弄一遍,有什么意义?这不是在浪费时间吗。
殊不知,造轮子是一种学习方式,能快速进步,造得好,是自己超强能力的表现,同时能增加自己的知名度,有些人靠造轮子成了知乎大V,有些人靠造轮子写了书,有些靠造轮子被大公司挖人。
站在公司角度,是不是要造轮子有很多原因。站在个人技术角度,强烈建议大家造轮子,它能给你想不到东西。
这篇文章,站在技术角度来分析,轮子是什么,造轮子能给我们带来什么,我们要如何造轮子,希望能帮到大家,记得帮我点赞哦。
目录:
- 发明轮子与造轮子的区别
- 造轮子能得到什么
- 造轮子的不同阶段、
- 在工作中,要尝试造轮子吗?
一、发明轮子与造轮子的区别
现在我们都知道,轮子应该是圆的,省力。而当我们的祖先,不知道什么形状都省力的情况下,就可以会发明出三角轮、四边轮、五边轮、圆形轮等等。每种轮子形状都不一样,这叫发明轮子。
而当大家都知道圆形的轮子是好的形状以后,再发明其它形状的轮子就没什么意义了。而此时,如何改进现有的圆形轮子,才是重要的。
上图中,同样是圆形轮子,但从石头轮到木头轮,再到空心木轮,再到气轮的演变过程,使圆形轮子越来越省力。
所以,这就是发明轮子和造轮子的区别,发明轮子是完全不考虑前人的基础,从零开始。而造轮子,其实是改进轮子的过程,在前人的基础上,能越来越好。
流行在程序圈的名句:“不要重复造轮子”,其它它的英文原原文是““Stop Trying to Reinvent the Wheel”。”真正的意义是,不要重复发明轮子。
所以,这也就是我们造轮子指明了方向,我们需要了解之前轮子的原理和利弊,加以改进,使它更好。而不是完全从零开始,自己重新弄。
二、造轮子能得到什么
1、学习技术的极好途径
我刚开始学习自定义控件时,自己根本不知道如何下手,就到github上搜别人写好的很漂亮的控件。怎么搜,我们等下会讲。
一次性找很多,一个个下载源码来看,找那些符合当前自己水平的控件,分析它的实现原理,找到哪些知识我不会,就去学这方面的知识。等这些都学会了,自己再跟着实现一遍,甚至还能发现它的一些bug,并能给它修复。
当你学了一个、两个、三个组件以后,就会发现,很多自定义控件所用到的知识都差不多,到现在,虽然我已经出了两本自定义控件的书了,但我仍经常到github上找找漂亮的自定义控件效果源码来看。总会发现些不会的知识亟待补充。
github的一个个开源组件,为我们提供了丰富的学习资源,而且别人的代码能上传上去,获取一些star,恰恰说明了人家代码写好的,在分析人家代码实现原理的过程中,不知不觉的就理解了他的代码架构方式,当你读了几个组件源码,你会发现,高手之所以是高手,代码可读性真的很高,有些人的代码读起来很享受,而有些人的代码读起来很想死。
而正是在分析别人代码的过程中,我们的架构水平和各种规范,也不知不觉地养成了,比我们自己沉浸在自己的舒适圈里,自认为自己很牛逼,毫无对比,更能清楚认识自己的水平。
向别人学习,不仅是一种态度,更是一种提升自己的方式。
2、知名度
之前写过一篇文章《启舰:有哪些让程序员受益终生的建议》,知乎上快破千赞了,强烈建议大家看看,写程序这么多年,全部经验所得。
其中提到,对于社招同学而言,需要外练名气,内聚实力。而造轮子就是外练名气的一种方式。在《启舰:有哪些让程序员受益终生的建议》这篇文章火了以后,很多同学问我,有关造轮子的各种问题,所以,我决定专门开篇讲一讲轮子的相关内容,就是现在的这篇文章了。
名气有什么用?那可以说是相当有用了,之前我写过一篇文章《启舰:对计算机专业来说学历真的重要吗?》,详细论述了,学历对于计算机专业的重要性。
但,如果你在行业内有一定的知名度,什么学历不好、什么工作年限不够、其它的各种影响都不再是影响了,你就等着被猎头挖吧;在招聘时,如果面试官也知道你,那是必过的存在。
轮子我没造过,但我是写书、写博客的受益者,在我面试VIVO时,表现的并不好,因为我创业一年,Android知识从来没复习过,很多知识都遗忘了,还没来得及复习,就让我去面试了。
他们原以为,我是一个特别厉害的人物,安排三个技术专家同时面,结果,一问三不知。不过,后,还是给了我OFFER。因为他们公认我的能力是足够的,只是时间过了太久,有所遗忘,拾起来就好了。相反,如果没有这个行业影响力,那这次铁定是挂了。
Android领域的一个专家,任玉刚,在Github上提交了动态加载框架。是动态加载框架的先驱,后面很多框架都借鉴了它的原理和代码逻辑。
https://github.com/singwhatiwanna/dynamic-load-apk
github上的star量达到了5.8k,如果你也能弄出来这么个组件,就等着别人来邀请出书、做讲座、挖人吧。
三、造轮子的不同阶段
造轮子像学习一样,是有个渐进的过程的。不要想着,自己弄出来一个组件,就指定火,好大喜功,一步登天,那是不可能的。
VIVO有个名言,凡事都有因果,我们只管埋头种因,到收获的季节自然喜迎丰收!
我们老看到,人家谁谁谁,怎么怎么样,多么多么厉害。其实,人家的努力和付出,你是看不到的。大家都是人,不是神。你所有看到的都是假相,他们背后的努力,你是看不到的。
阶段:学习为主、查漏补缺
先到github,根据你喜欢的组件的关键字去找对应的组件,比如你搜索“自定义控件”,就会出来各种语言的包含自定义控件的组件列表,当你选中java语言时,就会筛选出,java语言下的所有自定义控件的组件列表。
一个个去看他们的效果,如果效果喜欢,就再下载下来源码读一读。看看人家是怎么实现的,怎么做的,用到哪些技术,不会的去学。
阶段,主要是以学习为主,先看人家是怎么做出来的,学习相关技术防出来一个。就这样,在你防个半年以后,会发现,在这个领域,你的知识已成系统,这时候,就可以尝试自己去写一个控件了。
当你发现有些知识不会的时候,看看下面我搜集的资料,很快学会即可。
作者:启舰杂谈
链接:https://juejin.im/post/5e166112f265da5d6d3aefe6
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。