致所有的開發者們

挑戰者V發表於2019-05-27

此文來自我個人微信公眾號,總的來說,閱讀量和反饋都還挺不錯,藉此分享給廣大的博友們。

本文主要內容為如下幾個方面?

  • 為什麼要有一個自己的部落格

  • 為什麼要讓自己的GitHub活躍起來

  • 每天給自己一點學習的時間

 

一、為什麼要有一個自己的部落格

關於為什麼要有一個自己的部落格這個問題,其實與為什麼要寫部落格基本上是相通的。

 

首先說說關於為什麼要寫部落格?

寫部落格的目的很簡單,就是為了總結和記錄,記錄工作中遇到的問題,總結專案的得失或者是自己沒有深刻理解某個API導致出現了某某問題等。

如果再往高度說,就是為了分享。分享自己遇到的坑以及是如何填了這個坑及其自己到底是因為什麼原因才落入了這個坑。在寫的過程中,也是讓自己在思考,經過深度的思考和總結,能夠避免再度重蹈覆轍。

 

寫部落格給我帶來的好處?

(1)提高效率(比如我需要搭建Ubuntu16.04的專案環境時,我直接就可以參考自己的部落格來實現快速搭建);

 

(2)深究問題,提高知識深度。有的時候解決一些問題時,我們往往都滿足於解決了就行,而非深究這個問題,這時再寫部落格的時候,我就會問自己,為什麼會出現這個問題,有時候弄清楚為什麼比怎麼解決更重要,因為當你知道了為什麼時,就基本上已經有了如何解決這個問題的思路。

 

(3)引導新人和幫助同事。特別是團隊帶新人的時候,有的時候新人遇到一些問題(這些問題基本上都是老鳥們已經遇到過),這時新人遇到了時,你可以將你的部落格分享給他,讓他自己看,這時部落格就可以起到引領新人的目的(張開濤先生曾經寫部落格系列文章也是這個目的),當然了,如果時間比較寬裕的話,可以告訴他問題的原因和解決思路;

 

(4)知識系統化。我認為無論學什麼程式語言和框架都需要系統化地去學,像比如HelloWorld這樣的例子,基本上都能學會,有不少朋友僅僅滿足於拿這個技術跑起來一個簡單的例子就表示自己已經掌握了這門技術,就不再繼續學習下去了,除非公司真正的要用到時才去比較系統的去學一下。

比如曾經的我就是如此,曾經的我Python和Node.js我都學過,但是現在的話,留下的只有Node.js,Node.js還是因為最近對Settings-Sync外掛二次開發的時候才去比較系統地去學習。知識系統化的目的在於讓自己所儲備的知識樹更加紮實穩定

 

(5)讓思路更清晰。寫作的同時也是理清思路。特別是開發過程中,思路清晰很重要,思路不清晰基本上等於無用功。

 

寫部落格的好處很多,這裡就不一一說了。寫部落格,堅持很重要。寧可不寫也不能敷衍了事。

 

有朋友說有了家庭有了小孩哪有那麼多時間來寫這些呢?

我對此的回答是:定期總結很重要,可以不那麼頻繁。比如單身的時候每天寫一篇兩篇或者是兩天篇之類的頻率,有了女朋友然後到結婚再到有了小孩可以根據自己的時間進行合理安排。不過堅持,本人認為很重要,千萬不能三天打魚兩天曬網。記得我剛開始寫部落格的時候,的確覺得好難寫,另外也覺得網上明明就有現成的答案,我何必多次一舉呢。關於剛剛開始寫覺得很難這個問題,萬事開頭難,這是肯定的,聯想到廣大的小夥伴們在校學計算機時,特別是從農村出來的朋友們(這裡不是歧視),哪一個學計算機又是輕鬆的呢?寫部落格亦是如此。

 

關於有人說,我文采不好我寫不好怎麼辦?

我對此的回答是我文采也不好啊。寫部落格的主要目的是讓自己總結和記錄而非一定要在此中展示文采。其次在寫多的前提下,慢慢讓文章具有條理性,然後分享給廣大的朋友們。至於文采方面,放眼古今中外又有哪一個天生就寫的一首好文章的呢?也許有,但我不知道。

 

回到一個原有的問題上來,為什麼要有一個自己的部落格?

原因有這麼幾個方面?

第一、安全感。時代總是在變,誰也不能保證今天的東西,明天不會淘汰(比如曾經的雅虎是多麼的風光,而今早已不復當年勇了或者更糟糕地像AT&T煙消雲散)。

