技術人攻略訪談十九:iOS大V養成記

請輸入圖片描述

文:Gracia程序員

導語:本期採訪對象唐巧@唐巧_boy,猿題庫iOS高級研發工程師。2011年從Java轉向iOS開發,3年時間已成爲iOS開發圈很有名氣的技術高手。他的影響力,很大程度上來自於他運營的微信公衆帳號iOSDevTips,這個面向中高級iOS開發者的公衆帳號已有超過5000粉絲,在iOS開發這個小衆領域,絕對算得上是大號。算法

這影響力的發端,倒是起源於微末。三年前開始的技術博客寫做,爲其後創建的QQ羣和公衆帳號埋下了種子。目前QQ羣已覆蓋了國內大、中型互聯網公司、創業公司、自由職業者及海外的iOS開發者,並和公衆帳號之間創建起了良性的互動,經過高質量的內容吸引更多牛人的加入,繼而產生更好的內容,造成了一個閉環的生態系統。編程

唐巧的採訪安排在一個週末的晚上,出於對程序員職業發展的興趣,攻略君準備了長長的問題列表,深刻探討了諸如:程序員須要影響力嗎?程序員的影響力對他的職業生涯發展究竟有多重要?程序員如何提升影響力?等問題,四個多小時聊下來,直到咖啡廳關門謝客還意猶未盡。程序員寫博客、參與開源社區、參與技術分享的重要性,早已獲得許多技術大牛的一致承認,從國外的Jeff Atwood,到國內的劉未鵬等,都明確撰文推薦過。然而落實到操做上,工做忙、壓力大、不喜歡交流、懼怕寫的東西太幼稚,這些都是讓人放棄的足夠理由。在日復一日的忙碌中,成爲「勤奮的懶人」,努力完成當下工做,但僅限於快速能見到效果的事情。這也許就是人性的弱點。segmentfault

對於任何人來講,分享都是一件須要花費大量時間和精力的事情,對唐巧也不例外。白天要面對創業公司高強度的工做壓力,晚上和週末才能擠出時間。在難以看到短時間成效的狀況下,投入精力去作一件付出巨大,「利他」大於「利己」的事情,無疑是一場考驗。這個過程當中的咬牙堅持,展轉反覆,和運動極限遇到的挑戰相似。但那些最終打敗本身,順利經過這場考驗的人,將有機會見到更多的風光,遇到更好的本身。微信

  • 技術人攻略:你從何時開始作iOS開發?爲何會進入這個領域?

2010年我研究生畢業加入有道,前後作了網易郵箱底層的API開發,和網易微博上的實時搜索系統。因爲微博沒作起來,加上我看好移動互聯網的發展,就申請轉到有道雲筆記組作iOS開發。我以前對Java很熟,但沒有iOS開發的背景。有道的技術氛圍很好,容許員工轉向新的領域。公司的技術評級制度就鼓勵員工精通兩門以上的語言,達不到就沒法漲級別。框架

當時是11年5月左右,公司給了我一個月時間學習iOS開發。因而那一個月幾乎沒幹活,每天看斯坦福的視頻和代碼,一個月以後就能上手了。接下來用了三個月時間,從無到有開發了有道雲筆記的iPad版。作完iPad版,又給iPhone版增長了手寫、塗鴉、密碼保護等新功能。性能

  • 技術人攻略:爲何選擇離開有道去創業?

剛加入有道的時候,很喜歡它的工做環境,牛人不少,很適合技術人成長。但待了一年以後,發現公司的技術氛圍開始變化。有道的領導基本都是技術精英,缺少懂營銷、推廣和管理的人才,不少產品作的很好,可是都沒成,加上搜索沒作起來,離職同事愈來愈多。資金投入的減小致使新人的質量降低,原來良好的技術交流氛圍也消失了。部分新人對技術沒有熱情、公司內iOS的技術交流搞不起來、技術上沒有機會作更深刻的東西,這幾個緣由直接致使了我想離開有道。學習

