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

前言:你所做的事情,也許暫時看不到成果。但不要灰心,你不是沒有成長,而是在紮根。
程序員圈經常流行的一句話:“不要重複造輪子”。在計算機領域,我們將封裝好的組件、庫,叫做輪子。因爲它可以拿來直接用,直接塞進我們的項目中,就能實現對應的功能。

有些同學會問,人家都已經做好了,你再來重新弄一遍,有什麼意義?這不是在浪費時間嗎。

殊不知,造輪子是一種學習方式,能快速進步,造得好,是自己超強能力的表現,同時能增加自己的知名度,有些人靠造輪子成了知乎大V,有些人靠造輪子寫了書,有些靠造輪子被大公司挖人。

站在公司角度,是不是要造輪子有很多原因。站在個人技術角度,強烈建議大家造輪子,它能給你想不到東西。
這篇文章,站在技術角度來分析,輪子是什麼,造輪子能給我們帶來什麼,我們要如何造輪子,希望能幫到大家,記得幫我點贊哦。

目錄:

發明輪子與造輪子的區別
造輪子能得到什麼
造輪子的不同階段、
在工作中,要嘗試造輪子嗎?
一、發明輪子與造輪子的區別
現在我們都知道,輪子應該是圓的,最省力。而當我們的祖先,不知道什麼形狀都省力的情況下,就可以會發明出三角輪、四邊輪、五邊輪、圓形輪等等。每種輪子形狀都不一樣,這叫發明輪子。

而當大家都知道圓形的輪子是最好的形狀以後,再發明其它形狀的輪子就沒什麼意義了。而此時,如何改進現有的圓形輪子,纔是最重要的。

上圖中,同樣是圓形輪子,但從石頭輪到木頭輪,再到空心木輪,再到氣輪的演變過程,使圓形輪子越來越省力。

所以,這就是發明輪子和造輪子的區別,發明輪子是完全不考慮前人的基礎,從零開始。而造輪子,其實是改進輪子的過程,在前人的基礎上,能越來越好。

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

所以,這也就是我們造輪子指明瞭方向,我們需要了解之前輪子的原理和利弊,加以改進,使它更好。而不是完全從零開始,自己重新弄。

 

二、造輪子能得到什麼
1、學習技術的極好途徑

我剛開始學習自定義控件時,自己根本不知道如何下手,就到github上搜別人寫好的很漂亮的控件。怎麼搜,我們等下會講。

一次性找很多,一個個下載源碼來看,找那些符合當前自己水平的控件,分析它的實現原理,找到哪些知識我不會,就去學這方面的知識。等這些都學會了,自己再跟着實現一遍,甚至還能發現它的一些bug,並能給它修復。

當你學了一個、兩個、三個組件以後,就會發現,很多自定義控件所用到的知識都差不多,到現在,雖然我已經出了兩本自定義控件的書了,但我仍經常到github上找找漂亮的自定義控件效果源碼來看。總會發現些不會的知識亟待補充。

github的一個個開源組件,爲我們提供了豐富的學習資源,而且別人的代碼能上傳上去,獲取一些star,恰恰說明了人家代碼寫好的,在分析人家代碼實現原理的過程中,不知不覺的就理解了他的代碼架構方式,當你讀了幾個組件源碼,你會發現,高手之所以是高手,代碼可讀性真的很高,有些人的代碼讀起來很享受,而有些人的代碼讀起來很想死。

而正是在分析別人代碼的過程中,我們的架構水平和各種規範,也不知不覺地養成了,比我們自己沉浸在自己的舒適圈裏,自認爲自己很牛逼,毫無對比,更能清楚認識自己的水平。

向別人學習,不僅是一種態度,更是一向提升自己的方式。

2、知名度

之前寫過一篇文章《啓艦:有哪些讓程序員受益終生的建議》,知乎上快破千讚了,強烈建議大家看看,寫程序這麼多年,全部經驗所得。

