「代碼家」的學(xué)習(xí)過程和學(xué)習(xí)經(jīng)驗(yàn)分享
每天,都會(huì)有人在微博上私信我,問我關(guān)于學(xué)習(xí)和成長(zhǎng)的問題。這種問題我一般都不會(huì)回復(fù)某個(gè)j,畢竟每個(gè)人的情況不一樣,每個(gè)人對(duì)待事物的性格也不一樣,我不能夸下??诘恼f,你看某本書幾個(gè)月就能如何如何,我能做的多數(shù)時(shí)候只是鼓勵(lì)鼓勵(lì),其次我也從不認(rèn)為我已經(jīng)成長(zhǎng)到一個(gè)多高的境界上,讓我去給別人做指導(dǎo),我還是當(dāng)之有愧的。
本文引用地址:http://cafeforensic.com/article/201703/345136.htm但是,有時(shí)候看到大家私信我的時(shí)候,確實(shí)是處于一種很痛苦或是需要幫助的狀態(tài)上。
最近晚上有空,就想寫寫自己從第一次接觸程序,到一路顛簸學(xué)到今天的一些故事和經(jīng)驗(yàn),希望對(duì)大家有所幫助。
學(xué)習(xí)的三個(gè)階段
第一階段:消費(fèi)者階段
我在快上高中的時(shí)候,開始接觸的程序。那會(huì)兒家里有一本 Visual Basic 的書,30 多頁左右,也是家里唯一一本計(jì)算機(jī)類書籍,是我哥學(xué)校發(fā)的一本課外書,他對(duì)計(jì)算機(jī)貌似沒有什么興趣,就一直堆在家里,直到無意中被我翻到。
書里的程序格外的簡(jiǎn)單,幾行簡(jiǎn)單的英語代碼,就能讓計(jì)算機(jī)彈出一個(gè)對(duì)話框,當(dāng)時(shí)看到簡(jiǎn)直神奇極了!躍躍欲試的在老媽店里的電腦上一步一步的敲下代碼,彈出一個(gè)簡(jiǎn)單的對(duì)話框,那一瞬間,感覺像是推開了新世界的大門,從此一發(fā)不可收拾。
實(shí)踐完 VB 后,又在小書攤,看到了一本 《黑客 X 檔案》,看著各路高深的入侵,木馬,盜號(hào),試圖努力學(xué)會(huì)這些技能,然后去跟朋友們炫耀,但一直都無法入門。因?yàn)樾枰嘤?jì)算機(jī)的基礎(chǔ)知識(shí)了,不是寫個(gè)彈框,或者計(jì)算器水平的人能搞定的。
那會(huì)兒家里也沒有懂電腦的,也沒有人可以問,又處在小城市,連個(gè)培訓(xùn)班都沒有。
隨即,開始漫漫買書求學(xué)路。
一旦開始買書,就進(jìn)入了學(xué)習(xí)的第一個(gè)階段:消費(fèi)者階段。當(dāng)個(gè)消費(fèi)者其實(shí)是個(gè)挺輕松的事情,對(duì)著書本照貓畫虎,一會(huì)兒就能跑起來一個(gè)看著很有趣的程序。
那會(huì)兒,瘋狂的買各種書,但是由于周圍沒有人指導(dǎo),買了很多類似 21 天 xxx 系列的書,那會(huì)兒真的有這種書,我還抱有幻想??覺得 21 天后我就??
現(xiàn)在想想國(guó)內(nèi)的圖書市場(chǎng)簡(jiǎn)直惡劣到一定程度。很多高校,教師升職評(píng)比需要考察發(fā)表書籍情況,導(dǎo)致國(guó)內(nèi)一大批爛書其實(shí)都是高校老師發(fā)出來的。我現(xiàn)在依然認(rèn)為國(guó)內(nèi) 95% 的技術(shù)類書籍是不值得買的,除了像侯杰老師這種文筆很好的技術(shù)人以外。
很多作者總是做不到『以讀者能理解的順序,而非自己認(rèn)為的順序』寫文章,坑害了不少對(duì)計(jì)算機(jī)有興趣的同學(xué)。我一直很崇拜侯杰老師的另一個(gè)原因是侯杰老師的書,總是能把你最想問的,如同庖丁解牛,深入淺出的解答出來。就如同 MFC 框架(很早前的一個(gè) Windows SDK 框架,現(xiàn)在已經(jīng)用的很少了),MFC 是很復(fù)雜的一個(gè)框架,所有初學(xué)的人,都會(huì)問一樣的問題:"這玩意兒是怎么工作起來的?!",但所有國(guó)產(chǎn)的 Visual C++ 的書,都避而不答,讓你照貓畫虎的做,就能彈出一個(gè)窗體。當(dāng)初國(guó)內(nèi)只有 《深入淺出 MFC》一書,講明白了背后的一切。
學(xué)完一些基礎(chǔ)知識(shí)后,就進(jìn)入了學(xué)習(xí)的第二個(gè)階段 實(shí)踐者階段 階段。所謂實(shí)踐者,就是開始用自己所學(xué),去開發(fā)程序,成為一名專業(yè)或非專業(yè)的碼農(nóng),很多人的職業(yè)生涯,也就停留在了這個(gè)階段,過上了小富即安的程序員的日子。
我從消費(fèi)者階段過度到實(shí)踐者階段大概用了三四年的時(shí)間,其實(shí)已經(jīng)挺長(zhǎng)的了。我一直都認(rèn)為我是一只笨鳥,無意中起飛,卻飛了很久的那種。
第二階段:實(shí)踐者階段
我真正開始實(shí)踐的,是在本科學(xué)校做的幾個(gè)網(wǎng)站。
第一個(gè)是個(gè)學(xué)校的匿名聊天系統(tǒng),就是所有人都可以登錄學(xué)校的站點(diǎn),然后會(huì)匿名匹配到一個(gè)異性,開始聊天,當(dāng)時(shí)用的 ASP.NET 做的開發(fā),配合 ajax + jquery,但由于當(dāng)時(shí)技術(shù)太差,導(dǎo)致很多人聊著聊著就斷線了,導(dǎo)致小產(chǎn)品不告而終。
第二個(gè)是給我們信息學(xué)院開發(fā)的一個(gè)官網(wǎng),用的 PHP。在做這個(gè)網(wǎng)站的同時(shí),我選修了一門叫《網(wǎng)絡(luò)安全》的課程,這門課的老師叫陳路,我曾當(dāng)著老師的面兒,夸下???,我開發(fā)的官網(wǎng),堅(jiān)不可摧...(大概這個(gè)意思)陳老師知道了我做的網(wǎng)站,隨即下達(dá)一個(gè)作業(yè):“誰能攻陷我們的官網(wǎng),一個(gè)漏洞加五分...”,后來,咳咳?網(wǎng)站數(shù)據(jù)沒有了??有個(gè)同學(xué)用一個(gè)很通用的掃描工具,在他也不知道發(fā)生了什么的情況下,工具把網(wǎng)站內(nèi)容都刪除了??恩,我犯了個(gè)超低級(jí)的錯(cuò)誤??GET 請(qǐng)求可以刪除數(shù)據(jù),外加身份認(rèn)證代碼有誤??
幸好,查看 Apache 日志的時(shí)候,發(fā)現(xiàn)刪除請(qǐng)求到來的前幾分鐘,Google 爬蟲來過(那會(huì)兒 Google 還能用),隨即馬上去 Google 的緩存里找回了所有的數(shù)據(jù)。
后來陳路老師被學(xué)校批斗了一頓,批斗的罪名是『鼓勵(lì)學(xué)生攻擊校園網(wǎng)絡(luò)』,我其實(shí)是極力跟學(xué)校執(zhí)事說明這個(gè)錯(cuò)誤是我犯的,陳老師做的并沒有錯(cuò),而且我到現(xiàn)在還是很喜歡陳老師這種教學(xué)方法,畢竟實(shí)踐出真知。
可能現(xiàn)在陳老師在教《網(wǎng)絡(luò)安全》課程的時(shí)候,會(huì)以“當(dāng)年有個(gè)學(xué)生....”作為開頭,有時(shí)候想想也挺有意思的。
再后來我花了很多實(shí)踐學(xué)習(xí) Web 安全相關(guān)的知識(shí)。寫各種 Web 程序時(shí),都會(huì)最大程度的考慮安全問題。
網(wǎng)站攻陷后沒多久,Android 出來了,我買了第一部 Android 手機(jī),然后自己照著官方文檔開始學(xué) Android,動(dòng)力的源頭,是我聽說寫 App 能賺錢。賺錢真是學(xué)技術(shù)的很強(qiáng)的動(dòng)力,之前寫網(wǎng)站零零星星的賺了六七千塊錢,作為同學(xué)里的小土豪,我又把目光轉(zhuǎn)到了剛出來沒多久的 Android 上。
當(dāng)時(shí)先定了一個(gè)目標(biāo),寫一個(gè)圖片類 App,打算叫『無盡畫廊』。因?yàn)楹芟矚g WeHeartIt(http://weheartit.com/) 這個(gè)小眾文藝圖片網(wǎng)站。隨即計(jì)劃利用正則解析圖片地址,然后再把圖片呈現(xiàn)在 App 上。那會(huì)兒 Java 和 Android 完全零基礎(chǔ)。
自己在入門 Android 的時(shí)候真的超級(jí)拼。早上 6 點(diǎn)起床,然后開始悄悄下床(不能吵著舍友),打開電腦開始研究加開發(fā)。折騰到早上 7點(diǎn)半左右就和舍友一起去吃早飯,然后上課。中午回來也不午休,開發(fā)到快上課,晚上基本都會(huì)熬到 12 點(diǎn)左右。持續(xù)了 1 個(gè)月左右,終于從零基礎(chǔ)到開發(fā)出一個(gè)粗糙的 1.0 版本,發(fā)到了國(guó)內(nèi)的幾個(gè) App 市場(chǎng)。反饋不是很多,但是都挺積極,隨即決定開發(fā) 2.0 版本,還加入了廣告積分墻。就這樣超拼的持續(xù)了 3 個(gè)月左右。現(xiàn)在網(wǎng)上能看到的基本都是 2.0 版本。我從這個(gè) App 里,也賺到了一些廣告費(fèi),大概幾百塊。但是因?yàn)閺V告服務(wù)商倒閉了??錢到現(xiàn)在還沒取出來??心痛??持續(xù)更新那個(gè) App 到快畢業(yè)的時(shí)候,選擇了保送到北師大。
暑假的時(shí)候去上海一家小公司去實(shí)習(xí)了,在實(shí)習(xí)的這家小公司,我做了一個(gè)到現(xiàn)在來看依然很屌的功能?,F(xiàn)在來看是一個(gè)相當(dāng)不錯(cuò)的 Growth Hacker 的一個(gè)案例(那會(huì)兒可沒有增長(zhǎng)黑客這個(gè)概念)。
實(shí)習(xí)所在的公司,是做類似小米盒子的東西。當(dāng)時(shí)的盒子,最重要的當(dāng)屬內(nèi)容,版權(quán)還處于蠻荒時(shí)代的時(shí)候,大家紛紛解析優(yōu)酷、土豆這類的網(wǎng)站,以最少的成本,盜用優(yōu)酷的帶寬。簡(jiǎn)單點(diǎn)而來說,就是做視頻聚合。視頻聚合最麻煩的就是提取視頻的真實(shí)文件地址,這樣能為所有的創(chuàng)業(yè)公司免去版權(quán)糾紛,同時(shí)解決帶寬費(fèi)用問題。
我去那家公司實(shí)習(xí)的主要內(nèi)容,就是用 Node 語言做視頻地址解析,費(fèi)勁功夫搞定了幾乎所有的視頻網(wǎng)站,各種黑科技都用上了,抓包,逆向,Headless Browser 等等。搞定所有網(wǎng)站后,也算勉強(qiáng)跟競(jìng)爭(zhēng)對(duì)手站在同一起跑線。實(shí)習(xí)第二周的時(shí)候,已經(jīng)有些沒事兒干了,就在這會(huì)兒瘋狂的想法出現(xiàn)了!
可能很多人還記得當(dāng)年偉大的迅雷云播,解救了不知道多少個(gè)少男寂寞的夜。我們瘋狂的想法就是要讓我們的小盒子,能夠流暢的播放用戶從電腦上推送的任意種子文件,無需等待。在那會(huì)兒 TV 上,這種功能簡(jiǎn)直就是創(chuàng)舉!
想法出來后,我抗下大旗,開始用代碼模擬迅雷云播的全套流程。開發(fā)的過程十分艱難,得從不同平臺(tái)的迅雷上抓包,尋找蛛絲馬跡。優(yōu)先從 Web 端模擬登陸和提交種子文件,這些都相對(duì)容易一些,最難的是如何提取到視頻的真實(shí)地址?;舜蟾乓恢軙r(shí)間攻陷了所有的流程,然后公司買了 10 幾個(gè)迅雷會(huì)員,又和各路 BT 網(wǎng)站開始合作,開啟了浩浩蕩蕩的用戶增長(zhǎng)之旅。具體增長(zhǎng)了多少新用戶,其實(shí)我心里沒有數(shù),但是看見旁邊的小朋友,每天都在加服務(wù)器,優(yōu)化 Socket 連接數(shù),我猜那一周得新增了5-10萬用戶,更為壯觀的是每到夜里,所有的迅雷賬號(hào)里就瞬間塞滿各種不可描述的日本電影,全部清空后,又被瞬間塞滿。以至于后來,實(shí)習(xí)到第十七八天的時(shí)候,我的老板和 CTO 喊我過去,直接送了我 20 萬期權(quán),那感覺也是蠻爽的。后來微博上,這個(gè)功能也是火了一陣子,不過很快就掛了,起因是有用戶在微博上 at 了小米電視和迅雷,讓他們跟我們學(xué)著點(diǎn)兒??然后,不超過半小時(shí)??服務(wù)就掛掉了??不過掛掉沒幾天我就去帝都準(zhǔn)備研究生報(bào)名了。
還有一件很爽的事,就是我上了研究生后的半年里,那家公司一直給我支付著工資??每個(gè)月輕輕松松就有幾千塊錢零花錢??再后來的后來,那家公司倒閉了??
快從上海實(shí)習(xí)結(jié)束的時(shí)候(實(shí)習(xí)一個(gè)月),我又認(rèn)識(shí)了少楠,加入了 AT!組織。AT! 組織是一個(gè)分享優(yōu)質(zhì)原創(chuàng)動(dòng)畫的小團(tuán)隊(duì),從此我從一枚野生開發(fā)正式晉升為一枚正規(guī)軍。少楠是一枚非常優(yōu)秀的產(chǎn)品經(jīng)理兼設(shè)計(jì)師,跟著他學(xué)到了很多產(chǎn)品的知識(shí)和團(tuán)隊(duì)協(xié)作的技巧,也讓我最后真的開發(fā)出了近百萬用戶的 App。AT!組織到現(xiàn)在都是我愛的組織,大家雖然從事不同行業(yè),但就跟親人一樣。每次聚會(huì)都是一年一度最嗨皮的日子,都是我經(jīng)歷過最真誠(chéng)的聊天。從后來做了 AnimeTaste 再到 EverMemo,我第一感覺到團(tuán)隊(duì)的重要性,第一次見識(shí)到優(yōu)秀的設(shè)計(jì)師和 iOS 開發(fā)者。
以上的諸多經(jīng)歷也為自己創(chuàng)業(yè)埋下了很多伏筆。這些都是我的實(shí)踐者階段,漫長(zhǎng)的三四年。
第三階段:創(chuàng)造者階段
實(shí)踐者階段之后,自己開始嘗試創(chuàng)造。也是我認(rèn)為學(xué)習(xí)的第三個(gè)階段 — 創(chuàng)造者階段,這個(gè)階段是沒有結(jié)束節(jié)點(diǎn),就一直這么存在著。
我大致是研究生一年級(jí)的時(shí)候開始摸到創(chuàng)造者階段的門梁,大三的時(shí)候接觸的 GitHub,感覺是我學(xué)程序來,打開的第二個(gè)世界的大門(第一個(gè),算是那個(gè) VB 程序的彈框)。接觸到 GitHub 讓我第一次開始學(xué)習(xí)和研究腳本語言( Python,Node,PhantomJS 等等),第一次開始接觸真正的生產(chǎn)工具(類似 Less,Sass 等等),GitHub 簡(jiǎn)直是求學(xué)者的寶庫,你會(huì)很期待明天的 Trending 榜單上會(huì)是什么新東西冒了出來。
那會(huì)兒在研究生階段,每個(gè)月有了公司發(fā)的幾千塊錢,也開始入手了人生第一臺(tái) iPhone,一臺(tái)土豪金版的 iPhone5s,買 App 太貴便折騰起了越獄(現(xiàn)在都是買 App 了)。裝了一款越獄后的 Store(我忘了叫什么了),那個(gè) Store,在下載一個(gè) App 的時(shí)候,有個(gè)超漂亮的進(jìn)度條,我每次都會(huì)認(rèn)真的的盯著那個(gè)進(jìn)度條,一邊看,一邊感嘆,一邊也暗許自己也要在 Android 上實(shí)現(xiàn)一套,這也是我開始第一次開發(fā)自定義組件的初衷,也是 NumberProgressBar 誕生的最初原因。
啃下第一個(gè)自定義組件,對(duì)很多人來說都是很痛苦的,我也一樣,那會(huì)兒的 Android 組件少的可憐,不斷的看文檔,看源碼,讀別人的代碼,試圖搞清楚更多更底層的東西,不斷的嘗試運(yùn)行,折騰了一周左右(每天超過 10 小時(shí)投入),終于做出來了,照貓畫虎的寫好文檔,做好測(cè)試,小心翼翼的發(fā)布到 GitHub,然后發(fā)表到當(dāng)時(shí)為數(shù)不多的 GitHub Android 分享社群里。
再到后來的幾個(gè)月,又陸續(xù)寫了一些其他的庫,發(fā)到 GitHub 上,其實(shí)我根本沒想到會(huì)有那么多人去 Star,可能跟下手比較早有關(guān),恩。
創(chuàng)造者階段,就是努力創(chuàng)造那些沒有的,源自你腦海里的東西,而不是別人安排給你的。努力做到讓更多的人用到,可以是一個(gè) App,可以是一個(gè)幫助人們提高效率的 Chrome 插件,也可以是一個(gè)簡(jiǎn)單的組件。創(chuàng)造是最挑戰(zhàn)你對(duì)一個(gè)行業(yè)的熱愛程度的。
我從來不反對(duì)重復(fù)發(fā)明輪子。每一個(gè)輪子即便有一些小的改進(jìn),都是適應(yīng)自然法則,優(yōu)勝劣汰的。
就我身邊而言,我最崇拜的創(chuàng)造者是尤小右,將一個(gè)小的 Framework,一點(diǎn)點(diǎn)的做大,再到做出國(guó)際影響力,真是個(gè)不得了的事情,也是很多技術(shù)人夢(mèng)寐以求的事情。
總而言之:如果你忽然覺得自己這幾年一直處在一個(gè)很穩(wěn)定的狀態(tài)中,覺得自己沒有提升,那你得想想是不是我卡在了某個(gè)階段,一直無法突破,你是否需要做些什么,突破到下一階段去。隨后的文章我也總結(jié)了一些誤區(qū)和突破方法。
被誤以為的學(xué)習(xí)
當(dāng)年,有一本書刊特別流行,叫《故事會(huì)》?!豆适聲?huì)》后來銷聲匿跡了,在我眼里,取代《故事會(huì)》的是知乎。對(duì),就是那個(gè)知乎。
我其實(shí)一直很反對(duì)一個(gè)論調(diào):“上知乎,學(xué)知識(shí)”。醒醒吧。知乎明顯就是現(xiàn)代版的故事會(huì)好嗎?!我不否認(rèn)知乎存在有價(jià)值的知識(shí),但,根本不值得你花那么多時(shí)間,去發(fā)現(xiàn)那少的可憐的知識(shí)。去讀書吧。用最系統(tǒng)的邏輯,去學(xué)會(huì)一項(xiàng)技能,哪怕你去《硅谷百年史》里去讀那些振奮人心的仙童半導(dǎo)體的故事,也比你不斷的知乎看著水的一筆的帖子要強(qiáng)的多?,F(xiàn)在,最可怕的是大家在知乎上消費(fèi)著垃圾,卻依然覺得自己在吃著奶酪,學(xué)習(xí)的過程都是伴隨著思考和痛苦的,如果你邊笑邊學(xué)習(xí),那你真的得醒醒了。
目標(biāo)和激勵(lì)很重要
我在大三下半學(xué)期被保研后,開始了另一個(gè)小項(xiàng)目,一個(gè)叫“小熊詞典”的 App,起因是因?yàn)樵趯W(xué)英語的時(shí)候,所有詞典類 App 想要獲取最全的詞語解釋都需要聯(lián)網(wǎng),流量消耗大不說,電量是最大問題,自習(xí)一早上電量就沒了。所以,自己想動(dòng)手寫一個(gè)詞典 App,主打離線詞庫和快速查詢。
但最后的時(shí)候,小項(xiàng)目胎死腹中。說實(shí)話,整個(gè) App,已經(jīng)開發(fā)到 95% 了,抓取了非常多有名的詞庫的數(shù)據(jù),并且整理成了規(guī)范格式。但項(xiàng)目最后還是放棄了。即便今天來看這個(gè)詞典依然很酷!(最豐富的詞庫和最快的查詢速度)
現(xiàn)在想想,當(dāng)初一個(gè)人開發(fā)的時(shí)候,每次想到一個(gè)很酷的功能,就決定加進(jìn)來,項(xiàng)目進(jìn)度遙遙無期。完全沒有項(xiàng)目管理的思路,也沒有意識(shí)到這樣會(huì)很快拖垮我的體力,消磨掉自己的意志和熱情。
對(duì)于很多初學(xué)者來說,總是抱著書學(xué),其實(shí)也是同樣的后果,你無法獲得任何的反饋和激勵(lì),以至于覺得一件事情越做越難。學(xué)習(xí)的過程,最好能定一個(gè)簡(jiǎn)單的目標(biāo),比如:“我即便現(xiàn)在什么都不會(huì),我就要做個(gè)小游戲出來,這個(gè)游戲應(yīng)該是這樣的一個(gè)玩兒法,blablabla?!?,做出來后,快些去找用戶,可以是你的朋友,也可以是你的父母,最好是那些不吝惜贊美的朋友們,讓他們無形之中給你一些動(dòng)力。
你永遠(yuǎn)無法一步達(dá)到完美
我認(rèn)識(shí)的朋友中,他們都有各種稀奇古怪的想法亟待實(shí)現(xiàn),但最后,以信誓旦旦開始 Side projects,最后卻都銷聲匿跡了,這是不無原因的。因?yàn)楹芏嗟拈_發(fā)者在剛開始的時(shí)候,缺乏清晰的計(jì)劃,卻想一步登頂完美的境地。這是很可怕的想法。就好比,我一個(gè)很少登山的人,卻在第一次的時(shí)候,就決定登頂珠峰,結(jié)果自然可想而知。在實(shí)踐自己想法的時(shí)候,最好能考慮以最低成本去展現(xiàn)你想法的核心部分,而非一個(gè)大而全的方案。
從最小成本的想法核心,一步步的去驗(yàn)證自己的想法,去收集反饋,調(diào)整策略。最終抵達(dá)一個(gè)正確的目標(biāo)。
趕在興趣消失之前,去學(xué)習(xí)新知
不得不承認(rèn)懶惰是人的共性,當(dāng)你看到別的朋友做出來很酷的小游戲的時(shí)候,你是否也有幾分鐘沖動(dòng)的想要去學(xué)習(xí)游戲制作。不要等!快去買兩本書抓緊學(xué)起來,哪怕你知道你這個(gè)熱情的苗頭很快會(huì)熄滅,但請(qǐng)不要放棄任何發(fā)現(xiàn)新大陸的機(jī)會(huì),在學(xué)習(xí)沖動(dòng)消失之前,去入個(gè)門先。
我每次跟人互相分享初高中生涯的時(shí)候,我總是能想起來我初中時(shí)候的一位語文老師,微胖,性格和藹。她在一次自由復(fù)習(xí)準(zhǔn)備期末考試的時(shí)候給我說: “你復(fù)習(xí),不要局限在課本上,你背會(huì) 24 節(jié)氣都是很有意義的,想看什么書,就去看,不要等,不要擔(dān)心自己學(xué)不會(huì)?!?/p>
這話對(duì)我學(xué)習(xí)新東西影響特別深,現(xiàn)在我基本上想學(xué)習(xí)什么東西,立馬去學(xué),即便可能一周后氣餒了,放棄了,但是從來不會(huì)懷疑學(xué)這些零碎知識(shí)的意義。
我學(xué)過吉他,寫過毛筆字,寫過 Delphi,用 Sketch 畫過 icon,用 Blender 畫過 3D 保齡球,寫過 Unity 小游戲?? 很多我都沒堅(jiān)持下來,但給我?guī)淼淖畲蟾淖兙褪俏也粫?huì)懼怕去接受新事物,思考問題的時(shí)候總是能把很多場(chǎng)景考慮到。也能慢慢的找到自己最愛做的那件事情,更清楚的定位自己。
所以,當(dāng)你忽然對(duì)某件事情有興趣的時(shí)候,抓住那幾分鐘,那幾天,趕緊去學(xué)點(diǎn)新東西。
畢竟,點(diǎn)總是會(huì)串成線的。
少看別人寫的文章,多看優(yōu)秀的代碼
我做 Gank 以來,很多開發(fā)者都投稿過,以至于現(xiàn)在后臺(tái)還擠壓著 2000 多個(gè)投稿沒有處理。看過這么一圈而后,我開始不主張去看別人寫的技術(shù)類文章??磩e人的文章,你看到的是他想講給你的,而這些可能只是他在自己的項(xiàng)目里用到的,而不是一個(gè)客觀全面的角度。時(shí)間一長(zhǎng),以至于你只知道這個(gè)東西的一兩種用法,更可怕的是你可能已經(jīng)對(duì)思考喪失興趣,總想走捷徑,可能這樣前期學(xué)習(xí)效果顯著,但是后期會(huì)很快到達(dá)瓶頸。我想如果你經(jīng)常讀各種語言的官方文檔,總是會(huì)有 “啊哈!這樣都可以,我以前都不知道還有這種方法存在?!?nbsp;的感嘆,但你看別人的文章,卻很少有這種感覺。
至于主張看優(yōu)秀的代碼,其實(shí)是希望學(xué)習(xí)一個(gè)技術(shù)細(xì)節(jié),是伴隨著思考的。其實(shí),評(píng)價(jià)某一種方案好與不好,是沒有意義的。只有多積累其他人解決同一問題的方法,才能在下一次做決策的時(shí)候,找到適合當(dāng)前場(chǎng)景的最優(yōu)解,很多時(shí)候,也能觸類旁通,給解決其他問題提供思路。
慢慢減少對(duì)二手知識(shí)的依賴
技術(shù)提升這個(gè)過程,其實(shí)是你對(duì)二手知識(shí)減少依賴的過程。二手知識(shí)是什么?就是那些經(jīng)過別人翻譯,總結(jié)的文章。一開始入門,大家看到的都是二手知識(shí)(也可能是三手,四手的知識(shí)),但,想要提升自己的能力,強(qiáng)迫自己多去看些更官方的文檔,體系化去學(xué)習(xí)。這個(gè)過程是很消耗體力和腦力的,但多堅(jiān)持,一定會(huì)有明顯改善的。
收藏的意義不大,收藏也不能改變什么
很多人看到不錯(cuò)的文章,總要 @我的印象筆記?? 我之前也會(huì)這么干,經(jīng)常把一些不錯(cuò)的文章,存到 Pocket 或者 Readability 里,但,真的回顧去看那些文章的機(jī)會(huì)太少了,而收藏這些文章給我?guī)聿簧賶毫?。有的文章,我只是淺顯的讀了讀,腦子里總是得記著有時(shí)間了再去讀完剩下部分,正如大多數(shù)人一樣,再也不會(huì)去讀了。久而久之,拖延癥也就變得理所應(yīng)當(dāng)。
有可能你會(huì)說萬一哪天用到呢?其實(shí)我覺得再 Google 一次就好啦,可能會(huì)找到比這篇文章更好的。就這樣。
現(xiàn)在,看到一篇不錯(cuò)的文章,首先從標(biāo)題推測(cè)下內(nèi)容,再掃一眼,如果跟我猜測(cè)的八九不離十,我基本就關(guān)掉了。如果有跟我的推測(cè)大相徑庭,我一定會(huì)一口氣讀完,而不是收藏起來以后再讀。
之所以我說收藏什么也改變不了,是因?yàn)樽x別人的東西,思考的過程是別人的。努力去減少從別人文章里閱讀學(xué)習(xí)的頻率,多去讀一手資料然后自己總結(jié)。
培養(yǎng)一些對(duì)產(chǎn)品的感覺
你有沒有在 PM 說了要實(shí)現(xiàn)某個(gè)效果或者功能的時(shí)候,你站出來反對(duì),說這樣并不合理。如果你有過,那么我想你也是一個(gè)有理想的開發(fā)者,而不是一個(gè)“碼農(nóng)”。聰明人喜歡跟聰明人合作,大家一開口就互相明白了。沒有人是天生聰明的,只是看的多了,想的多了,就顯得聰明了。
看些什么呢?看看一個(gè)優(yōu)秀的 App 早起的冷啟動(dòng)是怎么做的,看看 Apple Store 或者 Google Play 上最近有沒有什么新奇的 App 出現(xiàn),看看 Tech Crunch 上最近又有什么天馬行空的項(xiàng)目融到了錢。
想些什么呢?想想一個(gè)產(chǎn)品功能的存在有沒有意義,他的下個(gè)階段又會(huì)怎么發(fā)展,想想某段文案是否會(huì)降低產(chǎn)品某個(gè)功能的轉(zhuǎn)換率,想想某個(gè)動(dòng)畫效果是否是很惱人的存在,如果你可以對(duì)微信加一個(gè)功能,減一個(gè)功能,你又會(huì)作何選擇。
每個(gè)人都應(yīng)該有個(gè) idea list
我在西安讀大學(xué)那會(huì)兒開始,就有一個(gè)小本子,記錄著突然沖入自己腦海的一些靠譜或是離譜小想法。上面會(huì)寫著類似:
做個(gè) Every big moment,用手機(jī)記錄自己的每個(gè)值得紀(jì)念的瞬間,然后打印成相冊(cè)發(fā)給我或者放在網(wǎng)上當(dāng)做自己的 Profile。
狗狗出門便便,主人打掃很不方便,有沒有更好的方案?
程序一旦崩潰,直接發(fā)送操作記錄和堆棧信息到 Dashboard,而不要讓測(cè)試人員努力重現(xiàn),寫個(gè) SDK,搭建一套服務(wù),一定會(huì)很好用。
很多的 Bug 追蹤服務(wù),為什么不在錯(cuò)誤堆棧旁邊,展示出來這個(gè) Bug 的解決方案,哪怕是一個(gè) StackOverflow 的鏈接也好,這樣我就不用去自己搜索了。
那個(gè)小本上記錄了自己好多做產(chǎn)品的想法,有不少,后來市面上都出來了相應(yīng)的產(chǎn)品。也有一些現(xiàn)在看來很可笑,有的想法今天再翻看的時(shí)候,仍然會(huì)沖動(dòng)的想要組團(tuán)隊(duì)去實(shí)現(xiàn)。
Idea list 總是能激發(fā)你去創(chuàng)造的欲望,有空,就去不斷的記錄自己的 Idea list 吧。
另外,不要把自己的 idea 當(dāng)做一個(gè)秘密,多和人去討論自己的想法,在不斷的否認(rèn)和肯定中,完善自己的想法,idea 是不值錢的,只有實(shí)現(xiàn)它才是有價(jià)值的。
爭(zhēng)取去更優(yōu)秀的地方
這句話可能大家都懂,但我的體會(huì)卻比大家都深刻。
我在西安一個(gè)叫西北大學(xué)的地方讀的大學(xué),是一個(gè)普通的 211。計(jì)算機(jī)專業(yè)客觀來說比較一般,在來北京師范大學(xué)讀研究生之前,我甚至沒聽說過 ACM。
Python、Ruby、Node 這種編程語言在我們的計(jì)算機(jī)系,根本連影子都沒有,所以正統(tǒng)的計(jì)算機(jī)技能點(diǎn)基本都是 C,C++ 這樣,這并沒有什么錯(cuò)?? 但路子就變窄了很多,學(xué)長(zhǎng)畢業(yè)去個(gè)騰訊、阿里,已經(jīng)能被大家推上神壇。
本科學(xué)校大二會(huì)給計(jì)算機(jī)系開一門日語課。為什么會(huì)給計(jì)算機(jī)系開日語課呢?因?yàn)楹芏嗤獍鼇碜匀毡?。這個(gè)邏輯我一直都接受不能。這都什么年代了,我們?cè)缍疾恍枰猛獍挝覈?guó)的 IT 產(chǎn)業(yè)了。
學(xué)校給學(xué)生的定位更多是一個(gè)學(xué)校展示就業(yè)率的棋子,你會(huì)什么不重要啦,只要你最后有個(gè)工作就好了,不要拖累了學(xué)校的名聲。
來師大后,感受到了前所未有的轉(zhuǎn)變。學(xué)校整體的氣氛相當(dāng)自由,很多老師們,都是各自領(lǐng)域的專家,你問一個(gè)問題,他們能給你引導(dǎo)出很多有意思的點(diǎn)。久而久之,你也會(huì)被這些感染到。有時(shí)候,我也會(huì)想,以后穩(wěn)定下來之后,要不要去申請(qǐng)個(gè)美國(guó)名校讀一讀。
結(jié)尾
目前能想到的一些學(xué)習(xí)的技巧和陷阱,大致都列了出來。都是我個(gè)人的一些學(xué)習(xí)的經(jīng)驗(yàn),如果對(duì)你有幫助,想必也是極好的,如果你覺得我寫的有不合理的地方也歡迎指出。堅(jiān)持著去實(shí)施提及的一些方法,一定會(huì)對(duì)你的生活和職業(yè)帶來改變。
評(píng)論