原本計劃等合同期滿了以後再換公司,並且我有網易的股票,9月份能夠兌現。但去年5月份的時候,遇到了如今這個機會。我當時想的是,即便創業不成功,我也會經歷一個iOS產品從無到有的過程,這對我來講是一個很好的機會。而且團隊的同事都曾經合做過,你們都特別喜歡技術,和一羣興趣相投的人一塊兒工做會很開心。因而放棄了手上的股票,加入這家創業公司。spa

  • 技術人攻略:你經營的關於iOS開發的微信公衆帳號據說已經超過了5000粉絲,當初爲何想要作這樣一個公衆帳號?是怎麼作到的?

微信公衆帳號的誕生和前期的積累息息相關,這還得先從寫博客提及。在作iOS開發以前,我就已經開始寫技術博客,當時尚未開我的博客。iOS開發是個新生事物,三年前會的人不多。我發現沒人談這個,而這又是個快速發展的領域。寫博客一來能夠樹立我的品牌,提升自身的影響力,二來能給整個社區貢獻內容。Java開發的任何內容都已經有人寫過了,網上一搜一大堆。而由於沒人談iOS開發,原創的博客資料就愈加珍貴。寫了幾篇以後,就乾脆獨立開了一個博客。操作系統

這樣寫了一年博客。加入創業公司以後,因爲作iOS開發的只有我一個,因此當時很恐懼,懼怕失去和你們交流的機會,因而建了一個QQ羣。首先把我之前的同事都加進來,而後經過同事的人脈圈子,想辦法把其餘公司作iOS開發的人都加進來,拉攏了大概20我的。這20個種子用戶中,其中有幾個的水平特別高,也很喜歡分享和討論,因此天天都會有一些討論出來。我感受討論的內容實在太好了,若是不分享給你們有點說不過去。正好去年春節的時候微信推出了公共賬號功能,就建了一個。

因而天天下班以後,我會把羣裏討論的內容作一些梳理,經過公衆帳號發出去。不誇張的說,我是第一個在公衆帳號中起iOS開發這個名字的,因此那段時間漲粉漲得特別快,很快關注的人數到了1000人。公衆帳號運營三個月以後,馮大輝和池建強分別推薦了一下,又迅速增長了1000粉絲。

這些優秀的內容吸引了不少牛人申請加入QQ羣,當羣人數加到30人的時候,我開始有意識地作一些控制。例如讓申請人提供真實姓名、APP做品、Github賬號、博客地址,我會看他的博客和Github,而且找認識的人覈實他的基本狀況。就這樣QQ羣慢慢加到了50人,成員覆蓋了從大型互聯網公司、中型互聯網公司、創業公司、自由職業及海外iOS開發人羣。這個羣已經產生出一種生態效果,對於任何的行業問題,都已經足夠自行討論出一個明確的、有結果的、正確的答案了。

微信公衆帳號的粉絲也超過了5000人。估計國內有10萬的iOS開發者,固然活躍的人可能到不了這麼多。我但願能將公衆帳號粉絲髮展到2萬,覆蓋差很少20%-30%的iOS開發人羣,按如今的增加速度還須要一兩年才行。

  • 技術人攻略:能有這麼多粉絲和你堅持寫了兩年技術博客關係很大。你寫博客的動力是什麼?每次更新須要花多長時間?

堅持寫博客可能和我原來的經歷有關係,我曾利用暑假去福建支過教,教小孩計算機。我以爲把知識傳達給別人是一個很舒服的過程,某種意義上來講,你的思惟延續到他們身上,感受像是你的生命延續到他們身上了。支教的時候這種感受特別強烈,我對計算機的熱愛傳遞到學生身上,是一種特別有成就感的事情。

