成長爲 iOS 大 V 的祕密

成長爲 iOS 大 V 的祕密

前言

絕不謙虛地說,我是國內 iOS 開發的大 V。我從 2011 年末開始自學 iOS 開發,通過 3 年時間,到 2014 年末,我不但寫做了上百篇 iOS 相關的原創博客文章,完成《iOS 開發進階》,同時還成功運營了「iOS 開發」這個國內最多 iOS 開發者訂閱的微信公衆號,另外個人微博(@唐巧_boy)粉絲超過 4 萬。我是如何作到的呢?程序員

在武俠小說裏面,武林高手一般生來就有慧根,是個學武奇才,就像周星馳《功夫》裏面的星仔。另外,他們還一般會獲得世外高人的指點,要麼得到別人畢生修煉的真氣(虛竹),要麼得到絕世武功的祕笈(段譽)。編程

而我其實在這些方面都很弱。我在計算機編程方面並算不上聰明,我在北京師範大學讀計算機專業,這是一個全國綜合實力排在 100 名開外的院系,離清華北大差得不是一個級別。而個人語文高考成績,剛剛及格。個人英語成績也很通常。服務器

更不湊巧的是,我當年學 iOS 的時候,國內資料不多,並且公司裏面沒人有時間指導我,我只能自學。很難想像,我這麼差的背景的人,可以成爲 iOS 大 V,可以寫文章,甚至還出書。微信

那麼,我成爲 iOS 大 V 的祕密是什麼呢?請聽我慢慢道來。網絡

大 V = 大牛 ?

首先我想討論一個問題:「大 V = 大牛」嗎?其實不少時候,這二者並不能直接劃等號。架構

我見過不少大牛,他們水平很高,可是他們或者不善於表達,或者不善於寫做,或者表達和寫做都沒問題,可是他們並不喜歡在網上高談闊論,更喜歡把時間花在研究技術問題上。這些大牛,就像《天龍八部》裏面的掃地僧同樣,未曾被外界知曉,可是技術實力一流。性能

我也見過一些大 V,技術實力通常,可是喜歡分享本身的心得,喜歡翻譯國外的博文。他們有一些人甚至不善於寫做,寫文章喜歡大段大段地貼代碼。可是,隨着他在這方面不斷地鍛鍊,他們慢慢地寫做得愈來愈好,講解技術愈來愈通俗易懂。由於頻繁地交流,他們的技術實習也在不停地進步。雖然這些大 V 的真實水平可能比不過一些從不分享的大牛,可是他們的能力至少是達標的。學習

因此,我對這個問題的答案是:大 V 不等於 大牛。可是,要成爲一個大 V,至少應該具有如下條件:測試

  • 能力是達標的,不該該有明顯的能力問題。spa

  • 喜歡交流,認識不少業界同行。

  • 喜歡錶達,經過寫做和線下分享來傳播知識。

因此,咱們不該該盲目崇拜大 V,他們只是喜歡分享而已。

那我算一個 iOS 的大牛嗎?我不知道。有一些人承認我,也有一些人以爲我很通常。可是個人原創文章、個人書、我開源的代碼、我作的每次分享都公開在網上。我僅僅用三年時間在 iOS 領域作到這些也是不容易的,因此但願你們繼續看下去,看我是如何作到的。

奇材 + 祕笈?


在武俠小說裏面,武林高手一般生來就有慧根,是個學武奇才,就像周星馳《功夫》裏面的星仔。另外,他們還一般會獲得世外高人的指點,要麼像虛竹那樣,得到別人畢生修煉的真氣;要麼像段譽那樣,得到絕世武功的祕笈。

我是一個奇材嗎?

我是一個奇材嗎?顯然不是。

我從小就喜歡計算機,從高中就開始接觸計算機編程,我還記得那個時候學的是 PASCAL 語言,從那個時候起,我就展示出在計算機編程方面的愚鈍。我還記得我和同班的小夥伴一塊兒學習遞歸枚舉,他大概只花了三天就看懂了相關的代碼,而我花了整整一個月。

個人高考成績其實也很通常,不過我運氣比較好,當年全國試行自主招生,我靠着自主招生進入了北京師範大學,在北京師範大學讀計算機專業。這是一個全國綜合實力排在 100 名開外的院系,離清華北大差得不是一個級別。我靠着高中時積累的一點點編程知識混進了學校的 ACM 校隊,以後一直比賽成績通常,直到研一的時候才免強得到了亞洲區的區域賽金獎。

