這次我決定不耍流氓的寫一篇雞湯,這篇是以過程到結(jié)果的文章——以前老是寫結(jié)果,總感覺不好~~。
Blabla,群聊的時(shí)候,看到一個(gè)網(wǎng)站有一個(gè)Most active GitHub users的排名,發(fā)現(xiàn)我在里面的位置是20——在我前面還有一個(gè)臺(tái)灣的同學(xué)。雖然我現(xiàn)在已經(jīng)超過他了,但是這個(gè)榜單沒有更新。??????

而實(shí)際上成為最活躍的中國大陸用戶,只是有意圖的練習(xí)的結(jié)果。。。
在我找到大四找到工作后,默默制作了一個(gè)計(jì)劃。這個(gè)計(jì)劃大概分為三步,而每一步大概會(huì)花一年時(shí)間去實(shí)踐:
- 用更好的方法來實(shí)現(xiàn)功能
- Better Code & Architecture
- 運(yùn)營(Growth Hacker)
所以,其實(shí)這也算這篇文章的三個(gè)小節(jié)。在你跟著這篇文章走之前,你需要具備一個(gè)根本的能力:能做到你想做的。
能做到你想做的: Tasking與學(xué)習(xí)能力
雖然這看上去是一件很難的事,但是也不是一件很難的事。這也不依賴于你是否對(duì)某一個(gè)技術(shù)棧的理解,這只實(shí)際上只是學(xué)習(xí)能力的一種體現(xiàn)。

在扯這些廢話之前,先讓我們來看看我們是如何實(shí)現(xiàn)一個(gè)功能、應(yīng)用的。這也是在Growth里提到的Tasking:
- 有一個(gè)明確的實(shí)現(xiàn)目標(biāo)。
- 評(píng)估目標(biāo)并將其拆解成任務(wù)(TODO)。
- 規(guī)劃任務(wù)的步驟(TODO)
- 學(xué)習(xí)相關(guān)技能
- 執(zhí)行Task,遇到難題就跳到第二步。
以本文的寫作為例,細(xì)分上面的過程就是:
- 我有了一個(gè)中心思想——在某種意義上來說就是標(biāo)題。
- 依據(jù)中心思考我將這篇文章分成了四小節(jié)。
- 然后我開始寫四小節(jié)的內(nèi)容。
- 直到完成。
而如果將其劃分到一個(gè)編程任務(wù),那么也是一樣的:
- 我們想到做一個(gè)xxx的idea。
- 為了這個(gè)idea我們需要分成幾步,或者幾層設(shè)計(jì)。
- 對(duì)于每一步,我們應(yīng)該做點(diǎn)什么
- 我們需要學(xué)習(xí)怎樣的技能
- 集成每一步的代碼,就有了我們的系統(tǒng)。
所以,實(shí)際上這并不是考驗(yàn)?zāi)慵夹g(shù)能力的點(diǎn),而是考驗(yàn)?zāi)闳绾蝿澐秩蝿?wù)和學(xué)習(xí)能力的點(diǎn)。在我不斷地實(shí)現(xiàn)一個(gè)個(gè)系統(tǒng)的時(shí)候,最后我才意識(shí)到了這一點(diǎn)——學(xué)習(xí)能力和Tasking才是最重要的。換句話說,你現(xiàn)在學(xué)會(huì)什么并不重要,重要的是你以后有沒有學(xué)習(xí)的能力。
有了一直想著過安逸的生活,所以就會(huì)安樂的死去。不過反正人生在世,自己開心就行,不要管別人怎么說。隨后,我發(fā)現(xiàn)大部分我想到的都可以實(shí)現(xiàn)。
那么問題來了:
- 用鉛筆寫字也是寫,用鋼筆寫字也是寫,用電腦打字也是寫——到底要用哪個(gè)工具來寫。
- 用楷體來顯示也是顯示,用宋體顯示也是顯示——到底要怎樣的實(shí)現(xiàn)。
這實(shí)際上就是:用更好的方法來實(shí)現(xiàn)功能。
用更好的方法來實(shí)現(xiàn)功能
對(duì)于這一步來說,有太多的東西值得去探索:
- 更好的架構(gòu)
- 更好的工具
- 更好的語言
- 。。。
對(duì)于語言這一點(diǎn)上來說,Python和Ruby是兩個(gè)不同的極端,不過看上Ruby是繼承Perl的思想的基礎(chǔ)上,就不多說了。Python,一個(gè)問題只有一個(gè)方法;Ruby,一個(gè)問題有幾個(gè)方法。因而在這兩個(gè)語言來,想要快感就用Ruby,還有近年來流行的Scala。想要便捷就是Python,不容易出現(xiàn)別的問題。
而這些只是我得到的結(jié)論,每個(gè)人都會(huì)得到不同聽結(jié)論的。因而,探索是一件很有意思的事~~,如圖:

