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