個人實習經歷也很是不順。我從大四就開始找實習,一直被拒,到研究生階段仍是找不到實習。最終仍是靠剛剛說的區域賽金獎,得到了來自贊助商 IBM 的一次實習機會。

大 V 須要擅長寫做,而個人高考語文成績,92 分(滿分 150),剛剛及格。個人英語成績也很通常。

因此,我就是一個天資普通得不能再普通的一我的。

我有高人指點嗎?

那我有高人指點嗎?很惋惜,也沒有。

我不但沒有高人指點,並且我學習 iOS 開發的過程極其曲折。

沒有資料

我是在 2011 年末開始學習 iOS 開發的。當時我厭倦了服務器端的開發,感受移動互聯網很火,因而想作 iOS 開發。可是,當時移動開發剛剛興起,國內外甚至都沒有一本像樣的 iOS 圖書。當時除了一本入門的基礎書,教你使用各類 UI 控件外,就只剩下一本盡是代碼的書,教你各類小技巧(好比如何讀文件,若是發個網絡請求之類)。

沒有人帶

我當時在有道雲筆記組,負責 iOS 開發的同窗並不太擅長帶人,因此我很遺憾基本上只能本身學習和研究 iOS 開發知識。

學習時間短

我覺得公司會給我一些時間讓我學習 iOS 開發,可是真實的狀況是,我只有兩週的時間學習!兩週以後,我就須要幫忙修復線上的 iOS 代碼,以及參與功能開發了。

我不知道你們是花多久學完 iOS 開發的。有一些同窗報 iOS 培訓班,在有老師講的狀況下,一學就學三個月。而我,只有兩週的時間。

背景知識爲零

我在學習 iOS 開發前,對客戶端開發一無所知,我當時沒有用過 Mac 機,沒有 iPhone。一切東西對我來講都還很是神祕。

沒有時間提升

我從 2011 年末開始學 iOS 開發,到 2012 年 5 月份就離職創業了。那個時候由於創業剛開始,咱們進入了長期的 6 天,天天 11 小時的高強度工做方式。我想提升本身的 iOS 水平,可是天天工做下來都很晚了,並且寫了一成天代碼精疲力盡,實在沒有時間提升。

個人成就

可是,在自身條件通常,環境惡劣的狀況下,我仍是作到了自個人快速成長,而且收穫了不少成績:

  • 我從開始學習 iOS 開發半年後,就開始獨立負責 iOS 端的開發工做。

  • 我從 2013 年 1 月建立「iOS 開發」微信公衆賬號,而後每週堅持更新,如今有超過 3 萬 5 千的訂閱量。

  • 我從 2013 年末開始撰寫《iOS 開發進階》,2014 年末完成。另外我還寫了一年多 「iOS 開發週報」。

  • 我將公司的網絡庫,Key-Value 存儲庫開源,GitHub 上 Star 數上千。

  • 我堅持寫 iOS 技術博客,如今完成了超過 100 篇原創文章,不少發表在 InfoQ 和 《程序員》雜誌上。

我是如何作到的

那我是如何作到的呢?

解決入門的問題

學習 iOS 開發,沒有相關硬件是不行的。可是蘋果的硬件都很貴,不少人捨不得買,裝黑蘋果來解決,這種行爲我簡單嘗試了一下就放棄了,由於黑蘋果有着太多的兼容和性能問題,在這上面浪費時間很是不值得。因而,我仍是本身掏錢買了 Mac 機和 iPad,爲了省錢,我買的第一臺 Macbook Pro 是從同窗手中買的二手貨,我買 iPad 而不是 iPhone,其實也是爲了省錢,由於 iPad 不但相對來講更便宜,並且能夠同時作 iPhone 和 iPad 的開發用。

國內沒有學習資料怎麼辦呢?只有硬着頭皮看國外的資料唄。其實當時國外的資料也很少。我是一個視覺型的學習者,因此我看的是斯坦福的iOS開發視頻課程。前幾節課看的是網易雲課堂上的帶中文字幕的版本,可是字幕只到第10課,後面的課程我就直接看的無字幕的原始視頻。

兩週的時間雖然比起外面的培訓機構短不少。可是安排得好的話,天天仍是能夠學習不少。我大概一週就看完了視頻課程,而後就是不停地寫程序練習。雖然沒有人帶我,可是當時有道公司內部的全部 iOS 工程代碼我其實也是能夠用來學習的。因此我仔細閱讀了有道詞典和有道雲筆記的代碼。

