程序员如何经过造轮子走向人生巅峰?

前言:你所作的事情,也许暂时看不到成果。但不要灰心,你不是没有成长,而是在扎根。

程序员圈常常流行的一句话:“不要重复造轮子”。在计算机领域,咱们将封装好的组件、库,叫作轮子。由于它能够拿来直接用,直接塞进咱们的项目中,就能实现对应的功能。前端

有些同窗会问,人家都已经作好了,你再来从新弄一遍,有什么意义?这不是在浪费时间吗。java

却不知,造轮子是一种学习方式,能快速进步,造得好,是本身超强能力的表现,同时能增长本身的知名度,有些人靠造轮子成了知乎大V,有些人靠造轮子写了书,有些靠造轮子被大公司挖人。git

站在公司角度,是否是要造轮子有不少缘由。站在我的技术角度,强烈建议你们造轮子,它能给你想不到东西。程序员

这篇文章,站在技术角度来分析,轮子是什么,造轮子能给咱们带来什么,咱们要如何造轮子,但愿能帮到你们,记得帮我点赞哦。github

目录:web

  • 发明轮子与造轮子的区别
  • 造轮子能获得什么
  • 造轮子的不一样阶段、
  • 在工做中,要尝试造轮子吗?

1、发明轮子与造轮子的区别

如今咱们都知道,轮子应该是圆的,最省力。而当咱们的祖先,不知道什么形状都省力的状况下,就能够会发明出三角轮、四边轮、五边轮、圆形轮等等。每种轮子形状都不同,这叫发明轮子。面试

file

而当你们都知道圆形的轮子是最好的形状之后,再发明其它形状的轮子就没什么意义了。而此时,如何改进现有的圆形轮子,才是最重要的。segmentfault

file

上图中,一样是圆形轮子,但从石头轮到木头轮,再到空心木轮,再到气轮的演变过程,使圆形轮子愈来愈省力。设计模式

因此,这就是发明轮子和造轮子的区别,发明轮子是彻底不考虑前人的基础,从零开始。而造轮子,实际上是改进轮子的过程,在前人的基础上,能愈来愈好。微信

流行在程序圈的名句:“不要重复造轮子”,其它它的英文原原文是““Stop Trying to Reinvent the Wheel”。”真正的意义是,不要重复发明轮子。

因此,这也就是咱们造轮子指明了方向,咱们须要了解以前轮子的原理和利弊,加以改进,使它更好。而不是彻底从零开始,本身从新弄。

2、造轮子能获得什么

一、学习技术的极好途径

我刚开始学习自定义控件时,本身根本不知道如何下手,就到github上搜别人写好的很漂亮的控件。怎么搜,咱们等下会讲。

一次性找不少,一个个下载源码来看,找那些符合当前本身水平的控件,分析它的实现原理,找到哪些知识我不会,就去学这方面的知识。等这些都学会了,本身再跟着实现一遍,甚至还能发现它的一些bug,并能给它修复。

当你学了一个、两个、三个组件之后,就会发现,不少自定义控件所用到的知识都差很少,到如今,虽然我已经出了两本自定义控件的书了,但我仍常常到github上找找漂亮的自定义控件效果源码来看。总会发现些不会的知识亟待补充。

github的一个个开源组件,为咱们提供了丰富的学习资源,并且别人的代码能上传上去,获取一些star,偏偏说明了人家代码写好的,在分析人家代码实现原理的过程当中,不知不觉的就理解了他的代码架构方式,当你读了几个组件源码,你会发现,高手之因此是高手,代码可读性真的很高,有些人的代码读起来很享受,而有些人的代码读起来很想死。

而正是在分析别人代码的过程当中,咱们的架构水平和各类规范,也不知不觉地养成了,比咱们本身沉浸在本身的温馨圈里,自认为本身很牛逼,毫无对比,更能清楚认识本身的水平。

向别人学习,不只是一种态度,更是一种提高本身的方式。

二、知名度

以前写过一篇文章《启舰:有哪些让程序员受益终生的建议》,知乎上快破千赞了,强烈建议你们看看,写程序这么多年,所有经验所得。