其中提到,對於社招同學而言,需要外練名氣,內聚實力。而造輪子就是外練名氣的一種方式。在《啓艦:有哪些讓程序員受益終生的建議》這篇文章火了以後,很多同學問我,有關造輪子的各種問題,所以,我決定專門開篇講一講輪子的相關內容,就是現在的這篇文章了。

名氣有什麼用?那可以說是相當有用了,之前我寫過一篇文章《啓艦:對計算機專業來說學歷真的重要嗎?》,詳細論述了,學歷對於計算機專業的重要性。

但,如果你在行業內有一定的知名度,什麼學歷不好、什麼工作年限不夠、其它的各種影響都不再是影響了,你就等着被獵頭挖吧;在招聘時,如果面試官也知道你,那絕對是必過的存在。

輪子我沒造過,但我是寫書、寫博客的受益者,在我面試VIVO時,表現的並不好,因爲我創業一年,Android知識從來沒複習過,很多知識都遺忘了,還沒來得及複習,就讓我去面試了。

他們原以爲,我是一個特別厲害的人物,安排三個技術專家同時面,結果,一問三不知。不過,最後,還是給了我OFFER。因爲他們公認我的能力是足夠的,只是時間過了太久,有所遺忘,拾起來就好了。相反,如果沒有這個行業影響力,那這次鐵定是掛了。

Android領域的一個專家,任玉剛,在Github上提交了動態加載框架。是動態加載框架的先驅,後面很多框架都借鑑了它的原理和代碼邏輯。

singwhatiwanna/dynamic-load-apk

github上的star量達到了5.8k,如果你也能弄出來這麼個組件,就等着別人來邀請出書、做講座、挖人吧。

三、造輪子的不同階段
造輪子像學習一樣,是有個漸進的過程的。不要想着,自己弄出來一個組件,就指定火,好大喜功,一步登天,那是不可能的。

VIVO有個名言,凡事都有因果,我們只管埋頭種因,到收穫的季節自然喜迎豐收!

我們老看到,人家誰誰誰,怎麼怎麼樣,多麼多麼厲害。其實,人家的努力和付出,你是看不到的。大家都是人,不是神。你所有看到的都是假相,他們背後的努力,你是看不到的。

第一階段:學習爲主、查漏補缺

先到github,根據你喜歡的組件的關鍵字去找對應的組件,比如你搜索“自定義控件”,就會出來各種語言的包含自定義控件的組件列表,當你選中java語言時,就會篩選出,java語言下的所有自定義控件的組件列表。

一個個去看他們的效果,如果效果喜歡,就再下載下來源碼讀一讀。看看人家是怎麼實現的,怎麼做的,用到哪些技術,不會的去學。

第一階段,主要是以學習爲主,先看人家是怎麼做出來的,學習相關技術防出來一個。就這樣,在你防個半年以後,會發現,在這個領域,你的知識已成系統,這時候,就可以嘗試自己去寫一個控件了。

當你發現有些知識不會的時候,看看下面我搜集的資料,很快學會即可。

我精心整理了計算機各個方向的從入門、進階、實戰的視頻課程和電子書,都是技術學習路上必備的經驗,跟着視頻學習是進步最快的,而且所有課程都有源碼,直接跟着去學!!!
只要關注微信公衆號【啓艦雜談】後回覆你所需方向的關鍵字即可,比如『Android』、『java』、『ReactNative』、『H5』、『javaweb』、『面試』、『機器學習』、『web前端』、『設計模式』等關鍵字獲取對應資料。(所有資料免費送,轉發宣傳靠大家自願)

視頻內容非常多,總共2184G、一千六百多冊電子書,九百多套視頻教程,涉及43個方向。我整理了很長時間,有些資料是靠買的,希望大家能最快的提升自己。幫我點個贊吧。

全網2184G計算機各方向視頻教程/電子書彙總(持續更新中)

第二階段:簡單控件自已實現