因而,兩週以後,我就開始參與工程Bug的修復工做了。差很少一個月左右,我就開始負責一部分開發工做了。

解決交流討論的問題

雖然我很快完成了iOS的入門學習,可是感受交流不多,不少問題沒有人討論,這對於本身提升開發能力是一個很大的障礙。因而,我開始組織各類分享交流會。

剛開始我嘗試在公司內部作這種交流工做,發現推動得很是困難,主要是喜歡分享的人仍是比較少。有道的技術牛人實際上是很多的,可是就像我剛剛說的那樣,大牛不等於大V,大牛也不表明着樂於而且擅長分享。因此,通過了快兩個月的推動,技術交流會仍是很是少。你們都會說沒有時間準備,而我又沒有任何權力在強行要求同事作分享。

我苦惱了好久,最終到創業的時候,才發現我以前眼光太淺,世界那麼大,我爲何要把交流的圈子定在公司內部呢?在創業的時候,我開始從全國範圍內主動尋找和結識樂於分享的 iOS 開發者。我會從微博,博客,技術分享會,前同事等各類渠道去尋找這樣的朋友。其實,對於樂於分享的人來講,你要作的事情就只是把他們聚到一塊兒就好了,他們本身就會開始不停地交流、討論、分享。

解決提升的問題

大部分 iOS 開發者在入門一段時間後,就會苦於不知道如何提升。其實,提升的方式有不少,只要捨得花時間。我在提高我的技能方面,主要作了這些事情:

  • 看 WWDC 的視頻。由於由蘋果官方提供,而且每一年更新,因此 WWDC 是學習 iOS 開發新知識最好的渠道。我利用我天天上下班坐地鐵的時間來學習,遇到一些關鍵的知識在地鐵上很差作筆記,我會直接用截屏的方式把這些知識截下來,而後晚上在家裏再把內容整理下來。下圖是我在 Evernote 中記錄的 WWDC 筆記,你們能夠看到,一共有 70 多篇。

  • 看 iOS 的博客。我用 RSS 聚合閱讀器定閱了大量國外 iOS 的博客,而後利用碎片時間閱讀。個人 Evernote 上收藏了上百篇的精選文章。個人碎片時間大可能是上廁所和睡覺前。那個時候智能手機剛剛興起,尚未微信,我感受如今很難作到在手機上安靜地作閱讀了。

  • 寫做。對於我我的來講,我會堅持用寫做的方式來學習。由於我以爲寫做是知識理解的最高層次。美國教育心理學家 Bloom 將知識認知歷程維度分爲 6 個層次,分別爲:記憶、理解、應用、分析、評鑑、創造。以下圖所示,層次越高,表示對知識的掌握程度越深。我每次以爲我理解了一個知識後,就會用寫做的方式把它寫下來,一般狀況下,在寫做的過程當中我都會發現本身的一些認知不足,從而經過二次學習來完善。

個人心得

在這個過程當中,我也發現了一些之前認識上的誤區。

時間是最大的藉口

有一些朋友評價我:「迷之高產」,他們不理解我是如何有那麼多時間搞定各類事情。

在我看來,當你作很差某一件事情時,時間一般是最大的藉口。

時間是能夠尋找的

我學習 iOS 開發半年後,我就從網易離職參與創業了。當時咱們須要工做 6 天,天天 11 個小時。可是,這仍然沒有影響我學習、交流、甚至寫做。其實你仔細記錄本身的時間以後,就會發現有不少時間能夠利用。

好比我在那段緊張的創業期間,就利用天天上下班的時間,在地鐵上看 WWDC 視頻。

我自認爲最誇張的事情是利用陪老婆逛街的時候寫博客文章。當時我老婆和岳母在商場裏面逛,我就在手機上寫文章。其實試過以後發現,在手機上寫文章的速度也算不上慢。

如今,我有了小孩,週末經常要陪伴她。我就會特別珍惜晚上 8 點後她睡着後那段時間,我能夠利用那段時間作一些學習和寫做的事情。

時間是能夠擠的

若是咱們提升工做的效率,那麼作一樣的事情,你就會比別人花費更少的時間。這樣咱們就能夠擠出時間作別的事情。

程序員這個工做特色是須要集中精力,因此應該儘可能避免被別人打斷。推薦你們使用番茄工做法,讓本身可以在短期內集中精力作一件事情。長此以往,你就能夠快速進入編程狀態。

