不知不覺,做 iOS 開發(fā)也有一年多時間了,算是經(jīng)歷了從入門到初級的過程,最近也感到些許迷茫,不知道以后的路怎么走。下周馬上就要加入一家新公司去獨立開發(fā)一個項目了,希望接下來這一年能有不錯的收獲,交得出一份拿得出手的成績單。趁這兩天有空,找了些業(yè)內(nèi)前輩們的經(jīng)驗分享,看看他們怎么說的,希望自己能靜下心來,一步一個腳印走下去吧!
- 勇于接受挑戰(zhàn),實現(xiàn)有難度的需求
“不管完成度如何,我在兩個月后東拼西湊都給他弄出來了?!?/p>
- 可以接觸到新知識
- 鍛煉自學(xué)能力
- 借鑒一些優(yōu)秀的作品
- 學(xué)習優(yōu)秀的實現(xiàn)方案/第三方庫
“第一手的開發(fā)資料永遠都是英文的,而且以英語為母語的開發(fā)者學(xué)起新技術(shù)來有天然的優(yōu)勢?!?/p>
有句話叫技多不壓身,編程本來就是一個更新?lián)Q代非??斓墓ぷ?每年都有新的技術(shù)出現(xiàn),我認為要成為一個出色的程序員只掌握一門語言肯定是不行的。
- 打好基礎(chǔ)
- 研究一個自己感興趣的領(lǐng)域
- 學(xué)習一門自己感興趣的語言
學(xué)習的圈子特別重要?。?/strong>
作為一個開發(fā)者,有一個學(xué)習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼'博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗,討論技術(shù), 大家一起交流學(xué)習成長!
- 從開始學(xué)習 iOS 開發(fā)半年后,就開始獨立負責 iOS 端的開發(fā)工作。
-
從 2013 年 1 月創(chuàng)建「iOS 開發(fā)」微信公眾賬號,然后每周堅持更新,現(xiàn)在有超過 3 萬 5 千的訂閱量。
-
從 2013 年底開始撰寫《iOS 開發(fā)進階》,2014 年底完成。另外我還寫了一年多 「iOS 開發(fā)周報」。
-
將公司的網(wǎng)絡(luò)庫,Key-Value 存儲庫開源,GitHub 上 Star 數(shù)上千。
-
堅持寫 iOS 技術(shù)博客,現(xiàn)在完成了超過 100 篇原創(chuàng)文章,很多發(fā)表在 InfoQ 和 《程序員》雜志上。
-
入門:斯坦福的 iOS 開發(fā)視頻課程
-
尋找志同道合的朋友,一起交流、討論、分享
-
提高:
-
看 WWDC 視頻
-
做筆記
-
讀優(yōu)秀 iOS 博客
-
寫作
-
心得:
-
利用好碎片時間
“在我看來,當你做不好某一件事情時,時間通常是最大的借口?!?/p>
- 提高工作的效率,使用番茄工作法,讓自己能夠在短時間內(nèi)集中精力做一件事情
- 寫代碼之前,先在紙上把邏輯寫清楚
- 平衡好時間和代碼質(zhì)量
- 培養(yǎng)習慣
“不止是個人,組織的協(xié)作也應(yīng)該培養(yǎng)習慣?!?/p>
“把大目標拆分成小的階段性目標這一點很重要,它使得整體的時間安排是適當?shù)?,不會剛開始過緊或過松。另一方面,很一次完成小任務(wù)的滿足感,可以適當讓我們的大腦產(chǎn)生喜悅,最終使得任務(wù)更容易被搞定。”
“總會有一些事情,你不那么容易找到目標和成就感。”
- 閱讀高質(zhì)量的博客
- 讀經(jīng)典書籍
- 看 WWDC 視頻
- 看蘋果的官方文檔
- 看優(yōu)秀開源項目的代碼
- 多寫代碼,多思考
- 多和同行交流
- 樂于分享
- 上帝模式的技巧: 寫代碼前,構(gòu)思好整個應(yīng)用的架構(gòu)設(shè)計,如何進行類之間的組織和信息的傳遞。
“在軟件開發(fā)書籍中,涉及上帝模式的圖書也有很多,例如《設(shè)計模式》和《重構(gòu)》,但是好的架構(gòu)都是無法脫離實際業(yè)務(wù)的,所以大多數(shù)程序員都無法通過簡單地看書就提高自己的上帝模式的能力,更多的提高方式是工作一段時間,有一些實際體會之后再看書,就能夠理解書中的道理?!?/p>
- 先學(xué)習 Objective-C 還是 Swift?
“其實不論是 Objective-C 還是 Swift,現(xiàn)在的目的都是寫 iOS 和 OSX 的 app,那么其實對于絕大多是情況來說,語言本身并不是非常重要,使用語言去和 Cocoa 以及 CocoaTouch 交互才是我們?nèi)粘i_發(fā)中最常用到的技能。Cocoa 的編程思想并沒有隨著語言的變化發(fā)生什么大改變,所以還是應(yīng)該把對于框架的學(xué)習放在首位?!?/p>
- 現(xiàn)在用 Objective-C 寫,怎么為以后學(xué) Swift 做鋪墊呢?
“現(xiàn)在可能在工作中使用 Objective-C 的開發(fā)者還是占大多數(shù),我的建議是在使用 Objective-C 的時候,也順便可以“想象”一下如何用 Swift 更好地實現(xiàn)同樣的事情。如果不是特別趕進度的話,甚至可以再用 Swift 真實地實現(xiàn)一遍。因為兩種語言最大的區(qū)別就是 Swift 擁有更強的類型檢查和安全性,所以如果能夠特別關(guān)注這點的話,之后快速切換到新的語言去就不會有什么問題。”
- 對于學(xué)習Swift的開發(fā)者,入門以后應(yīng)該如何進一步提高?
“可以盡快開始動手實踐開發(fā)一些 app。給自己定一個目標,比如花上幾天時間或者一周的時間用 Swift 做一個能上架的簡單 app 之類的。這個 app 不需要有特別復(fù)雜的功能,可能就是一個簡單的天氣查詢提醒,或者是展示附近好吃又便宜的餐飲店面。與簡單地寫個 demo 相比,實際做一個真正的 app 對能力的提升所在的層次是完全不同的,后者需要更多的全局考慮和綜合能力。不少問題只有在實踐中才會遇到,才會被解決,而對應(yīng)的能力也才能被提升。所以入門之后進一步提升的最好的路子就是實踐,然后在實踐中再去學(xué)習沒有掌握的剩下的東西。
另外要注意的是,因為現(xiàn)在 Swift 還很新,很多東西并沒有現(xiàn)成的方案或者所謂的最佳實踐。在遇到這樣的情況時,最好詢問下你身邊的資深 iOS 或者 Objective-C 的開發(fā)者。因為 Swift 和 Objective-C 其實是共通的,很多經(jīng)驗是可以參照借鑒的?!?/p>
“從我自己的體驗來看,參與開源項目對于程序員來講是一種高效、快速學(xué)習成長的方法,不僅如此,如果你是一個技術(shù)愛好者,參與開源項目你有可能找到自己的興趣、自己的優(yōu)勢等等,進而從事自己喜歡的工作,那種感覺真的太爽了?!?/p>
“另外參與開源在提升團隊協(xié)作能力上有著比較明顯的作用,一個有用的Issue反饋、有效的交流以及熱情的幫助都會讓我們成長,從而運用到團隊協(xié)作中去,那這個收獲可見而知,不但讓你在團隊中突出,還能讓你認識很多大神?!?/p>
“另外對于一些工作繁忙的程序員,平時忙于公司的項目,空余時間通過側(cè)面的形式(參與開源),也是提升自己整體能力一個很不錯的方式。”
“參與開源的樂趣就是能把自己的優(yōu)勢或缺陷分享出去,并且會有人欣賞你、糾正你、譴責你?!?/p>
“一個成功的開源項目,僅有自己一個人往往是不夠的,通過多人合作的模式,把各自優(yōu)點發(fā)揮出來,共同去維護一個有價值的、可持續(xù)發(fā)展的開源項目,最后得到收獲將遠遠大于付出。”
成長之路:基礎(chǔ)->入門->進階->高級
- 每個階段都要有相應(yīng)的目標和學(xué)習方式、內(nèi)容
- 英語
- 書籍
- 視頻
- 練習
- 博客,網(wǎng)站
- 優(yōu)秀源碼
- 官方文檔,WWDC
- 工具
“我覺得無論學(xué)習什么,「速成」的心態(tài)是最要不得的,這只會讓自己變得浮躁,一知半解,整個過程也很難讓自己的元學(xué)習能力得到提升。慢慢來,攻占一個城后,再去打下一個,這時心態(tài)也會平和許多?!?/p>
- iOS開發(fā)者應(yīng)該如何規(guī)劃自己的職業(yè)發(fā)展路線?除了iOS之外,是否需要學(xué)習其他方面的技術(shù)?
“這個問題問得很好。我工作快有10年了。而iOS職業(yè)開發(fā)也就剛做滿3年,呵呵。其實我覺得如果大家想往技術(shù)方向發(fā)展,那么首先要做的還是把基礎(chǔ)打好。把基礎(chǔ)打好之后,能應(yīng)付各種新的編程語言,各種處理器、各種操作系統(tǒng)平臺。所以我建議大家在業(yè)余時間里把傳統(tǒng)的大學(xué)里所學(xué)的科目再鞏固好,比如操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)理邏輯、計算機體系結(jié)構(gòu)、匯編語言、C語言、網(wǎng)絡(luò)通信、數(shù)據(jù)庫。此外,大家也可以再熟悉一下HTML5相關(guān)技術(shù),畢竟iOS所涉及的大多數(shù)都是移動互聯(lián)網(wǎng)領(lǐng)域,所以有點HTML5知識的話會更好些。如果自己感覺C語言學(xué)得還不咋樣可以再鞏固它。C語言就是計算機編程領(lǐng)域里的數(shù)學(xué),是所有類C編程語言的鼻祖語言,而且從TIOBE排名上大家也能看到,它目前一直處于第一位。另外,Objective-C完美無縫地兼容C語言,就從這點上來說,C語言仍然是十分重要的。
C、Objective-C與Swift的關(guān)系是:Swift是對Objective-C的封裝,盡管這封裝得改動很大,以至于你確實看不出它仍然是類C 語言;而Objective-C則是對C語言的封裝,在C語言的基礎(chǔ)上又添加了面向?qū)ο笠约胺瓷鋭討B(tài)特性。所以,學(xué)好了C對于iOS開發(fā)來說非常有幫助。
上述主要是講iOS職業(yè)技術(shù)開發(fā)者如何能進一步提升技術(shù)能力。其實歸根結(jié)底,就是把基礎(chǔ)打好,然后可以嘗試去專某一更專業(yè)的領(lǐng)域,比如通信領(lǐng)域、3D圖形領(lǐng)域、圖像識別領(lǐng)域等。因為大凡做iOS的基本都是在應(yīng)用層上搗鼓,應(yīng)用層老實說做個一年兩年能基本掌握,再繼續(xù)下去對技術(shù)提升不大。
有些iOS開發(fā)者想要提升自己在公司的地位,我覺得很大程度上取決于自己對所在公司的核心業(yè)務(wù)的了解情況。對于中小企業(yè),產(chǎn)品設(shè)計人員以及策劃不可能把產(chǎn)品描述得很細,有不少地方需要開發(fā)者對設(shè)計意圖做思維擴展。如果你對自己公司的企業(yè)文化、工作流程、核心業(yè)務(wù)邏輯都能很好把握的話,就能夠做出超出期望的產(chǎn)品,再加上好好處理人際關(guān)系,要提升地位也不會是很困難的事情。
當然,我碰到比較多的還是很多年輕的開發(fā)者對未來感到迷茫,不知道今后的路該怎么走。所以,我認為對于那些開發(fā)者自己先把心沉靜下來,然后把基礎(chǔ)打好,然后思考自己今后的技術(shù)走向。畢竟,iOS開發(fā)在很長一段時間以內(nèi)都將是熱門的技術(shù)崗位。
要想向更高的職位發(fā)展,除了技術(shù)之外,我認為還要有對產(chǎn)品的把控、甚至市場新動向的嗅覺。既然已經(jīng)在這個行業(yè)了就必須學(xué)會如何不斷學(xué)習,快速應(yīng)變市場的新熱 點。目前app開發(fā)處于快速發(fā)展變化的移動互聯(lián)網(wǎng)的中心,開發(fā)者有機會做出引領(lǐng)潮流甚至改變世界的作品,這些經(jīng)歷本身就是寶貴的財富,只要打好基礎(chǔ),做足 準備,抓住機遇,未來的前途一定是光明的。”
-
飽覽群書:高質(zhì)量,英文書籍,博文,WWDC,斯坦福公開課,github,stackoverflow
- 跟著項目一起成長
- 與同行交流
- 做一些分享
11.學(xué)習的圈子特別重要??!