寫博客還有一個緣由,感受技術男很容易不善溝通,我想經過寫博客,鍛鍊本身溝通、語言組織方面的能力,這也是自我完善的一個過程。我平均一個月發兩篇博客,每寫一篇要四個小時。通常是週末下午開始寫,寫到吃晚飯。吃完晚飯以後,修改一下發布出去。
最近剛和出版社簽約,打算寫一本iOS開發的書。國內iOS提升類的書比較少,翻譯的質量也不高。這本書預計要寫一年,明年年末交稿。雖然投入跟產出根本不成正比,但仍是願意憑興趣作事。

整個中文世界的技術資料跟英語世界是無法比的,基本上如今iOS開發的資料還得經過Google查找。國內真正願意寫文章的人太少了,我以爲有兩方面緣由,第一是有的從業者對技術並非真正感興趣,另外是中國的教育過程不強調我的的寫做和表達,不少牛人作得很好,也很喜歡本身作的事,但不喜歡寫,不喜歡分享。這就形成國內的技術資料很是少,交流圈子小。

  • 技術人攻略:程序員應該提高自身在技術圈的影響力嗎?我的的影響力究竟有多重要?

很是重要,可是不少人沒有意識到。阿里很是強調技術人員在社區的影響力,在評級的時候會把這個因素考慮進去,這是第一個把影響力做爲評級標準的大公司。當你有了必定的影響力以後,有可能推進一項技術的發展,或者改變你們對某個技術觀念的見解,不只能夠推進公司的項目,甚至還有可能改變整個技術生態的走向。

程序員我的塑造自我影響力能獲得不少好處,首先是能夠提高自個人表達能力,這對自我是很好的成長;其次是能夠結識不少同行,並且是興趣相通的同行,你的人脈關係和交流圈子將獲得擴大;第三是當你有想法推進一些事情的時候,影響力或許能夠幫助你完成這件事。

我私下裏問過幾個技術水平很高的同事,爲何不寫點博客、去參加一些技術分享。他們感受表達是一件很困難的事情。其實我以前的表達能力也比較差,高考語文150分才考了90,可是我一直堅持寫東西。固然我更可能是把分享技術當興趣來作,由於從開始分享到獲得好處,這個過程見效很是慢,若是真是要功利地在利益驅動下作,還真挺難堅持的。

  • 技術人攻略:做爲iOS開發高手,能不能介紹一下這門技術有什麼樣的特色?菜鳥要如何才能成長爲開發高手呢?

iOS開發屬於入門比較快,可是精通比較慢的技術。一個月入門,三個月熟練,但有不少深刻的技能須要一段時間的積累,這個積累我我的認爲須要三到五年,我本身如今也沒有達到。

客戶端開發最重要的是保證流暢的交互和合理的UI設計,用戶用起來不會卡,而且感受很舒服。程序員須要跨界地瞭解一些UI用戶體驗方面的東西,並在有限的內存和CPU的限制下,把這些效果實現。一樣的效果在iOS設備上實現的很好,在Android上可能就很難作。每一個設備都有本身的特色,開發受限於操做系統,因此過往的經驗很難去複製,須要掌握特有領域的一些知識。

新入行的人若是有鑽研精神的話,能夠經過工做中遇到的問題慢慢積累。思惟習慣會決定這我的能走多遠,例如網上搜到一段解決問題的代碼,有些人會去研究,爲何這段代碼能工做,背後的原理是什麼,不知足於簡單地解決問題,而是經過深刻思考來積累知識。這可能暫時對工做沒有直接的幫助,可是長遠來講這兩種思惟方式會形成巨大的差距。爲何大部分人老是提出那些很初級的問題,由於他歷來不去思考。

另外,我仍是個傳統的博客閱讀者,會訂閱不少國外的博客,經過閱讀博客積累一些東西。我以爲這也是一個很好的學習方式。

  • 技術人攻略:你將來一到兩年的目標是什麼?