另外,寫代碼以前,先在紙上把邏輯寫清楚,這樣會使得本身 Coding 的過程很是順利。有一些人喜歡邊寫邊想,這樣若是趕上一些沒想清楚的狀況,就可能白寫一部分代碼。在紙上把邏輯先寫清楚後,Coding 的節奏會很是輕鬆,由於你的腦海裏已經有整個架構的藍圖了,即便中間暫停休息一下,也不會有很大的影響。

平衡好時間和代碼質量

有一些人寫代碼,徹底是堆功能,不考慮可維護性,你若是批評他,他就會義正言辭地說:時間不夠!

另外有一些人,追求代碼質量,寧願項目長時間延期,也不肯意寫出看起來髒的代碼。遇到需求變動,老是要進行大幅度的重構,以保證新的架構是最優雅的。

我有很長一段時間都是後者,可是我如今以爲,咱們不該該走極端,咱們應該好時間花費和代碼質量。

從商業上來講,按時交付產品比什麼都重要,一家創業公司,若是不能按時交付產品,可能它就會面臨資金不夠的問題而倒閉,也可能被競爭對手搶先推出相似產品,在競爭上失去時間上的優點。

因此一個好的程序員,更應該有「大局觀」,在保證代碼質量的同時,也能明白,良好的代碼質量實際上是爲了長期的可持續地按時響應需求變動、人員變動,以達到「按時交付產品」。

運用心智

什麼是心智

關於什麼是心智,我來說一個故事吧。

我老婆是學幼兒教育的,她給我講過一個故事,幼兒教育學家爲了研究小孩的自控能力,會作一個叫作 延遲知足 的實驗。這個實驗是這樣的:

在一個屋子裏面,讓小孩坐在一個書桌前,而後給小孩一個糖果,告訴他:「我 15 分鐘後回來,若是你在我回來以前都不吃這個糖果,等我回來後就再獎勵你一個糖果」。

一般狀況下,不少小孩都沒法抵抗糖果的誘惑而很快將它吃掉。而研究發現,那些堅持到最後的小孩,自控能力更強,在隨後的跟蹤研究發現,這些小孩可以在學校取得更好的學習成績。


對了,我把這個實驗錄像從 Youtube 上找到了(如上),傳到騰訊視頻上分享給你們。

研究人員對這些表現出優秀控制力的小孩很好奇,想進一步分析出他們有什麼特色。研究人員甚至用功能磁共振成像儀爲他們的腦部進行掃描,但願經過對比掃描圖,找出大腦對 「延遲知足」 能力起做用的特定區域。此外,研究人員還進行了不一樣的基因測試,以研究是否存在控制 「延遲知足」 能力的遺傳因素。

最後,研究人員發現,這些小孩都會很是簡單的一招:轉移注意力。具體來講,他們會在特別想吃糖果的時候,選擇作別的事情來讓本身大腦暫時不那麼關注糖果。好比他們可能會唱歌,在桌子上寫字,將頭轉向窗外。

這個故事就是關於心智最好的解釋,小朋友教會咱們不要抵抗人性,要利用人性。他們知道本身喜歡吃糖果,可是他並非強制讓本身不喜歡吃糖果了,而是用別的辦法來達到目的。

若是你合理利用人智,那麼就會收穫巨大的威力。

培養習慣

培養習慣應該是最簡單的心智利用手段。人們對作一件事情會有惰性,可是一旦培養成習慣以後,不作這件事情反倒不習慣了。因此那些值得作的事情,你們都應該在開始的一段時間內,強行讓本身在固定時間點作這些事情,長此以往,就會造成習慣,讓它成爲你受益終身的習慣。

不止是我的,組織的協做也應該培養習慣。咱們在用 Scrum 用項目推動時,會固定天天和每週的開會時間,以及產品的上線時間,這些都會讓組織減少對於協做的管理成本。好比每週一夜須要完成 App 的測試,你們就會自發地緊張起來,將遺留的 Bug 一一修復。

設立目標

不少事情,當咱們沒有目標的時候,執行的動力就會差不少。因此,我在學習 iOS 開發的時候,會不斷地給本身設立一些目標,經過不斷強化這個目標,這樣使得我在學習的時候意願變得更強了。當目標達成以後,成就感和自信心就由此產生,從而激勵咱們更加努力,由此產生出良性的循環。

