iOS 開發初期之後怎麼提升?怎麼才能叫精通?方向在哪?
現在工作一年,基本的都會了,基礎知識應該還算紮實,但是不知道怎麼繼續提升。如果只是跟著公司的項目走,做一個項目學一點、遇到一個坑填一個這樣,太慢了,也很沒方向。換個思路就是,什麼樣才算精通、才是真大神?
1、開發效率高、快?2、項目結構好,添加新模塊、修改甚至給其他類似項目都很輕鬆3、熟悉iOS開發的許多領悟,哪怕是比較偏門的都有了解,遇到需要的項目能迅速展開。或者掌握一些相對較難的技術,比如安全問題(反編譯神馬的)、圖形圖像處理4、對移動互聯網或說App開發的產品、用戶體驗有較好把握5、還有什麼,比如git上那些著名的開源庫,說實話我可能都看不懂,那這些人寫出來是基於他們具有什麼樣的能力,他們是怎麼做到的?
或許還可以換個思路,從僱主角度說,公司招更好的iOS程序員,是看中了他們能提供哪些普通程序員給不了的呢?這也就是更好的iOS程序員的價值在哪?還是現在的公司並不願意花大價錢請一個只做App的程序員,iOS的天花板挺低的? 如果解決了這些問題,我也就知道該朝哪個方向有了。路怎麼走之前,還是得先看清該朝哪走。最後,是不是只做iOS會很局限,是否具有一點其他方面的能力會有顯著提升,比如配合安卓、比如配合後台開發?
iOS開發如何快速成長?
NO.1 毫無疑問,做有難度的項目.
當時正在快樂的當一隻小菜雞的我沉浸在了解了delegate原來是回調的意思正充滿著滿滿的幸福感的時候,被產品告知必須完成以下幾個功能.
- 完成類似於vine的短視頻錄製功能和畫中畫(我記得當時vine的版本只到1.X),而且AVFoundation什麼的完全沒聽過.
- 完成City Guides里的地圖動畫.(如果有不清楚這個的去appstore下一個國家地理雜誌出的City Guides,你可以觀摩一下地圖的交互設計)
- 做一個扇形的menu,開啟和閉合的動畫參考真實世界的扇子打開和收起.
- TableView的background用實時動態模糊效果(當時是iOS6.0,完全不知道動態模糊大概是什麼樣的)
- 尋找不規則範圍里的所有基於GPS的搜索結果.(當時我們有個創意是用戶隨便用指頭上一划,我們提供這個區域內的所有相關搜索結果).所有的東西在兩個月內完成.結果是,不管完成度如何,我在兩個月後東拼西湊都給他弄出來了.
通過找短視頻錄製,我知道了AVFoundation,視頻剪輯.
通過模仿CityGuides的地圖,我知道了他們的地圖是用一個叫做mapbox的第三方地圖做的.因為我用了google地圖,高德地圖,百度地圖和原生地圖,都不支持custom tiles.大致了解了LBS的東西.通過做實時動態模糊,我知道了有個第三方庫叫GPUImage,也知道了有個東西叫CADisplayLink.通過做扇形menu,我學會了CoreAnimation和貝賽爾曲線.通過搜索在不規則範圍內的所有點,我知道了射線法.試想一下,如果你做的是一個界面粗糙,邏輯簡單,交互乏味的app, 那麼相應的,從中獲取的東西肯定是不多的.所以,當你的技術進步緩慢的時候,很可能就是缺乏挑戰的時候.
NO.2 盡量少抱大腿,或者壓根就別抱大腿
不知道你們有沒有這種體會,在你尋找問題A的答案,不停的網上搜索,閱讀代碼的時候很多時候可能會順帶的把困惑已久的問題B和問題C的答案找到了.這時候往往會恍然大悟,哦,原來還能這麼寫.那麼如果你的公司恰巧有個大牛,基本功紮實,業務邏輯爛熟於胸,態度溫和,來者不拒.你每每碰到什麼問題過去問,總能得到完美的解答,甚至大牛會幫你"結對編程",直接代碼都給你敲了.你肯定會感到幸福爆棚.但是,這意味著,你喪失了很多觸類旁通的機會.我當年也是比較迷信各種大牛的,加了很多開發群,有問題積極提問.後來就感覺這樣很蠢.1是答者寥寥,頂多給你提個方向.2是感覺就算是技術很好地人,在不了解你代碼的情況下也不大可能直接告訴你正確答案.所以,凡事靠自己,是個很好地習慣.少麻煩別人,還能促使自己進步.何樂而不為呢?NO.3 多讀源碼
大家對讀源碼有個錯誤的認知,覺得不讀懂每句話就不叫讀源碼.其實不是這樣的,你完全可以用讀網路小說的態度來讀源碼,覺得這段寫的看不懂,你看的不爽,直接略過.用五柳先生的話就是,不求甚解.
這樣反覆看反覆看,而且隨著平時代碼量的增加,有些以前看不懂的地方也會慢慢豁然開朗,當然,該查的地方還是要查,也不能略過略過的把所有代碼都略過了.但是讀源碼也不能盲目的看,最好是看和最近的工作相關的.比如,你最近在搞一些與網路聯繫比較緊的項目,那肯定要找AFNetworking這種經典的來看.如果最近在搞圖像處理,那肯定要找GPUImage或者CoreImage方面的源碼來看.因為這樣和項目結合比較緊,你看的代碼和你寫的代碼很容易結合在一起,事半功倍.NO.4 多讀國外的iOS開發網站和blog
翻牆軟體肯定是要有的.你要知道,第一手的開發資料永遠都是英文的,而且以英語為母語的開發者學起新技術來有天然的優勢.舉個例子,最早我有個法國同事(雖然法國人的英語普遍比較爛),學習新技能可以用神速來形容,以前開發的一個模塊需要用到cocos2d,他花了不到一個周的時間就自學cocos2d把東西搞出來了.
要把看Raywenderlich和nshipster還有http://objc.io當做生活習慣來看.而且現在的國人開發環境真的比早年的程序員幸福太多了.swift剛出沒到一個月就有團隊全部翻譯完了那本官方指南.所以,現在學不好編程是沒有任何借口的.而且,說自己英語不好而拒絕看英文文檔的人,我感覺完全是態度有問題.這種文檔類的資料,基本沒有俚語或者日常用語,高中的那些英文基礎都夠用了,隨時備一本詞典,隨看隨查,是完全沒有問題的.NO.5 要孜孜不倦的學習
有句話叫技多不壓身,編程本來就是一個更新換代非常快的工作.每年都有新的技術出現,我認為要成為一個出色的程序員只掌握一門語言肯定是不行的.那麼,要怎麼選擇自己的第二門,甚至第三門語言呢?
我覺得要靠自己多試試,從12月份一直到15年2月,我一直在嘗試不同的語言和框架,從node.js到golang到python,中間還學了一點點erlang.我覺得最適合iOS開發的第二門語言是python,python真的是太好用了,而且天然的適合unix系統,語法簡單,各種五花八門的庫,不誇張地說,應有盡有.學好了python,用處極大.1是python與unix系統結合的特別好,你可以用python寫很多腳本來提高自己的工作效率.2是python入門極快,買一本headfirst的python教程,很快就能學會.3是python的就業前景也非常好,就算你以後想轉行,python的待遇也不比iOS差多少.希望大家在閑暇的時候可以找一門自己感興趣的語言學習.最後在新的一年,祝大家技術每天都有進步,技術和money雙豐收.
這個階段算是碼農的第一個迷茫期了。日常的需求都可以應付得來,對什麼東西都大概知道一些,覺得自己也能搞得定。
我建議你,後面的工作從「極致」方面去下功夫。
1、極致的體驗。按鈕怎麼擺放是合理的?顏色的搭配有什麼道理可講么?頁面之間的邏輯是否完整?用戶按照自己的習慣來使用軟體時,是否有不爽的地方?這些都是要做到極致體驗需要面對的問題。碼農必須要懂體驗,才能承擔更大的責任,這些都是常年累月,一點一滴去積累的。2、極致的質量。你的Crash到0.1%的底線了么?如果沒有,先把這個基礎目標做吧。往往最難解決的Crash才是鍛煉實力的。3、極致的性能。你的App是否運行N個小時也沒有內存泄漏?你的App的網路請求速度是否可以再提升?是否還在干著每打開一個頁面都需要N個請求同時發送的事?是否可以用IP替換域名?請求是否可以合併,冗餘數據是否可以再縮減,為用戶再節省一些流量和時間?4、極致的結構。業務層和基礎架構層的解耦是否做的比較徹底?能否最大程度上表現出了業務擴展的靈活性?是否存在相似的代碼來回copy的情況。如果業務需要立即來啟動一個新的App項目的話,能否使用現在的積累快速啟動起來?我沒有開發過IOS,不過我覺得技術大都是相同的,提高的方法也異曲同工
無外乎看書-做項目-看書-做項目
到了後期,基本的技術已經不是問題了,更重要的是解決問題的思路,諸如演算法,底層,優化,就是這一類東西,更上一層,還有技術反哺產品的思考。
其實我覺得各行各業最頂尖的人才都是相似的,除了各自的專業技術外,還需要優秀的領導,合作,溝通能力,以及責任心。
回到技術這來,我認為提高技術最快的方法就是做項目,不要去一般的威客網站找那些沒難度的項目,浪費你的世界,賺的錢也不多。要做對自己有挑戰的項目,經驗有時候比錢更重要,當然,如果還有不菲的報酬就更好了。
最後打個硬廣,我們正在做的項目叫做 程序員客棧 - 為程序員服務 做好程序員的經紀人 ,前期對接我們篩選過的靠譜外包和優秀程序員,還有程序員之間的交流平台,希望對你有幫助。羅列N本書、M種技術、Github、寫博客啥的,還有各種雞湯都不靠譜找一個技術氣氛好的團隊,團隊的交流和學習氣氛才是最快速、最靠譜的提高方式
iOS開發的門檻在降低,但天花板卻原來越高,永遠都有學不完的新東西出現。
如何提升:1.提升代碼質量,讓自己的代碼不斷的變得可讀性強且邏輯嚴密2.提升架構能力,架構設計是個循序漸進的事情,好的架構一定是最符合當前項目的階段且具有一定的靈活性,能適應半年內項目的變化。不要想著一步到位,這種很容易變成過度設計。3.深入研究牛逼的框架,要知其然並知其所以然。4.以上所有,包括寫任何一行代碼,都請動腦子想清楚。不動腦子,就算寫10年代碼水平也不會有多大提高。如何算精通:
1.只要看到別的app里可以實現的,你就知道如何實現,或者知道從哪裡入手。2.看到需求後,能在短時間內評估工作量,且能按時或提前完成,且無bug優秀的工程師,不只是能夠解決問題,更應該不要創造bug我覺得iOS的天花板並不低 作為移動端開發的標杆 蘋果一直在推出新的技術 iWatch 智能家居 NFC等等未來想像空間很大 iOS開發並不簡單等於開發個手機APP
李明傑弄的一個進階圖
提升自己沒有什麼太大的捷徑動手和思考是最最重要的,想想自己有沒有什麼想做的創意,順著開發的流程,思考整個項目,嘗試開發整個項目,個人覺得做自己感興趣的東西是提升比較快的
推薦閱讀:
※網易最成功的移動互聯網產品是什麼?
※你看過哪些最具諷刺意義的圖片?
※谷歌是怎樣的一家公司?
※如何看待手機QQ部落的興趣社交?
※戰艦少女台服是否成功了?