一段黑歷史:錄製 Auto Layout 課程

YouTube Playlist Thumbnails

大約 2016 到 2018 年間內,我曾經試著開一堂 iOS Auto Layout 的線上課程。我做為 iOS 開發者的經驗有限,但依著自己的數學背景以及對教育的興趣,那時覺得自己在這方面能做點什麼。

直到現在我仍認為,Auto Layout 中等到進階的知識,在網路上過於欠缺且分散。這世上並不存在一堂我心目中的 Auto Layout 中高階課程。

我閉門錄了些影片,且把課程預定的規模縮編了幾次,但這堂課從未真正上架。在我做了最後一次縮編,覺得可以先上一版時,SwiftUI 問世。綜合一些其它因素,終於不再歹戲拖棚而停手。而這也是幾個月前的事了。

雖說是個丟臉的失敗史,但也不甘就此淡忘。最近終於有些閒,決定來為這整件事稍做紀錄。文底會提供現有影片的連結,歡迎自由取用。

歷程

做這個課程的想法在 2015 年就有了。那是我開始當 iOS 開發者的第一年。有幾次聽社群的朋友們提到對 Auto Layout 感到困難,我也意識到我從線性代數 & 線性規劃的基礎上去瞭解 Auto Layout 的方式並不常見。

同時,做軟體開發一段時間後,我愈來愈期望自己能在教育領域貢獻心力,並確立了向教育科技發展的大方向。故,拿 Auto Layout 為素材做一堂線上課程,似乎有許多好處。一方面課程製作會是在教學和教育科技方面很棒的實務經驗,另一方面它也會是身為 iOS 開發者獨特的一個「作品」。加點妄想,說不定還有機會名利雙收?

於是,一段孤獨漫長的開發之路開始了,斷斷續續經過好多時間。到了 2018 年時幾乎完全停擺,而在 2019 年初時重啟,又稍有進度,直到 WWDC 為止。整體而言,在個人動力問題和糟糕的(瀑布式?)開發流程之間,效率一直都很低落。不過這經驗終究十分寶貴,在教學設計上面,我花了很多精力思考,也體認到一個人自學、單打獨鬥的限制。

現在的我回到全職學生的身份,進修教育科學 & 教學設計。學習間我不斷回想起這段開發經驗。回頭看這個作品,可以判別出一些蠻要命的問題,但同時感到驚訝的是,當時憑直覺做的許多決定其實也很符合科學的學習原則。

整體評鑑,這套影片我現在覺得最大的缺失有:不夠清楚的學習目標(著重我如何教,大於學生如何學,過於自我滿足),極度缺乏動手做和評量(如練習題,測驗),沒有和目標學生做 CTA(Cognitive Task Analysis,分析真實需要及困難點),沒有經過設計疊代等。至於影片錄製剪輯的不專業倒不覺有大礙。

開發

製作過程中,除了花無數的時間思考,也花了無數時間找資料和做研究。除了再三確認自己的想法,也看看其他人都是怎麼教的。我把當時幾個找到的線上影片課程都上了一遍(Treehouse, BitFountain, Ray Wenderlich…),前後翻了三本書(Steven Lipton, Erica Sadun, Keith Harrison),當然還有不知道多少的 blog posts,tutorials,YouTube 影片,及大部份相關的歷年 WWDC 影片。

雖說的確在研究過程中,思想不斷變得更完善,但這個研究的量明顯代表在專案管理上有點問題。回頭看,就算要多做研究,若能多著重於做 CTA 會更有幫助。

一開始的規劃範圍極廣,把能想到的題目都列出來,試著以一種半獨立單元的方式分類排序。

2016 summer - 2017 list of topics

之後大部份的心力在於把每個單元、每個影片的內容編排出來,寫成概要。前前後後共寫了 16 個單元(Lessons),各單元通常有固定的流程,實作示範和理論交雜。這個概要的檔案有三千多行字,離逐字稿還有些距離,但對於每個單元 & 每個影片大概要長什麼樣子,可以說是已有個基本的描述,只缺把細節整理出來。

Lessons Outline

至於影片錄製,我並沒有天真到以為能一步到位,所以就從頭錄起,自許以一個 alpha 品質做為起點,邊錄邊試著改進。

在錄前幾個單元的時候後,我想訓練自己看著概要,直接就即興錄製,希望習慣後可以加快進度。無奈不斷 NG 重錄反花更多時間且品質不如讀稿,試多次也無明顯進步,所以打消了這個念頭。這時錄的一、二、三章,被我歸類為 alpha 品質。接下來錄了單元四、五、六,都有重頭寫稿再錄,燈光也稍有改進,自評是 beta 品質。

不記得是到什麼時候,明顯意識到原先想做十幾章的規劃太不實際了,就把「第一版」的規劃不斷縮小。到最後 2019 年時,決定再來只要把單元一到三改進重錄,配合 beta 版的單元四到六,加個介紹就算初步完成。

遺憾的是,最後就停在這裡了。

錄影