在自己的知識形成體系以後,在看博客或文章時,經常會看到人家介紹一些組件,這時,就想如果自己實現,要如何實現。自己先嚐試實現出來,把bug都解決。

然後,再去看人家的源碼,在對比的過程中,就會發現,思路是不是一樣,他實現的比你好還是比你的差,他裏面涉及的一些知識,是不是有問題等等。

通過不段的磨練,這方面的知識基本上就達到活學活用了,可以進入下一步了。

第三階段:分析複雜控件實現原理,提交Merge Request

在自己能實現一些簡單控件的時候,這時候就需要找一些複雜的組件來拆解了,看人家的代碼架構。學習架構的知識和實現原理,爲自己實現複雜控件打下基礎。

比如,我前段時間研究Lottie框架,Lottie是一個動畫框架,通過將AE做出來的動畫直接應用於代碼中。

在瞭解了Lottie的原理後,發現Lottie在字體解析與繪製時存在bug,就改它的源碼,修復bug,增加功能等等,以使這個框架能順利應用到項目中。

這就是達到一定水平後的駕馭能力,當你對一個領域熟練以後,對於高端框架,完全能夠幫它修復bug,拓展功能,更進一步地,你可以改變它的核心邏輯,以達到更進一步改進框架的能力。

第四階段:實現自己的組件——實現真正的造輪子

當你在使用一個框架、組件時,發現它用着不爽,或者有自己的想法時,就可以嘗試自己去改進一個出來。當然,最好的改進方式,還是先對市面的所有相似組件原理完全瞭解之後,在他們的基礎上加以改進,效果會更好。

我雖然,將這個步驟放在最後,但造輪子卻是隨時都可以的,大家不必擔心自己寫的組件不夠好,被人批評。等你真正寫完,放到github上,你可能會發現,根本沒人看……批評都不會有。

這跟寫博客是一樣的,剛開始的時候,博客質量不高,根本也是沒人看,但只要堅持優化寫法,總會有爐火純青的那一天。

很多人,喜歡什麼都準備好了纔開始。去年,我寫書的時候,有個朋友想做公衆號,一直在想着準備素材、調研方向、看各種教程,以他的說法,他要全部準備好了,熟門熟路了纔會開始。

而我則不同,我在開始任何一件事前,只會思考定方向,做哪方面的內容,一旦方向定了,我從不會考慮準備的好不好,就是開始做。遇到不會的,想辦法解決就是。現在我的書已經寫好了,粉絲也已經三萬了,他還在準備當中。

我們不管做什麼事都需要打基石,開始打基石最好的時間便是現在,如果現在不開始,也許往後也不會再開始了。

四、在工作中要嘗試輪子嗎?
工作中,如果時間允許,簡單的組件,可以嘗試自己寫,複雜的組件,建議使用現成的。畢竟公司不是慈善機構,不可能因爲一個組件讓你寫個二十來天,更何況,網上有現成的,拿來用即可。你自己排期,排個二十來天,自己也沒辦法鍾解釋吧。

這篇文章就到這裏,希望大家都能有所收貨。記得幫我點贊哦。

關注公衆號【啓艦雜談】回覆『Android』、『java』、『ReactNative』、『H5』、『javaweb』、『面試』、『機器學習』、『web前端』、『設計模式』、『考研』、『產品經理』、『運營』等關鍵字獲取對應資料,共2184G,涉及43個開發方向,入門/進階/實戰都有,一千多冊電子書和九百多套視頻教程。 公衆號【啓艦雜談】,作者啓艦,出過書、創過業,呆過阿里、現在VIVO,啥都會點的安卓開發。

全網2184G計算機各方向視頻教程/電子書彙總(持續更新中)
————————————————
版權聲明:本文爲CSDN博主「啓艦」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/harvic880925/article/details/103868932

發佈了43 篇原創文章 · 獲贊 119 · 訪問量 129萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章