其中提到,对于社招同窗而言,须要外练名气,内聚实力。而造轮子就是外练名气的一种方式。在《启舰:有哪些让程序员受益终生的建议》这篇文章火了之后,不少同窗问我,有关造轮子的各类问题,因此,我决定专门开篇讲一讲轮子的相关内容,就是如今的这篇文章了。

名气有什么用?那能够说是至关有用了,以前我写过一篇文章《启舰:对计算机专业来讲学历真的重要吗?》,详细论述了,学历对于计算机专业的重要性。

但,若是你在行业内有必定的知名度,什么学历很差、什么工做年限不够、其它的各类影响都再也不是影响了,你就等着被猎头挖吧;在招聘时,若是面试官也知道你,那绝对是必过的存在。

轮子我没造过,但我是写书、写博客的受益者,在我面试VIVO时,表现的并很差,由于我创业一年,Android知识历来没复习过,不少知识都遗忘了,还没来得及复习,就让我去面试了。

他们原觉得,我是一个特别厉害的人物,安排三个技术专家同时面,结果,一问三不知。不过,最后,仍是给了我OFFER。由于他们公认个人能力是足够的,只是时间过了过久,有所遗忘,拾起来就行了。相反,若是没有这个行业影响力,那此次铁定是挂了。

Android领域的一个专家,任玉刚,在Github上提交了动态加载框架。是动态加载框架的先驱,后面不少框架都借鉴了它的原理和代码逻辑。

https://github.com/singwhatiw...

github上的star量达到了5.8k,若是你也能弄出来这么个组件,就等着别人来邀请出书、作讲座、挖人吧。

file

3、造轮子的不一样阶段

造轮子像学习同样,是有个渐进的过程的。不要想着,本身弄出来一个组件,就指定火,好大喜功,一步登天,那是不可能的。

VIVO有个名言,凡事都有因果,咱们只管埋头种因,到收获的季节天然喜迎丰收!

咱们老看到,人家谁谁谁,怎么怎么样,多么多么厉害。其实,人家的努力和付出,你是看不到的。你们都是人,不是神。你全部看到的都是假相,他们背后的努力,你是看不到的。

第一阶段:学习为主、查漏补缺

先到github,根据你喜欢的组件的关键字去找对应的组件,好比你搜索“自定义控件”,就会出来各类语言的包含自定义控件的组件列表,当你选中java语言时,就会筛选出,java语言下的全部自定义控件的组件列表。

file

一个个去看他们的效果,若是效果喜欢,就再下载下来源码读一读。看看人家是怎么实现的,怎么作的,用到哪些技术,不会的去学。

第一阶段,主要是以学习为主,先看人家是怎么作出来的,学习相关技术防出来一个。就这样,在你防个半年之后,会发现,在这个领域,你的知识已成系统,这时候,就能够尝试本身去写一个控件了。

当你发现有些知识不会的时候,看看下面我搜集的资料,很快学会便可。

我精心整理了计算机各个方向的从入门、进阶、实战的视频课程和电子书,都是技术学习路上必备的经验,跟着视频学习是进步最快的,并且全部课程都有源码,直接跟着去学!!!

只要关注微信公众号【启舰杂谈】后回复你所需方向的关键字便可,好比『Android』、『java』、『ReactNative』、『H5』、『javaweb』、『面试』、『机器学习』、『web前端』、『设计模式』等关键字获取对应资料。(全部资料免费送,转发宣传靠你们自愿)

视频内容很是多,总共2184G、一千六百多册电子书,九百多套视频教程,涉及43个方向。我整理了很长时间,有些资料是靠买的,但愿你们能最快的提高本身。帮我点个赞吧。

《全网2184G计算机各方向视频教程/电子书汇总(持续更新中)》

file

第二阶段:简单控件自已实现

在本身的知识造成体系之后,在看博客或文章时,常常会看到人家介绍一些组件,这时,就想若是本身实现,要如何实现。本身先尝试实现出来,把bug都解决。

而后,再去看人家的源码,在对比的过程当中,就会发现,思路是否是同样,他实现的比你好仍是比你的差,他里面涉及的一些知识,是否是有问题等等。