我想成爲iOS方面的專家,剛纔說這個過程須要3-5年的積累,我感受本身掌握得還不夠深。經過寫書,持續發博客和微信公衆賬號,做爲個人驅動力,讓本身能夠持續提升。我其實還想了解Android開發,但但願iOS開發達到必定高度的時候再去作。我想研究跨平臺的解決方案,移動開發最終頗有可能造成一個大統一的開發的模式,經過一套方案來同時解決iOS和Android開發。要解決跨平臺的問題,必須精通代碼在各個平臺下運行的差別性,能作這件事的人,必定須要同時精通Android和iOS開發。

  • 技術人攻略:如今有這方面的解決方案了嗎?iOS開發還有哪些新趨勢?

跨平臺目前尚未很成熟的方案,你們都在嘗試。豆瓣剛出的豆瓣音樂人,用了PhoneGap框架,能夠直接編譯成iPhone、Android和Windows Phone的代碼,能極大地提高開發效率。HTML5有這麼高的關注度,就是由於它能解決跨平臺開發的問題,如今HTML5在手機上的體驗還不是很好,蘋果比較強調用戶體驗,它更傾向於你用原生的代碼來實現,實現交互的效果會好不少。

還有一個趨勢就是遠程動態更新客戶端的代碼。APP Store的審覈期限從一天到十天不等,增長一個功能,或修復一個Bug,須要提早一兩週。經過新的技術手段,讓APP具有自我升級功能,可以自動去更新內部的邏輯代碼。這個技術目前也有一些不太成熟的實現方案,PhoneGap框架在必定程度上能夠作到,經過HTML5從新下載一個新的網頁,就能夠改編以前的內容。還有經過Lua實現的,或經過一個相似於HTML5和CSS配置來動態改變APP的內容。目前這些技術方案都還不是很成熟,無法作到通用性,也無法保證很好的性能、開發質量和速度。

  • 技術人攻略:談談你如今的狀況吧,創業一年多了,這個過程當中有什麼收穫?

此次創業我不是合夥人,個人目標更可能是經過這個創業項目來鍛鍊本身。經過參與一家公司的建立和發展,在這個過程當中學習公司如何運轉、如何作決策、會經歷哪些困難,爲下一份真正的創業積攢經驗。加入這家公司以前,我很擔憂創業公司的管理是混亂的,沒有章法,什麼都作,什麼都不精,每天累得要死。加入以後才發現,其實不少創業公司是小而美的,同一段時間在創業公司收穫的成長和回報,會遠遠高於大公司。若是不是出來創業,我不可能在技術上得到那麼多收穫成長,也極可能不會那麼積極地跟他人交流和維護公衆帳號。選擇離開網易,雖然損失了一些工資和股票,可是和回報比起來不值得一提。我挺鼓勵有志向的人創業,特別是趁着年輕的時候。

從最開始的教育社區粉筆網,到如今的猿題庫,公司在發展過程當中也遇到一些坎坷,但咱們及時調整了產品方向。整個技術團隊也是小而美的,保持着很是高效的工做效率,咱們合做得很是開心。公司的社保和公積金都按最高比例繳納,去年底還發iPad Mini,既有大公司的福利,但同時又保持小公司的創業氣氛。

  • 技術人攻略:你在大公司和創業團隊都工做過,它們最大的區別在哪?

最大的區別是創業公司的工做更加高效。首先事情變得更多,若是想要不加班,就須要想辦法儘可能高效地去作事情。咱們會用敏捷Scrum的方式來安排將來的工做計劃,作粉筆網的時候,徹底按照預期的三個月交付。我以爲敏捷方法要成功實施,關鍵仍是看團隊文化和團隊成員的向心力。有人說過,只要團隊牛,無論用什麼管理方法都能成功,由於團隊成員會自發作一些高效的溝通,管理只是輔助手段。

舉例來講,爲了防止對他人工做的打斷,咱們還採用了Wiki來記錄重要的事情,基本上默認任何事都能在Wiki上找到解答。好比說服務端作了一個接口,確定會寫在Wiki上,等開發完了須要調試時候,其它同事能夠去Wiki上看這個接口,按接口去調試。對程序員來講,一次打斷就是很大的時間消耗,要接上上一次的思路至少要十分鐘。若是能夠擁有整段不受打斷的工做時間,效率會有極大的提升。