所以實(shí)際上,這一步是去探索一個(gè)更廣闊的天空。我們需要知道不同的語言和技術(shù)棧的一些優(yōu)勢(shì),了解并知道如何去應(yīng)用即可。
如,以前我用的是Django的RESTful方案Tastypie管理來解決問題。后來,又發(fā)現(xiàn)了Django REST Framework,又用它實(shí)現(xiàn)了原來的邏輯。大四時(shí),我發(fā)現(xiàn)PHP語言中的Laravel在RESTful這件事情上,似乎很有表現(xiàn)力,并且更容易“部署”——LNMP。接著實(shí)習(xí)時(shí),發(fā)現(xiàn)Java在部署上更不錯(cuò),它只需要一個(gè)Java包。而這個(gè)過程,只是出自于部署方面來考慮問題的。
即使現(xiàn)在我是一個(gè)使用Node.js的人,我還是覺得Java的打包就是優(yōu)勢(shì)。
在探索的過程中,我們就知道挖掘技術(shù)哪家強(qiáng)?
Better Code & Architecture
在實(shí)際編程的過程中,我們就會(huì)遇到很多代碼問題。在這時(shí),我們盡管有好的架構(gòu),然而并不能從根本上解決問題。只能保證從藍(lán)圖上看是對(duì)的,而不能導(dǎo)致質(zhì)量問題。

代碼的腐爛都是源自于平時(shí)的工作習(xí)慣問題,而在很多時(shí)候是需求導(dǎo)致的。這些看上去就是噩夢(mèng)——加班,沒有時(shí)間學(xué)習(xí),效率低。沒有時(shí)間學(xué)習(xí),效率低,加班。

而對(duì)于代碼質(zhì)量來說,也是如此的一種循環(huán):

而在這時(shí)可以學(xué)的東西可多了,如Bad Smell,重構(gòu),設(shè)計(jì)模式,編寫測(cè)試等等。
最后,我只得到了一個(gè)短句:
重構(gòu)到設(shè)計(jì)模式
好的代碼是重構(gòu)出來的。
再往深層次之上就是架構(gòu),而架構(gòu)往往是一種不容易得到的。盡管我看了一系列的書:
- 《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》
- 《企業(yè)應(yīng)用架構(gòu)模式》
- 《領(lǐng)域特定語言》
- 《恰如其份的軟件架構(gòu)》
- 《面向模式的軟件架構(gòu)》
- 。。。
最后,我還是依據(jù)一本書的書名,才領(lǐng)悟了一本書的書名《浮現(xiàn)式設(shè)計(jì)》。也是同樣的話:
好的架構(gòu)是演進(jìn)出來的。
而這些都依賴于我們的實(shí)踐,聽信別人說的話,并不能讓我們學(xué)會(huì)什么。只有自己做了,才知道什么是好,什么是不好。
Growth Hacking
當(dāng)我們有了一個(gè)好的Idea,一個(gè)好的架構(gòu)以及一份良好的代碼,并且我們還能將其執(zhí)行下去。那么,我們還需要什么?

這也是我現(xiàn)在正在嘗試的領(lǐng)域,也是過去我想做的,但是卻找不到一個(gè)好的方向。后來,想了想就有了Growth這個(gè)APP。畢竟從一個(gè)領(lǐng)域到一個(gè)新的領(lǐng)域,最好是通過現(xiàn)有的領(lǐng)域作為過渡。
自媒體正在最近幾年內(nèi)崛起,同時(shí)由于聚合網(wǎng)站的存在,信息在不斷地爆炸。一個(gè)好的作品、文章要傳播起來已經(jīng)越來越越難了。
在現(xiàn)有的領(lǐng)域里,知乎、微博、公眾號(hào)已經(jīng)開始在壟斷人們的碎片時(shí)間。一個(gè)東西可能在火了幾天之后,你就很難得到他的信息了。
所以在適當(dāng)?shù)臅r(shí)候去推銷,在適當(dāng)?shù)臅r(shí)候持續(xù)下去。
小結(jié)
在那之前你需要明白的一點(diǎn)是,你要成為一個(gè)怎樣的人?是行業(yè)的專家?還是領(lǐng)域的專家?等等!

我想的是一直可以做一些有趣的事,單純深入一個(gè)垂直領(lǐng)域?qū)ξ襾碚f太枯燥了。對(duì)于我來說,我只會(huì)在造輪子的時(shí)候去研究一個(gè)輪子。而不是深入研究某個(gè)輪子,我會(huì)得到造某種輪子的方法。我只會(huì)在創(chuàng)造一些有意思的東西的時(shí)候,才會(huì)深入某個(gè)領(lǐng)域去學(xué)習(xí)。而不是為了深入某個(gè)領(lǐng)域,再去學(xué)習(xí)這個(gè)領(lǐng)域的知識(shí) 。。
每個(gè)人都可以用不同的方式成長,知道自己的喜歡的然后去計(jì)劃。