個人編程成長四步曲

此次我決定不耍流氓的寫一篇雞湯,這篇是以過程到結果的文章——之前總是寫結果,總感受很差~~。git

Blabla,羣聊的時候,看到一個網站有一個Most active GitHub users的排名,發現我在裏面的位置是20——在我前面還有一個臺灣的同窗。雖然我如今已經超過他了,可是這個榜單沒有更新。???github

Most active GitHub users

而實際上成爲最活躍的中國大陸用戶,只是有意圖的練習的結果。。。編程

在我找到大四找到工做後,默默製做了一個計劃。這個計劃大概分爲三步,而每一步大概會花一年時間去實踐:設計模式

  1. 用更好的方法來實現功能微信

  2. Better Code & Architecture架構

  3. 運營(Growth Hacker)ide

因此,其實這也算這篇文章的三個小節。在你跟着這篇文章走以前,你須要具有一個根本的能力:能作到你想作的工具

能作到你想作的: Tasking與學習能力

雖然這看上去是一件很難的事,可是也不是一件很難的事。這也不依賴於你是否對某一個技術棧的理解,這隻實際上只是學習能力的一種體現。學習

todo-example.png

在扯這些廢話以前,先讓咱們來看看咱們是如何實現一個功能、應用的。這也是在Growth裏提到的Tasking:測試

  1. 有一個明確的實現目標。

  2. 評估目標並將其拆解成任務(TODO)。

  3. 規劃任務的步驟(TODO)

  4. 學習相關技能

  5. 執行Task,遇到難題就跳到第二步。

以本文的寫做爲例,細分上面的過程就是:

  1. 我有了一箇中心思想——在某種意義上來講就是標題。

  2. 依據中心思考我將這篇文章分紅了四小節。

  3. 而後我開始寫四小節的內容。

  4. 直到完成。

而若是將其劃分到一個編程任務,那麼也是同樣的:

  1. 咱們想到作一個xxx的idea。

  2. 爲了這個idea咱們須要分紅幾步,或者幾層設計。

  3. 對於每一步,咱們應該作點什麼

  4. 咱們須要學習怎樣的技能

  5. 集成每一步的代碼,就有了咱們的系統。

因此,實際上這並非考驗你技術能力的點,而是考驗你如何劃分任務和學習能力的點。在我不斷地實現一個個系統的時候,最後我才意識到了這一點——學習能力和Tasking纔是最重要的。換句話說,你如今學會什麼並不重要,重要的是你之後有沒有學習的能力。

有了一直想着過安逸的生活,因此就會安樂的死去。不過反正人生在世,本身開心就行,不要管別人怎麼說。隨後,我發現大部分我想到的均可以實現。

那麼問題來了:

  1. 用鉛筆寫字也是寫,用鋼筆寫字也是寫,用電腦打字也是寫——到底要用哪一個工具來寫。

  2. 用楷體來顯示也是顯示,用宋體顯示也是顯示——到底要怎樣的實現。

這實際上就是:用更好的方法來實現功能。

用更好的方法來實現功能

對於這一步來講,有太多的東西值得去探索:

  1. 更好的架構

  2. 更好的工具

  3. 更好的語言

  4. 。。。

對於語言這一點上來講,Python和Ruby是兩個不一樣的極端,不過看上Ruby是繼承Perl的思想的基礎上,就很少說了。Python,一個問題只有一個方法;Ruby,一個問題有幾個方法。於是在這兩個語言來,想要快感就用Ruby,還有近年來流行的Scala。想要便捷就是Python,不容易出現別的問題。

而這些只是我獲得的結論,每一個人都會獲得不一樣聽結論的。於是,探索是一件頗有意思的事~~,如圖:

civ5-worst.jpg

因此實際上,這一步是去探索一個更廣闊的天空。咱們須要知道不一樣的語言和技術棧的一些優點,瞭解並知道如何去應用便可。

如,之前我用的是Django的RESTful方案Tastypie管理來解決問題。後來,又發現了Django REST Framework,又用它實現了原來的邏輯。大四時,我發現PHP語言中的Laravel在RESTful這件事情上,彷佛頗有表現力,而且更容易「部署」——LNMP。接着實習時,發現Java在部署上更不錯,它只須要一個Java包。而這個過程,只是出自於部署方面來考慮問題的。

即便如今我是一個使用Node.js的人,我仍是以爲Java的打包就是優點。

在探索的過程當中,咱們就知道挖掘技術哪家強

Better Code & Architecture

在實際編程的過程當中,咱們就會遇到不少代碼問題。在這時,咱們儘管有好的架構,然而並不能從根本上解決問題。只能保證從藍圖上看是對的,而不能致使質量問題。

better-architecture.jpg

代碼的腐爛都是源自於平時的工做習慣問題,而在不少時候是需求致使的。這些看上去就是噩夢——加班,沒有時間學習,效率低。沒有時間學習,效率低,加班。

eff-worknight.png

而對於代碼質量來講,也是如此的一種循環:

code-time.png

而在這時能夠學的東西可多了,如Bad Smell,重構,設計模式,編寫測試等等。

最後,我只獲得了一個短句:

重構到設計模式

好的代碼是重構出來的。

再往深層次之上就是架構,而架構每每是一種不容易獲得的。儘管我看了一系列的書:

  • 《領域驅動設計》

  • 《企業應用架構模式》

  • 《領域特定語言》

  • 《恰如其份的軟件架構》

  • 《面向模式的軟件架構》

  • 。。。

最後,我仍是依據一本書的書名,才領悟了一本書的書名《浮現式設計》。也是一樣的話:

好的架構是演進出來的。

而這些都依賴於咱們的實踐,聽信別人說的話,並不能讓咱們學會什麼。只有本身作了,才知道什麼是好,什麼是很差。

Growth Hacking

當咱們有了一個好的Idea,一個好的架構以及一份良好的代碼,而且咱們還能將其執行下去。那麼,咱們還須要什麼?

what-is-growth-hacking.jpg

這也是我如今正在嘗試的領域,也是過去我想作的,可是卻找不到一個好的方向。後來,想了想就有了Growth這個APP。畢竟從一個領域到一個新的領域,最好是經過現有的領域做爲過渡。

自媒體正在最近幾年內崛起,同時因爲聚合網站的存在,信息在不斷地爆炸。一個好的做品、文章要傳播起來已經愈來愈越難了。

在現有的領域裏,知乎、微博、公衆號已經開始在壟斷人們的碎片時間。一個東西可能在火了幾天以後,你就很可貴到他的信息了。

因此在適當的時候去推銷,在適當的時候持續下去。

小結

在那以前你須要明白的一點是,你要成爲一個怎樣的人?是行業的專家?仍是領域的專家?等等!

cat-interest.jpg

我想的是一直能夠作一些有趣的事,單純深刻一個垂直領域對我來講太枯燥了。對於我來講,我只會在造輪子的時候去研究一個輪子。而不是深刻研究某個輪子,我會獲得造某種輪子的方法。我只會在創造一些有意思的東西的時候,纔會深刻某個領域去學習。而不是爲了深刻某個領域,再去學習這個領域的知識 。。

每一個人均可以用不一樣的方式成長,知道本身的喜歡的而後去計劃。

(PS: 歡迎關注個人微信公衆號(搜索:Phodal))

enter image description here

相關文章
相關標籤/搜索