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