第二、利於學習。我想從學習的角度來說,我做過不少專案,發現很多專案與我以前在學校的時候做的部落格本質上差別並不大,比如許可權管理、內容管理等。許可權管理又可以有角色、選單、組織部門、總公司和分公司等。內容管理又可以包含客戶資訊、人力資源管理、財務報表、商品管理、醫療管理等。而這些其實都可以在部落格系統裡面進行復現。寫一個部落格系統,不僅僅是提高自己的實踐能力,同時也是在提高專案認知。

第三、提高影響力。比如阮一峰先生的部落格就是一個很好的證明。當然了,還有很多知名博主。關於這個影響力的好處我就不多說了。

 

關於搭建自己的部落格,目前有這麼幾個平臺可以輕鬆搭建?

(1)GitHub。比如我的GitHub部落格平臺是使用Hexo,地址為:

https://developers-youcong.github.io/

 

(2)WordPress。WordPress的名氣就不多說了。記得GitHub裡面的一個開源專案Jeecg的外掛開發我覺得其就是參考WordPress的。

關於WordPress平臺搭建也可以參考我的這篇部落格:


Ubuntu16.04搭建WordPress:

https://www.cnblogs.com/youcong/p/9309197.html

 

CentOS7搭建WordPress:

https://www.cnblogs.com/youcong/p/9240603.html

 

(3)Jekyllt。關於Jekyllt需要搭建對應的Ruby環境。不過我沒有搭建過,更多可以參考其官網。

 

(4)自己動手豐衣足食。可以選擇自己寫,程式語言可以是Java,也可以是Node.js或PHP。最近本人自己就在寫,當然了,寫也不是完全沒有參考的,當初在學校的時候,主要是參考像CSDN、部落格園等這樣的。現在寫的話主要還是站在巨人的肩上,比如我現在主要參考系就是WordPress。之所以寫部落格也是為了實踐自己看的書,比如像分散式儲存之類、高併發等。我一直就不喜歡背那些面試題,因為不理解的話根本記不住,只要理解的話,基本很難會忘記。

 

關於上述平臺除了GitHub之外,其它都需要你自己有一個伺服器才行。

關於伺服器大家可以去阿里雲或者騰訊雲、百度雲都行。

也許有人說,我不會Linux。我對此的回答是不會可以去學。在上學時期的時候一篇文章對我印象深刻,文章這樣說,“愛看書的青年,大可以看看本分以外的書,即使和本業毫不相干的,也要泛覽。譬如學理科的,偏看看文學書,學文科的,偏看看理科書,看看別個在那裡研究的,究竟是怎麼一回事。這樣子,對於別人,別事,可以有更深的瞭解。在博的基礎上,要漸擇而入於己所愛的較專的一門或幾門。

這句話聯絡到我這位開發工程師身上,我的感觸如下:

我覺得作為一名軟體開發工程師,不僅僅侷限於軟體這一塊,同時也要關注其他行業並結交其他行業的朋友,當然了,在此過程中,還是得讀讀書。

 

再說句行內話,我覺得像做後端開發,比如Java不僅僅要把後端做通,在足以勝任後端工作的前提下(這個勝任不僅僅表示你能夠把活幹好,同時也表示著你多少知道一些框架方面的底層實現),也可以去學學像微信小程式、安卓開發之類的。

而安卓方面則也可以對學學Java相關的,比如安卓就是基於Java語言。再比如像處於中小公司的開發人員一般身兼數職,做後臺的往往也兼任前臺,前臺一般用前端框架(比如vue、angular、react或者是jQuery、BootStrap、AdminLTE、Metronic等)。不過這些框架的基礎就是網頁三劍客(HTML+CSS+JavaScript)。

經過這一圈你會發現技術本質上區別並不大。也許我工作年限不長說這句話有點狂妄了點。以我18年學Python、Node.js、Perl、PHP等來說,基本上很多都是相通的。當然了,我也不建議東打一拳西打一拳的學習方式。因為非常浪費時間,效率又低。學習最有效的方式是帶有目的性,比如我想用SpringBoot+SpringCloud/Dubbo+PostgreSQL寫一個簡單的CMS(其實傳統Servlet+JSP+JDBC就能做這些,我之所以這樣做是因為加深感性認識,這個感性認識,不僅僅包括你知道它是個什麼玩意,怎麼用它,同時也包含遇到問題如何解決的)。我覺得經過以做一個專案的方式作為學習導向比漫無目的的寫HelloWorld或者是看書效率要高很多。

 

二、為什麼要讓自己的GitHub活躍起來

關於為什麼要讓自己的GitHub活躍起來,理由如下:

(1)GitHub不僅僅是一個倉庫,也是一個開發者的歷程;

(2)一個良好的GitHub,可以為你的應聘加分或者是會有一些企業主動聯絡你;

 

針對(1),為什麼說GitHub不僅僅是一個倉庫,也是一個開發者的歷程?