经过不段的磨练,这方面的知识基本上就达到活学活用了,能够进入下一步了。

file

第三阶段:分析复杂控件实现原理,提交Merge Request

在本身能实现一些简单控件的时候,这时候就须要找一些复杂的组件来拆解了,看人家的代码架构。学习架构的知识和实现原理,为本身实现复杂控件打下基础。

好比,我前段时间研究Lottie框架,Lottie是一个动画框架,经过将AE作出来的动画直接应用于代码中。

在了解了Lottie的原理后,发现Lottie在字体解析与绘制时存在bug,就改它的源码,修复bug,增长功能等等,以使这个框架能顺利应用到项目中。

这就是达到必定水平后的驾驭能力,当你对一个领域熟练之后,对于高端框架,彻底可以帮它修复bug,拓展功能,更进一步地,你能够改变它的核心逻辑,以达到更进一步改进框架的能力。

file

第四阶段:实现本身的组件——实现真正的造轮子

当你在使用一个框架、组件时,发现它用着不爽,或者有本身的想法时,就能够尝试本身去改进一个出来。固然,最好的改进方式,仍是先对市面的全部类似组件原理彻底了解以后,在他们的基础上加以改进,效果会更好。

我虽然,将这个步骤放在最后,但造轮子倒是随时均可以的,你们没必要担忧本身写的组件不够好,被人批评。等你真正写完,放到github上,你可能会发现,根本没人看……批评都不会有。

这跟写博客是同样的,刚开始的时候,博客质量不高,根本也是没人看,但只要坚持优化写法,总会有炉火纯青的那一天。

不少人,喜欢什么都准备好了才开始。去年,我写书的时候,有个朋友想作公众号,一直在想着准备素材、调研方向、看各类教程,以他的说法,他要所有准备好了,熟门熟路了才会开始。

而我则不一样,我在开始任何一件事前,只会思考定方向,作哪方面的内容,一旦方向定了,我从不会考虑准备的好很差,就是开始作。遇到不会的,想办法解决就是。如今个人书已经写好了,粉丝也已经三万了,他还在准备当中。

咱们无论作什么事都须要打基石,开始打基石最好的时间即是如今,若是如今不开始,也许日后也不会再开始了。

file

4、在工做中要尝试轮子吗?

工做中,若是时间容许,简单的组件,能够尝试本身写,复杂的组件,建议使用现成的。毕竟公司不是慈善机构,不可能由于一个组件让你写个二十来天,更况且,网上有现成的,拿来用便可。你本身排期,排个二十来天,本身也没办法钟解释吧。

file

这篇文章就到这里,但愿你们都能有所收货。记得帮我点赞哦。

关注公众号【启舰杂谈】回复『Android』、『java』、『ReactNative』、『H5』、『javaweb』、『面试』、『机器学习』、『web前端』、『设计模式』、『考研』、『产品经理』、『运营』等关键字获取对应资料,共2184G,涉及43个开发方向,入门/进阶/实战都有,一千多册电子书和九百多套视频教程。

公众号【启舰杂谈】,做者启舰,出过书、创过业,呆过阿里、如今VIVO,啥都会点的安卓开发。

启舰:全网2184G计算机各方向视频教程/电子书汇总

爆文推荐:

启舰:计算机考研,这样选学校才是正解

启舰:计算机专业有必要考研吗?

启舰:在中国程序员是青春饭吗?

启舰:如何在计算机面试中牵着面试官鼻子走?

启舰:有哪些让程序员受益终生的建议

启舰:你是怎么变自律的?

更多启舰原创文章:

启舰精品文章列表

资源下载:

启舰:全网2184G计算机各方向视频教程/电子书汇总

启舰:452G计算机考研初试/复试资料汇总(初试辅导视频+各大高校复试资料,全免费!!!)

启舰:最新!2016-2019计算机历年校招真题、面经、复习资料总结(11G/2284份文件)

file

本人全部文章皆为原创,都与版权保护平台有合做,著做权归启舰全部,未经受权,转载必究!

相关文章
相关标签/搜索