錄影片這件事,雖說 DIY 對品質期望不高,但每次錄影的時候總是感到不小的壓力。對我來說,讓學生看到老師,就算隔著螢幕仍能產生一種連結,是一件重要的事。所以,很多影片都是我在對著 iPhone 比手劃腳說話。

有的時候,我會用實體道具做說明。某個影片拿了塊豆花來解釋「切割次元」,自己也覺得莫名其妙得好笑。

當然,少不了 Xcode 示範的螢幕錄製。另外,也有一些拿 iPad 當「黑版」的解說。可以說是各種不同的影片呈現方式,除了我做不到的電腦動畫之類以外,都依適合的情境用上了。

Chapter 6 (beta) thumbnails

影片編輯是用 ScreenFlow,聲音也簡單就在 ScreenFlow 裡處理。做出來的感覺 DIY 感濃厚,但如先前所說,這點我並不是很在意。

分享

早在 2015 年還沒決定要做之時,就在 iOS Taipei 聚會時分享了一次 Auto Layout & Scroll View,是個難忘的經驗。後來在課程製作期間,我有兩次機會把當下的心得稍做整理,在不同場合跟人分享。

第一次是 2017 年八月的 Cocoaheads Taipei。那時我開始玩 Fate/Grand Order,想到「打素材最有效率的方式」可視為一個線性規劃問題,而 Auto Layout 就是個線性規劃的引擎。那,我們能不能反過來用 Auto Layout 來找最有效的素材打法呢?

Cocoaheads FGOALT p.18
FGO Auto Layout Talk Slides

第二次是 2018 年一月,在台中舉辦的 iOSDC 大會。我把標題取為「Auto Layout,你從哪裡來?要往何處去?」,算是把在做課程時的心得做了個總整理。我談到 Auto Layout 因它的運作原理而帶給使用者學習上的困難,以及未來期望看到的改變。那時就想,Apple 到底會不會全盤翻新,推出一個完全不同的架構呢?答案在一年多後揭曉:SwiftUI。終於,我們可能要慢慢跟 Auto Layout 說再見了。

Auto Layout, Where Are You From p.5
Auto Layout Where Are You From Slides

這兩次分享,都有廣告「我在做課程喔!」以此激勵自己完成課程。很好笑的結果,就是不少朋友知道了我在做課程,但這堂課始終無聲無息。

半成品

如上所說,最後留下的有六個單元的影片。前半還在摸索的期間,後半則是稍微進入情況,但原本也沒有打算要做最終版本。粗估這樣約有六小時的影片。第六章長度最長、理論最深,也是我個人覺得最重要的一章。

第 0 章 (⍺):課程介紹

第 1 章 (⍺):牛刀小試 & Auto Layout 之前的技術

第 2 章 (⍺):什麼是 Layout Constraint

第 3 章 (⍺):用 Spacer & Grouping Views 拓展可能

第 4 章 (β):Layout Debugging:蟲與工具

第 5 章 (β):邁向精熟 Auto Layout 之路

第 6 章 (β):Auto Layout 的理論基礎

檢討

好了,影片丟出來了,但這對別人有幫助嗎?

之前提到我自評這些影片有許多缺點。但它們對一般學習者有多少價值,我無法客觀判定,只能邀請大家來評論。我先稍微說說我的看法。

我認為使用 Auto Layout,理論和實務都很重要。絕大多數我看到的 Auto Layout 教學,會幾乎完全著重於實務,告訴你功能有哪些,使用的步驟是什麼。這些固然很重要,但並不足。與其相比,我花很多力氣在「解讀、分析」:為什麼這功能會設計成這個樣子?它背後的原理是什麼?如此一來什麼是可能較好的做法?

我的課程對於理論及個人解讀的偏重,一方面是個人偏好,另一方面也是因為我認為這是網路上所缺乏與過度分散的資源。甚至,我講的到底對不對還在其次,重要的是你可以和我一起思考,並構築你自己的看法。這是我希望當初自己在學的時候就存在的教材。

不過,這也代表了想要上這堂課的學生,至少要已經對 Auto Layout 有些實務經驗。理論和實務都重要,但我並沒安排足夠的實務解說和練習。另外,學生除了被動的看影片,也需要主動思考、自問、評估,這傢伙講得真的對嗎?我之前遇過跟這有關的情況嗎?並試著手做驗證,最好是在真實 App 中,但開個練習專案也行。實務和理論交會,才有最佳成效。

結語

SwiftUI 當紅,但 Auto Layout 可能還會再活幾年。所以,現在把這些影片釋出,應該還是有點意義。

雖然這堂課我視為是個失敗之作,但這不會是我最後一次做教學設計。所以,在這裡拜託大家,請大方的給我回饋,幫助我成長。不論是關於 Auto Layout 的技巧與理論,學習的方法和成效,或是影片錄製,任何的批評、建議和鼓勵,都歡迎留言給我。

另外要感謝:Richard, Keith, Aki, Pofat 以及許多其他朋友們,在開發過程中給予的建議和鼓勵。

Leave a Reply

Your email address will not be published.