有句話叫做GitHub寫滿你的故事,每位開發者都是從0到1,然後從1到無窮大。

而GitHub就可以充當見識人,每當我翻閱自己以前的GitHub,看到自己的編碼風格從雜亂無章到漸漸有序,看到自己的學習能力從依賴性或他人驅動性到獨立自主和自我驅動,看到一個一無所知的人慢慢變的知識淵博。

針對(2),為什麼一個良好的GitHub,可以為你的應聘加分或者是會有一些企業主動聯絡你?

我們經理在招聘的時候常常說的一句話之一就是請貼出你的GitHub,之所以這麼說,原因與(1)不無關係。

 

那麼如何讓自己的GitHub活躍起來呢?本人有如下幾點建議:

 

(1)可以在GitHub上利用Hexo搭建一個屬於自己的部落格,關於搭建Hexo部落格可以參考我的這篇博文:

https://www.cnblogs.com/youcong/p/9965885.html

 

(2)平時有意識的收集自己常常需要閱讀的資料,將其上傳到自己的GitHub倉庫。我會自己認為比較重要並時常需要閱讀的資料上傳到我的GitHub倉庫,地址為:

https://github.com/developers-youcong/Personal-Learning-Library

 

 

(3)開發過程中常常用的指令碼或者是腳手架也可以放到自己的GitHub上,這樣一來省的自己在寫,雖然說可以記錄成一個文件,但是本人覺得還是放在GitHub上好一些。另外關於腳手架,比如像SSM框架+SpringBoot+SpringCloud這種的,雖然有些IDE可以一下子生成,但是個人覺得一下子生成的並不一定適用於你的,比如像SSSM框架+Shiro+Solr+MySQL+Metronic+常用的資料表,完全就可以作為一個腳手架,因為不少企業都在用它,每次搭建框架環境時,只需git clone下來即可,基本上就可以用了。就像下面我記錄的讀書筆記那樣,要最大程度上覆用第一次從0到1的結果,而不是從頭再來。說實話這一點我在這家公司做的不是特別好,雖然說開發前端,基本上就是看到一些好的網站就將其扒下來為我所用,但是覺得效率還是不高。

 

(4)記錄自己的讀書筆記,譬如像教材類的書一定要記錄詳細筆記,比如《Java資料結構與演算法》之類的(關於這本書可以去我的GitHub找到),在GitHub上一般都是使用Markdown來寫,我個人初次寫的時候很不習慣Markdown,後來寫久了發現,覺得愛上Markdown。再譬如像一些非教材類的可以記錄一下自己的心得和體會,又或者裡面某些觀點給你的啟發。

 

(5)工作一年以上的朋友基本上工作上都能搞定了,在此過程中為了提升自己,比如你想要系統學習SpringCloud,你可以參考官網,並在GitHub上新增對應的倉庫,在此基礎上系統學習。比如像這位朋友那樣,如圖所示:

 

 

 

該SpringCloud教程地址為:

https://gitee.com/ylimhhmily/SpringCloudTutorial

 

這裡我想強調一點的是不一定將人家的copy下來,畢竟SpringCloud版本不斷迭代中,你可以選擇適合當下的穩定版本進行學習不一定非要標新立異追求最新版本的,然後放到自己的GitHub上,例子跑起來是必要的,同時也要記錄一下筆記,比如你一開始你不熟悉它肯定會遇到一些錯誤,這些錯誤的原因是什麼,你是如何解決它的,這些都可以記錄在對應的README.md檔案裡面。這種學習方式其實就相當於實踐+理論。記得一位前輩說過一句話,理論不懂就去實踐,實踐遇到問題就去看理論。

 

(6)自己發起一個開源專案,比如你覺得CSDN或者部落格園在某些方面做的不夠好,你可以寫一個比它們更好的。我就覺得目前部落格有一種非常不好的就是不能同步,比如我在CSDN上釋出可以直接同步到我的部落格園上或是思否、簡書上。當然了,他們這麼做的原因應該也是處於防止大量重複文章佔用搜尋資源吧。關於這個我覺得百度應該像Google學習,之所以很多開發人員用Google最大的原因就是因為通常搜尋關鍵字,排名靠前的都是一些優質資源,反觀百度,商業化太嚴重了。另外補充到自己發起一個開源專案,這個開源專案可以是從0到1,也可以不從0到1,比如可以學習Hutool的思想,Hutool這個開源專案實際是一個Java常用工具包集合,開發常用的都能在裡面找到。我們可以參考它,自己也可以發起一個類似的專案,因為Hutool雖然廣而齊全,但是並不能涵蓋方方面面,比如在我現在這家公司比較適應,但是在我一些朋友的公司並不適應。所以在此我想說的是,每待一家公司不僅僅要將對應的業務吃的透一些,同時也要有意識的將一些常用的工具類收集起來。這也是將來跳槽面試的一個亮點之一。這個庫一開始你可以私有化,當相對成熟些你可以將其公開分享給廣大的開發者們。

 

