心中有無數好點子,但因為不會程式設計無法實現?確實,這是許多小夥伴心中最大的遺憾。明明想要做一款滿足自己需求的工具,但一開啟程式設計教學,就一頭霧水。
“這是個啥?為什麼不能這麼做?那又是個啥?”這樣的靈魂三問,在小黑學習Python的時候頻頻出現,而當小黑決定上網檢視教程的時候,卻發現要麼課程昂貴,要麼不那麼易懂。這些因素,都直接導致了小黑最終放棄程式設計的學習。
大麥是一位剛剛透過自學完成了人生中第一個iOS應用的開發的新晉開發者。在他的眼中,只要找對了學習的工具和方法,並且抱有對自己的靈感有長期、堅持的熱情,學會應用的開發並不是一件太難的事情。
如期而至是一款什麼樣的應用
雖說如期而至才剛剛釋出不久,但在App Store中,它已經獲得了不少好評。在眾多的好評中,有一條吸引了小黑的注意:
確實,和這位使用者一樣,小黑也有不少個人習慣因為找不到一款優秀的工具應用,只能用筆記本或是其他應用代替,並常常萌發出自己做一個應用的想法。
當然,有了學Python半途而廢的前車之鑑,這一想法也只是停留在想法層面,直到在和大麥聊過之後,才又有了重新入門的勇氣。
這是一款專注於記錄商品保質期、事情截止日期的應用,在App Store上可以免費下載,解鎖完整功能則需要一次性付費12元。
如期而至的介面設計非常簡潔,小黑大致算了一下,除去啟動介面外,整個應用只有四個介面,預設配色採用了白色與鋼藍色的搭配,顯得質感十足。
應用的首頁中,就為我們展示了應用的所有內容:物品資訊、增加新內容,歷史物品以及設定。
總的來說,這款應用的功能雖然簡單,“確實”是一款新手開發的iOS應用,但該考慮到的細節卻一個都不少。
▲ 物品保質期的詳細資訊
在我們填寫完商品的生產日期和有效期後,應用會自動為我們計算出使用截止日,不僅適合用來記錄保質期,連會員的有效期、物品的保修期也都可以用它來記錄。
說到這裡,有數鳥App的開發者Bourne兄是不是瞬間瑟瑟發抖了呢?
功能上的完整度,其實是每個應用開發者都必須考慮到的基礎,如期而至這款應用真正讓小黑感到驚訝的,是它實現了非常流暢的應用動畫,小黑隨便選擇了兩個為大家展示一下。
從上面這兩個動圖可以看出,如期而至中的動畫效果都比較順暢,頁面的回彈也給人以舒適的觀感。
在小黑對應用製作的有限瞭解中,雖然動畫效果的製作並不困難,但對它進行不斷除錯直到獲得最佳觀感的過程,卻是非常耗時的,從中我們不難看出大麥在細節方面的用心。
從小白到入門,開發iOS應用要怎麼上手?
在大麥分享他的心得之前,小黑覺得有必要先介紹一下蘋果推出的Swift程式語言。在小黑對Swift進行了簡單的瞭解之後,對程式設計又有了全新的認識。
Swift這一程式語言擁有語法簡潔的特點,使閱讀與維護變得更加簡單。對初學者來說,更重要的一點是它擁有使用前自行檢查的能力,讓使用者得以提前規避可能出現的部分BUG。
▲ Swift程式語言更直觀、更簡潔、更安全
而2019年SwiftUI的問世,更是讓程式設計變得簡單易學。
▲ SwiftUI有了最近熱門的“低程式碼”開發的影子
當然,這些能力都不是讓Swift程式語言強大的關鍵因素,真正的關鍵因素還要歸結於它在兒童程式設計教學上做出的巨大努力。
小黑之前曾經在文章《把愛奇藝變回生產力,你只需要這個工具》中提到過蘋果針對兒童和成人推出的兩項不同的程式設計學習指南:《人人能程式設計》系列和《使用Swift開發》系列。
▲ 蘋果推出的《使用Swift開發》
在小黑的印象中,這應該是極少數由程式語言官方所提供的涵蓋了兒童到成年全年齡段的程式設計指導教材,其中的內容都按照不同年齡的層次做了不同的改動。
特別是針對兒童的程式設計入門,我們可以透過邊遊戲邊學習的方式進行,非常適合親子之間寓教於樂。
▲ 2019年在Apple Store舉辦的人人能程式設計線下課程
而在程式設計進階領域,蘋果官網還提供了示例程式碼庫供開發人員參考、提高,還有斯坦福大學和普利茅斯大學的相關程式設計課程可供觀看。
▲ 斯坦福大學提供的Swift程式語言學習課程
只不過對中國觀眾來說,這些課程和資料都有一個比較大的遺憾之處,就是僅提供了英文資源,並且影片是在YouTube上播放的,國內使用者很難正常觀看。
雖然有這種種限制,但我們依然可以看到蘋果公司在提高公眾教育方面做的努力。
開發者訪談:從放棄到掌握,需要幾個步驟?
當同樣對開發應用有濃厚興趣,並同樣有放棄經歷的小黑遇到大麥時,腦海中積存的問題一股腦地就倒給了他,而大麥也對這些問題做了非常詳細的回答。那麼,就讓我們來看看,對自己的學習經歷,大麥是怎麼說的吧。
Q:在採訪的開始,先請您簡單的介紹一下自己和如期而至這款應用吧。
A:大家好,我是大麥(微博@嘰裡呱啦大麥),是一個混了7年的影片工具人,半路出家的果粉。15年開始用了iPhone之後被蘋果的應用生態深深吸引,發現手機能透過一款應用去幫助人們改變生活狀態,這是多麼奇妙的事情,便有了想自己開發應用來實現手機更多價值的想法。去年花了一年的業餘時間自學了SwiftUI,開發了「如期而至」這款可以用來記錄事物過期時間的APP,功能是對生活中容易忘記日期的物品進行記錄和管理。
Q:是什麼原因促使您開發這款應用的呢?
A:主要原因就是我和女朋友都比較愛囤貨,家裡東西太多,有時候整理完還是會忘記東西放在哪裡,等下次翻出來看到的時候,大機率就是已經過期了。所以那個時候就很想做這麼一款可以記錄我家這些容易被忘記的東西,能直觀看到每個物品還有多久過期,或者在快到期前進行提醒,也不是說記錄之後就非要在保質期裡逼迫自己吃完/用完。而且有了提醒的話,即使到期了我能發現然後及時丟棄,不至於誤食等情況發生。
▲ 特別是疫情期間,囤貨行為就更加普遍了
Q:在開發過程中,您遇到的最大的困難是什麼,您是如何解決這些困難的?
A:最大的困難我覺得就是目前SwiftUI的教程和案例不多,很多功能實現方法不會有現成的解決方案,需要自己摸著石頭過河去探索。另外一個就是自己的程式設計基礎不紮實,在遇到稍微難一點的後端問題時很容易就翻車了。一般遇到這些阻斷開發的問題之後,即使用盡腦力去思考也很難立刻得出結果,我的解決方式就是讓自己放空1、2天,回頭再來看這些難題就會很容易迎刃而解。雖然不知道原理是什麼,但真的是屢試不爽。
Q:開發過程中,發生過哪些令你印象深刻的事情?
A:比較深刻的是,我是去年學開發之後才有認真看WWDC大會的分享課程。去年WWDC因為疫情原因變成了錄拍的方式,蘋果的工程師們不用再對著PPT進行演講,所以很多課程看起來更有意思,諸如此類的官方影片,蘋果並不會去限制每個演講工程師的個性表達,在不同課程影片裡,我們可以看到染髮紋身,一邊吃漢堡寫程式碼,一邊泡茶泡咖啡等等,各種形形色色的工程師紛紛登場。所有這些看起來不合宜的表現,反而讓我產生一種親切感,或許它所想表達的,就是每個程式設計IT工程師都是有自己獨立人格的,並不是大多數人總以為的格子襯衫與肥宅大佬。這也讓給我深深感受到了,一個公司的企業文化對於產品是有多麼大的影響。
▲ WWDC 2020首次在線上舉辦
Q:在開發如期而至這款App之前,您似乎還有一次學習應用開發的經歷,當時放棄的原因主要是什麼呢?
A:是的,最早有自己開發APP的想法是在2017年了。當時很有興趣學習iOS開發,然後一開始接觸Swift,就是按照一本《從零開始學XXX》的工具書來學習的,基本就會先告訴你學習語法,所以一上來就是比較枯燥的,也很難想到自己做專案時什麼時候會用到這些語法,心理上很容易就會被自己打敗。再加上後面換了工作,新的環境和忙碌方式也讓自己放棄了。
Q:您覺得這次重新開始學習應用開發,是什麼讓您堅持了下來?
A:一個主要的原因是這次SwiftUI的開發方式很利於設計師去接觸程式設計,在不用有很多程式設計的基礎能力下,就能先繪製出一個簡單的APP原形出來,有了這個Demo,就會讓自己很有動力去學習接下來的各種功能。然後身邊有個大放彩虹屁的人(小黑:這就開始秀恩愛了嗎?)也會增加Buff,讓成就感來不斷激勵自己繼續做下去。
Q:學習iOS的應用開發,有哪些工具和教程是您最推薦的呢?
A:目前我只能推薦一些SwiftUI方面的。工具的話肯定就是蘋果的Xcode進行開發,Figma進行原形繪製,然後AE+bodymovin外掛進行一些動畫效果製作。教程的話《Design Code》蠻適合新手入門,每期影片內容簡明扼要,跟著教程學習設計出來的APP也非常優雅,教程偏前端一些。其餘一些SwiftUI的學習資料,目前中文的確實少,有一些不錯的英文部落格推薦一下:Swift with Majid、The SwiftUI Lab、Hacking with Swift,搭配翻譯軟體其實學習起來也不難。
Q:您有哪些經驗和建議可以分享給想要自學應用開發的朋友們?
A:經驗其實倒是說不上,從我自己的經歷來說,先給自己定好專案,再根據專案確定自己要學習的內容,需要開發哪個功能再去專門針對性的學習那方面的內容。不宜在基礎語法學習上停留太久,早點讓自己接觸實際的專案開發更加重要。很多時候放棄就是因為我們不知道學完一門程式設計之後自己能做什麼出來,所以我覺得最重要的就是先想好自己要做的專案,把原形做出來,即使是一個很簡單的Demo,也會讓自己的成就感大增。然後遇到不會的問題,多利用搜索引擎和StackOverflow(一個程式設計領域的網站),會找到很多思路。Q:您對當前版本的如期而至還有哪些不滿意的地方呢?
A:從最開始1.0版本的諸多問題,到現在的1.3.2版本,許多不滿意的地方已經修復好了,但是也依然還有值得繼續改進的地方,比方說還不支援多語言,沒適配無障礙摸索,Siri錄入、更多的統計圖也還沒做,還有iPad版。目前最亟待解決的就是通知提醒的傳送頻率,正在思考用一種比較智慧的方式來進行提醒,應該會在下一個版本的時候推出。
▲ 如期而至目前的提醒方式確實不夠智慧
Q:在2021年,您對如期而至這款應用有哪些期望和規劃?也可以說說您自身的規劃。
雖然大麥為我們分享的只是他在開發iOS應用時的經驗,但小黑覺得,這些經驗也一樣可以供想要學習其他程式語言的小夥伴們參考,畢竟程式語言千千萬,能堅持下來的使用者走過的路都是相似的。
從對大麥的訪談中,小黑也對應用製作愛好者們有了一個新的認知,他們不是我們印象中不善言辭的群體,而是由形形色色的個體組成的一個群體,比如大麥就是一位非常健談,並且謙遜的男士。
在採訪之後的閒聊中,大麥也對小黑說出了他自己的期待,希望更多有興趣的使用者都能開始學習程式設計,多做出一些有意思的應用,讓這個世界也變得更有意思。