具體來講,我在學習初期不斷要求本身將學習內容整理成博客文章,我要求本身每月至少寫一篇。個人第一篇 iOS 文章是從 2011 年 8 月開始寫的,那個時候我纔剛剛開始學習 iOS,當時看蘋果的內存管理的官方文檔,有一些心得,就寫了下來。而後關於寫博客這件事情我就一直沒有間斷,一直寫到如今。

在文章積累到必定程度以後,我給本身設立的第二個目標是完成一本書。我但願藉此機會,將本身沒有系統整理的知識再梳理一次。這個目標對我其實挑戰很大,最終我從中學會了將圖書的撰寫拆分紅不少小的目標,而後一步一步達成。

把大目標拆分紅小的階段性目標這一點很重要,它使得總體的時間安排是適當的,不會剛開始過緊或過鬆。另外一方面,很一次完成小任務的知足感,能夠適當讓咱們的大腦產生喜悅,最終使得任務更容易被搞定。

尋找成就感

人是須要激勵的,《異類》一書中講到,那些剛開始只有一點點天賦的人,由於不斷被人誇獎,從而使得他們更增強化本身擅長的事情,從而得到成功。

因此,咱們應該學會給本身作的事情尋找成就感。除了經過完成目標來得到成就感之外,咱們還能夠有更多的成就感來源。對於我來講:

  • 我會從寫文章分享知識這個過程當中尋找成就感,由於這幫助了其餘人學習 iOS 知識。

  • 我會從給 InfoQ 和《程序員》雜誌的投稿中尋找成就感,由於它讓我感受到了知識被承認。

  • 我還會從粉絲的轉發和評論中尋找成就感,它讓我小小的心裏充滿了被承認的感受。

  • 我還會從文章的打賞中尋找成就感,畢竟金錢打賞是對文章質量最直接的確定。

這些成就感,驅使着我,讓我更加努力學習,停不下來。

適度堅持

總會有一些事情,你不那麼容易找到目標和成就感。

我在 2013 年開始作「iOS 開發」微信公衆號的時候,就有這種感受。每週都要堅持推送消息很辛苦,並且剛開始的時候,粉絲不多,沒有人看。我有無數個理由中止作這件事情。可是,我有一個習慣,就是決定作一件事情以後,先作一段時間再說。

當時我給本身設立的目標是,先作半年再說。因而,我就繼續更新。機會老是給有準備的人,作着作着,我發現關注數慢慢上升了,我就給本身打氣說,慢慢會好起來,因而又繼續堅持。終於堅持到 2015 年,個人關注數超過 2 萬,也開始有了廣告收入。

仍是《異類》那本書裏面提到了 10000 小時定理,這個觀點其實給我很大的鼓舞,它讓咱們全部人意識到,不論你是否聰明,你均可以用簡單地堅持,來成爲某個領域的專家。我以前作 iOS 開發時就想,我平時上班一天 8 小時,一年 260 天工做,這樣一年是 2000 小時,我大概須要 5 年才能成爲 iOS 專家。可是若是我天天工做 10 小時,每週末多拿一天學習 iOS 開發知識,那麼我一年能夠花在 iOS 上的時間是 10(小時) * 310(天)= 3100 小時,這樣我只須要 3 年多一點,就能夠成爲 iOS 專家了。

我不可是這麼 YY 的,我也是這麼作的,是的,我就是但願我用三年的時間,達到別人五年的工做經驗。事實上,我確實作到了,我相信全部其餘人也均可以作到。

營銷

雖然和我的成長不要緊,可是成爲大 V 確實須要一些我的的營銷。我在這方面其實作得很少,細數下來,我作過下面這些營銷的事情:

  • 「iOS 開發」公衆號堅持三個月後,請馮大輝幫忙推薦過一次,請池建強推薦過一次。

  • 個人微博堅持只發 iOS 開發的消息,剛開始的時候沒有粉絲,我請池建強幫我轉過幾迴文章。

  • 圖書出版後,和出版社合做搞過幾迴轉發送書活動。

  • 和荔枝軟件搞過幾回 Mac 正版軟件特惠活動。

我在營銷上其實作得不算好,我在成爲大 V 這條路上真正的成功祕訣,仍是不斷堅持。

總結

總結一下本文的觀點:

  • 大 V 不等於 大牛,不要盲目崇拜。

  • 時間是最大的藉口。

  • 合理運用心智(培養習慣、設立目標、尋找成就感)。

  • 適度堅持。

     

祝願你們都可以快速成長~

相關文章
相關標籤/搜索