摘要:本文作者沒(méi)有計(jì)算機(jī)學(xué)位,也沒(méi)有專業(yè)開(kāi)發(fā)經(jīng)驗(yàn),但只用了30天就學(xué)會(huì)了Swift,使用Swift開(kāi)發(fā)出應(yīng)用并通過(guò)了蘋(píng)果公司的審核。本文詳細(xì)記錄了他為什么選擇Swift、如何學(xué)習(xí),以及羅列了Swift的學(xué)習(xí)資源。
確切地講,我是30天前開(kāi)始學(xué)習(xí)swift的。3天前,我開(kāi)發(fā)的第一個(gè)應(yīng)用程序通過(guò)了蘋(píng)果公司的審核。相比其他事情,這一開(kāi)發(fā)過(guò)程并不算什么,但是對(duì)我而言,卻是一個(gè)巨大的成就。
我沒(méi)有計(jì)算機(jī)的學(xué)位,也沒(méi)有專業(yè)的開(kāi)發(fā)經(jīng)驗(yàn),但是在過(guò)去的5年中,我一直在一個(gè)開(kāi)發(fā)團(tuán)隊(duì)中擔(dān)任產(chǎn)品經(jīng)理。因?yàn)榕d趣,曾經(jīng)也用Ruby寫(xiě)過(guò)一些Rails應(yīng)用。我一直想和我的工作有一個(gè)更直接的聯(lián)系,所以我決定開(kāi)始編程。
為什么選擇iOS和Swift
- 移動(dòng)市場(chǎng)是巨大的;手機(jī)是個(gè)人的。我想開(kāi)發(fā)一些對(duì)用戶切實(shí)有用的軟件,并且我非常喜歡人們與手機(jī)之間的親密關(guān)系。我們的手機(jī)非常了解我們——它知道我們什么時(shí)候醒來(lái),什么時(shí)候睡覺(jué),在什么位置,是怎么到達(dá)這個(gè)位置的,我們的日常安排、我們與朋友、家人的談話內(nèi)容,甚至更多。因?yàn)槲乙恢笔褂锰O(píng)果產(chǎn)品,所以很自然地選擇從iOS開(kāi)始。前段時(shí)間,我嘗試了下Objective-C,發(fā)現(xiàn)它的地位正在受到威脅,因?yàn)镾wift一直很受歡迎。
- 良好的約束。專注于蘋(píng)果平臺(tái)和在適用于口袋般大小的屏幕開(kāi)發(fā)提供了良好的約束。這些約束讓我很好的專注在需要學(xué)習(xí)的技術(shù)上(相對(duì)于永無(wú)休止的網(wǎng)頁(yè)開(kāi)發(fā)),還促使我把創(chuàng)造力聚焦在用戶體驗(yàn)上。
- Swift是一門(mén)快速進(jìn)化的語(yǔ)言。我喜歡看著事物從底層開(kāi)始成長(zhǎng)和發(fā)展,并參與其中,這也是我為什么喜歡在初創(chuàng)公司里工作的原因。有些事情能夠使一門(mén)不成熟的語(yǔ)言日趨完善,我加入到一個(gè)小團(tuán)隊(duì)一起去嘗試解決那些有待完善的問(wèn)題。我很興奮能有可能為這門(mén)語(yǔ)言和社區(qū)做出個(gè)人的貢獻(xiàn)。
入門(mén)資源
7月1號(hào)當(dāng)我開(kāi)始我的學(xué)習(xí)之旅時(shí),我已經(jīng)有了一個(gè)開(kāi)發(fā)一款簡(jiǎn)單應(yīng)用的想法。就我的初衷和當(dāng)時(shí)學(xué)習(xí)情況而言,帶著這一想法是非常有幫助的。
我花了很長(zhǎng)時(shí)間在網(wǎng)上搜索有關(guān)Swift的最好的資源、教程和課程。對(duì)于初學(xué)者來(lái)說(shuō),網(wǎng)上有很多好的資源, 但大多數(shù)都是假定你從沒(méi)有看過(guò)一行代碼,并開(kāi)始得非常緩慢,比如介紹什么是變量,變量如何跳轉(zhuǎn)等。另外還有一些都是技術(shù)文章和參考資料(包括蘋(píng)果的官方文檔),這些貌似只有那些有豐富經(jīng)驗(yàn)的或者是從Objective-C轉(zhuǎn)到Swift的同學(xué)能夠看得懂。
最終,我還是找到了適合我這樣初學(xué)者的資源,以下是我找到的一些最有用的:
- Paul Hegarty的斯坦福課程:Developing iOS8 Apps with Swift (用Swift開(kāi)發(fā)iOS 8應(yīng)用)。這個(gè)在iTunesU上是免費(fèi)的。我是從學(xué)習(xí)這個(gè)課程開(kāi)始的,并僅在一周之內(nèi)就完成了前5節(jié)課和第2個(gè)作業(yè)。課程很快就變得很有挑戰(zhàn)性了,所以當(dāng)我小試牛刀之后,我暫停了我的進(jìn)度,去學(xué)習(xí)更多的實(shí)用教程。但是這真的是一個(gè)很棒的課程,Hegarty教授真的有兩把刷子,以至于我現(xiàn)在都打算重新回顧一遍。如果你被一個(gè)問(wèn)題難?。ú灰TunesU上找解決方案),這(http://cs193p.m2m.at/)是一個(gè)很有幫助的網(wǎng)站,會(huì)解釋每個(gè)問(wèn)題并有解決方案。
- 蘋(píng)果的官方文檔:The Swift Programming Language (Swift編程語(yǔ)言)。如果在這之前你有編程經(jīng)驗(yàn)的話,相比與蘋(píng)果的iOS SDK文檔,這本關(guān)于Swift語(yǔ)言的書(shū)還是很容易讀的。它清楚而簡(jiǎn)潔,可以快速瀏覽,當(dāng)你遇到問(wèn)題時(shí),可以很快地找到對(duì)應(yīng)的參考概念。這個(gè)網(wǎng)站(Big Nerd Ranch)為他們的Swift訓(xùn)練營(yíng)成員提供了一些課前文件(pre-reading assignment),包含了一些類(lèi)似概念的內(nèi)容,還有面向初學(xué)者可實(shí)現(xiàn)的實(shí)例。
- www.raywenderlich.com。這個(gè)看起來(lái)像是個(gè)花花公子的個(gè)人網(wǎng)站,但是不要被它迷惑了。這個(gè)網(wǎng)站是我訪問(wèn)過(guò)的最好的學(xué)習(xí)資源網(wǎng)站。如果你從沒(méi)有創(chuàng)建過(guò)iOS應(yīng)用,就從注冊(cè)這個(gè)網(wǎng)站開(kāi)始吧,你可以獲得簡(jiǎn)報(bào)和經(jīng)典的教程——這些教程會(huì)讓你感到如史詩(shī)般。只要你愿意,你絕對(duì)可以在一天之內(nèi)完成它。這些教程使我第一次投入到神秘的iOS開(kāi)發(fā)中,它揭開(kāi)了許多很容易讓初學(xué)者氣餒的謎團(tuán),當(dāng)我使用Xcode編程時(shí),它會(huì)給我很多特性和功能上的啟發(fā)。當(dāng)你完成第一個(gè)教程之后,網(wǎng)站還會(huì)提供大量額外的免費(fèi)教程。我可以從中挑選一些去學(xué)習(xí),以滿足我開(kāi)發(fā)應(yīng)用的需要。這里有如此多的很棒的資源,讓我迫不及待的要去學(xué)習(xí)。
我大致的時(shí)間安排:
- 第1周:入門(mén)。我快速地投入到斯坦福課程的講義和任務(wù)中,我通讀了大量關(guān)于Swift語(yǔ)言的書(shū),并且完成了raywenderlich.com網(wǎng)站上的經(jīng)典教程。在這之后,我感覺(jué)我已經(jīng)準(zhǔn)備好開(kāi)始開(kāi)發(fā)我的應(yīng)用了。
- 第2-3周:磨礪。就從我開(kāi)始開(kāi)發(fā)我的應(yīng)用的那天起,我也開(kāi)始了在緬因州的一艘帆船上的12天之旅。與咖啡和平靜的水面相伴,我每天早上都會(huì)花幾個(gè)小時(shí)在我的應(yīng)用上。由于沒(méi)有網(wǎng)絡(luò),我唯有專注在代碼上,而不是在40個(gè)網(wǎng)頁(yè)之間來(lái)回切換,這使我停下來(lái)去思考我在嘗試做的事情及其原因。這些天我發(fā)現(xiàn)我一直在考慮我的代碼,并迸發(fā)出新的思路,并渴望在第二天早上嘗試它們。
- 第四周:我真的做到了。經(jīng)過(guò)一段緩慢的學(xué)習(xí)過(guò)程,我進(jìn)入了高產(chǎn)階段,當(dāng)我一天的成果超過(guò)之前幾周的總量時(shí)我倍感驚訝。最后一天,我清理了我的代碼,并跑通了一些詭異的邊界測(cè)試用例,這讓我出奇的滿意。作為一名產(chǎn)品經(jīng)理,每當(dāng)我把任務(wù)分配給很多工程師時(shí),我會(huì)為此感動(dòng)擔(dān)憂。當(dāng)我有能力自己去完成時(shí),我感覺(jué)非常棒。最后我在Sketch上創(chuàng)建了一個(gè)簡(jiǎn)單的應(yīng)用圖標(biāo),根據(jù)引導(dǎo)把應(yīng)用上傳到iTunes Connect上,并提交給蘋(píng)果審核,不到24小時(shí),我就通過(guò)了審核。
7月(通過(guò)RescueTime記錄),我在Xcode上花了25小時(shí),在iOS模擬器上花了2小時(shí)52分,在Preview上花了4小時(shí)23份(閱讀教程),還有51分鐘花在Stack Overflow上。另外我還在手機(jī)上讀了許多資料。
Swift 社區(qū)
為了融入Swift 社區(qū),我還做的其他的一些事情:
以上是我發(fā)現(xiàn)的有助于學(xué)習(xí)Swift的資源。如果你有其他好的資源,請(qǐng)?zhí)砑釉u(píng)論并注明你喜歡它什么以及好在哪里(譯者/程林)。
原文來(lái)自:Medium