(7)記錄自己讀原始碼的過程。我嘗試過讀Spring原始碼,按著Ctrl鍵,滑鼠點進去再點進去發現這樣讀下去沒有盡頭啊。說帶有某個目的去讀,效果雖然會好些,但是我覺得有種方式會更好,那就是比如像我們Java開發的,平常寫程式碼的時候也要有意識的翻翻原始碼,特別是遇到問題的時候並將問題解決的時候,通過檢視原始碼看到裡面的實現,這樣下來,每天看一點點,積累一年或者半年,再或者三到四個月你會發現不少庫的原始碼你都能看的懂了,很多實現機制你會發現都有很多相通點。關於這一點我並沒有實踐過三到四個月,目前我僅僅只是開始,但是我的一個導師實踐過。

 

三、每天給自己一點學習的時間

現在很多人都很焦慮,因此知識付費很火。前面我說過知識付費不乏有好的。但是大多並沒有那麼好,主要抓住的是人焦慮的心理。

為什麼焦慮呢?

主要是壓力大(這個壓力主要的來源於生活與工作)其實說真的,我也很焦慮,一是我給自己定了很多目標我想迫切地讓其實現,二是我沒有安全感,我總想讓自己變的更加強大。

 

但是隨著而來,焦慮也逐漸加重,漸漸地導致我失眠。後來我找到了一種比較好的方法,那就是每天給自己一點學習的時間。

這個學習的時間可以是寫程式碼,也可以是看書,也可以是品味一段輕音樂讀上一首優美的詩歌感受詩歌的情形。

 

每天給自己一點學習的時間,這個學習的時間並不等於就是每次下班回到家中看書或者是寫程式碼之類的,而是每天讓自己有一點收穫。

 

焦慮的根本原因在於自己停滯不前擔心後面的人超過自己或者是前面的人本來與自己的距離是望其項背,最後變成了望塵莫及。

 

針對此,最好的策略就是每天讓自己進步一點點有所收穫。比如最近我VsCode外掛某段程式碼不嚴謹,一位同事指出了我的這個錯誤,所以我決定下次不再出現這種錯誤。再比如最早我的程式碼註釋寫的很隨意,也是我的那個同事指出的,因此到現在為止我不管怎麼樣,都要讓自己程式碼嚴謹起來。也許是因為之前養成了一個不好的習慣,有的時候嚴謹點,有的時候不那麼嚴謹。從換位思考的角度看,嚴謹的程式碼,簡單扼要的註釋,不僅僅對自己有幫助,同時也對同事閱讀也是一種賞心悅目。

 

另外分享一下最近閱讀吳軍先生《見識》的閱讀筆記。

 

1.不做偽工作者

(1)那些既不能給公司帶來較大收益,又不能給使用者帶來價值改進和“升級”,很多都是偽工作。

(2)有的人明明能夠通過學習一種新技能更有效地工作,卻偏偏要守著過去的舊工具工作,甚至手工操作,這種人就是典型的偽工作者。

(3)在做事情前不認真思考,做事時通過簡單的試錯方法盲目尋找答案。

(4)做產品不講究質量、不認真測試,上線後不停地修補,總是在花費很多時間和精力找漏洞和打補丁。

(5)不注重用有限的資源解決95%的問題,而是把大部分時間和精力用於糾結不重要的5%問題。

(6)每次開會找來大量不必要的人員旁聽,或者總去參加那些不必要的會議。

 

2.努力一萬小時真能幫你成功嗎?

存在如下誤區:

(1)簡單重複。

(2)習慣性失敗(迷信失敗是成功之母,簡單地重複失敗是永遠走不出失敗的怪圈)。

(3)林黛玉式困境(活在自己的世界裡,排斥外界)。

(4)狗熊扳棒子(10000小時的努力需要一個積累的效應,第二次的努力要最大限度地複用第一次努力的結果,而不是每次都從頭開始)。

 

3.三板斧破四困境

(1)第一板斧:確立“願景-目標-道路”。

(2)第二板斧:即使聽到不中聽的話,也要試著找出其中的合理之處。

(3)第三板斧:凡是做記錄,這樣可以避免狗熊扳棒子(從中正好體現寫部落格的好處之一)。

 

4.做好最後的1%

這裡主要啟發的就是做事不能做一半。比如開發者們不要偷懶,該寫單測還是要寫的。

相關文章