程序員如何經過造輪子走向人生巔峯?

前言:你所作的事情,也許暫時看不到成果。但不要灰心,你不是沒有成長,而是在紮根。

程序員圈常常流行的一句話:「不要重複造輪子」。在計算機領域,咱們將封裝好的組件、庫,叫作輪子。由於它能夠拿來直接用,直接塞進咱們的項目中,就能實現對應的功能。前端

有些同窗會問,人家都已經作好了,你再來從新弄一遍,有什麼意義?這不是在浪費時間嗎。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

本人全部文章皆爲原創,都與版權保護平臺有合做,著做權歸啓艦全部,未經受權,轉載必究!

相關文章
相關標籤/搜索