大公司開會太多,同事間溝一般用QQ,工做狀態常常會被是分紅小段時間,經常是下班了纔有時間寫代碼。大公司的大部分時間都是消耗在溝通上了,你會以爲生命被浪費。但在小公司,工做效率的提升會帶來我的很大的成就感,你會發現一天干的活可能比大公司三天或五天還多,你的成長也會很是快,就會以爲很舒服、很知足。

大公司有太多的體制和制度來侷限一我的的發展,KPI制度、晉級制度、溝通成本等,不少人以爲這就是一份工做,或者即便有熱情投入進去,努力也很可貴到反饋。創業公司的利益驅動更強,你的付出直接跟回報關聯,而且由於生存壓力,會更注重減小溝通成本,提高工做效率,保證開發速度和質量的平衡,一切目的都是快速把產品完成。創業是條不歸路,接觸過大量之前接觸不到的東西,眼界開闊不少以後,就再也難回到大公司作螺絲釘的角色了。

  • 技術人攻略:若是不創業,換一種生活方式,你打算作什麼?

雖然公司業務發展不錯,但此次創業遠遠沒到成功那一步。創業公司最怕就是「活死人」,即能掙到錢,可是企業的規模一直沒法增加,這就陷入一個兩難的境地,是繼續投入、繼續運營,仍是放棄,「活死人」是創業公司最難受的狀態。若是此次創業成不了,我可能會嘗試另外的生活方式,可能會去作老師,專門教iOS開發。如今培訓行業不多有像我這樣,有大公司工做經驗,又有創業經驗,並且本身又專心在研究iOS技術的人加入。我以爲我當老師應該挺好的,我挺享受教書的狀態。若是一個月只收幾個學生,帶着他們作項目,針對他們的特色教學,他們的收穫確定比在大班裏面學到的多。

另外一個想嘗試的就是作獨立的技術諮詢,幫公司提供iOS解決方案。調研不一樣公司的需求以後,找出可複用的部分,作成通用的解決方案。第三個想法是作自由職業者,經過本身寫APP或者接活產生收入,並去不一樣的城市體驗生活。

  • 技術人攻略:你平時有什麼興趣愛好?

我骨子裏是比較內向的人,特別宅,就喜歡計算機相關的東西,平時有時間基本上就是研究一下新技術,寫寫博客。我還對作飯感興趣,能作一手好菜,一生對本身的胃好點,是一件很幸福的事。

  • 技術人攻略:這麼喜歡計算機,很早就接觸編程了吧,作過什麼有趣的事情嗎?

我比較喜歡用編程作一些好玩的事情。之前春節回家玩QQ上的找茬遊戲,玩了一下子就以爲沒意思,因而寫了一個自動找茬的程序,把勝率作到了99%,之因此不是100%,是由於我爲了把程序作得象真人,把找茬點擊的速度降下來了,遇到別人也是機器人的時候,就掛了。

相似的事情還有就是我本身作過QQ象棋的外掛程序,也是很是牛逼。基本上輸的時候對方一看就是機器人。由於象棋的機器人有一個特色,它的算法是基於搜索和剪枝的,通常狀況下,進入比賽盤中的時候,搜索的深度都差很少,因而你就會發現,對方的機器人每次行動的時間都幾乎如出一轍。看兩邊機器人下棋還挺有意思的,你說呢?

唐巧的技術博客:http://blog.devtang.com/
唐巧的微信公衆帳號:iOSDevTips


技術人攻略訪談是關於技術人生活和成長的系列訪問,歡迎和咱們有共同價值觀的你關注「技術人攻略」,郵箱 devlevelup@gmail.com,新浪微博 @devlevelup,但願能成爲技術人成長的精神家園。
歡迎經過微信公衆帳號關注技術人攻略

請輸入圖片描述

感謝SegmentFault提供博客專欄及推廣支持。
感謝迅達雲成提供雲主機及技術支持。

相關文章
相關標籤/搜索