2014 年 7 月,我剛學程式滿三個月,過了程式與我的試用期。在這之前,我只是一位努力在教育科技產業打拼,到校園推廣能增進課堂互動的教學軟體,一位連終端機是什麼都不懂教學設計師。
當時,受邀參與了這場 Ruby Tuesday #30 - 我的 Ruby 學習之路 座談會,主要由非本科生來分享自學 Ruby / Ruby on Rails 的經驗,其實除了我以外,都是很有名、很厲害的工程師,真的很感謝 Ruby Taiwan 的主辦人願意邀請我一起來分享,除了能聽見其他人自我勉勵的方法之外,最重要的是,這場座談會讓我深刻記得自己當時學習的心情,亢奮、不怕挫折、勇往直前,不知道當時是否有想過自己未來真的成功轉職為工程師呢(笑)?
其實這篇心得本該在當時結束後就記錄下來,拖著拖著,時隔兩年,就在我的人生又走到了另一個頓點時,又回顧起了這場會談,也好,現在又是另一種心情了。
感謝 Ruby Taiwan 有幫這場座談錄影,讓我能記起當時自己講過的話 XD
座談會顧名思義就是 Q&A 放大版,下方紀錄當時與會者的提問、我的回答以及時隔兩年後我的心情,藉以檢討與期勉自己更上一層樓。
[問題] 我正準備開始學習 Ruby,完全新手,沒有任何 coding 基礎,能不能告訴我要怎麼在一開始就往正確的路走?還有學習新語言時,要怎麼撐過陣痛期?
其實天天都是我的陣痛期,我不敢說什麼正確的路,但我覺得學程式就是 trial and error,因為打一行指令,會出現什麼結果,很直覺可以看見,所以在試的過程中,自己可以慢慢建構知識。不過,當怎麼試都不成功時,這時候就要靠 Google、StackOverflow,很多人都一樣有陣痛過,有很多陣痛的前輩們的經驗可以參考。
最重要的一點,在學習的過程中,身邊要準備一位像祖母、奶奶、阿嬤之類的人,奶奶通常在你學習過程中,都會一直稱讚你『乖孫啊~做得真好啊!很好~很厲害!』,其實就是身邊要有一位教練、朋友或是一起學習的夥伴,互相學習,才不會一直活在自己的世界,永遠看不見問題。
我曾經在寫 Rails 時,把 application 的 layout 精簡成只剩三行,自以為整理的很乾淨,但參加一次 LTRT,有一位大大看到我的程式碼,他就笑:『恩,很有創意的寫法…但我還是讓你看一下外面的世界好了~』,大大讓我看他在工作時真正跟別人合作時寫的程式,程式架構清楚明瞭,看過別人的,才知道自己還有很長的一段路要走。所以,身邊準備一個可以給你鼓膩、帶著你前進,一起找問題的人,是很重要的。
祖母的說法不是我當時隨口胡謅的哦,雖然真的是我的經驗談,但這確實有學術實驗可以支撐這個說法的,詳情請見『建立雲端學校(Ted Talk)』,演講者 Sugata Mitra 提到在英國與印度實施的一個名為 Granny Cloud (奶奶雲)的遠距教學實驗,徵選了200位英國老奶奶,在網際網路上,英國老奶奶利用 Skype 陪印度學生一起學習、給予鼓勵,發現能學生的學習狀況有正向的成效。
提到大大給我看外面世界的心得,其實有寫成一篇文章反省XD,程式碼修改前後請見看看世界-多看前輩的code。
[問題] 你本身是從事教育的行業,當你學完程式之後,有沒有打算把這兩個東西結合在一起?
雖然目前還沒想到這麼遠的事,但如果未來真的有再精進 Ruby on Rails 的技能,當然會想回去為教育服務,想跟教育科技做結合,畢竟這是我七年的教學經歷所累積下來的經驗值。
[問題] 平常在公司會有很多機會需要向工程師以外的同事解釋與程式相關的概念,想問向你們在教 Rails Girls 時,會不會有什麼訣竅,能夠讓對方更容易能夠瞭解呢?
我以學習者的角度來講,多用譬喻真的很有幫助。剛學的時候一直很疑惑『框架』這個名詞到底是什麼,Ruby 跟 Rails 到底差在哪裡?他們之間到底是什麼關係?很多人都回答我:『Rails 就是框架啊!』,當我再追問:『那框架是什麼?』,結果回我:『就是 framework 啊~』,完全沒有回答到我的問題。
之後有人真的用一個生活情境解釋給我聽:『假設要做一件衣服,如果是 Ruby,得慢慢從挑原料開始,一針一線地織,經過非常多步驟,才能織出衣服;但如果是 Rails,會直接給你一件全白的普通衣服,之後再慢慢加工就好』。
帶入生活情境後確實有比較好瞭解,但瞭解之後,確實要像剛剛另一位徐曦教練所講的,要立刻告訴學習者,這就是框架的概念,以後就直接用共通的詞來溝通,不用再重新講衣服的故事了。
織衣服的故事之前也有寫成一篇文章,詳情可見Ruby 和 Rails 的差別(女孩譬喻法)
真正進入職場之後,發現確實有非常多的機會要與其他部門的同事溝通,談時程或增刪減功能都需要解釋程式的部分讓其他人了解,但光是用譬喻的方式真的很不足,必須要有更直接的畫面來輔助解說,必要時,流程圖、wireframe 都不能偷懶,雖然工程師有自己的語言,但是公司組織是由不同專業的人所組成,必須要有能夠溝通的文件與方式。但最重要的是,所有產出的文件需要有人繼續維護,才不會喪失它的價值,關於公司內各部門溝通與文件協作的方式,至今仍是我非常想要瞭解與優化的課題。
[問題] 在學習 Ruby 或 Rails 的過程中,要怎麼樣才會比較有成就感?換個方式問,如果我現在要自學或訓練一個人學 Ruby,有什麼樣的康莊大道可以走?
成就感的來源不只從幫助別人身上得到,幫助自己也會很有成就感!我在學習的過程中,常會遇到要做什麼網站而苦惱,這時我會先從自己去想:『我在生活中有遇到什麼不方便的事嗎?』,我認為網站就是帶來方便的產物,例如:想要吃東西卻不知道要吃什麼、想要找最省錢、最方便到達目的地的路線…,一旦有了目標,又剛好有前輩在旁,前輩就可以幫學習者縮小需求範圍,從最基本的資料庫關聯開始建立,有了簡單的 prototype,就可以繼續擴大功能。如果能解決自己的問題,成就感會非常大。
[問題] 想請問在學習的過程中,有沒有什麼量化的指標可以評估自己的學習狀況?
說到量化的部分,如果回到學校,學生考試一百分,就代表這個學生百分之百都懂了嗎?其實不一定,有可能他比較會猜題,或是題目沒有鑑別度之類的。
如果今天是自己對自己做評估,我會設立自己還不知道的事情,例如,教練今天提到了『封包』,我不知道封包是什麼,就把他列出來,或是 devise 這個 gem 詳細的運作流程到底是什麼?也列出來。我瞭解了幾件事,就是量化,今天兩件,明天又懂了三件,自己能對自己做記錄,假如發現有陣子沒有多懂些東西,就能發現自己那陣子又懈怠了。
寫部落格是個好方法,可以記錄自己學習時遇到的問題,過一陣子回去看,可能會有不同的想法或更好的解法,利用部落格幫自己做學習歷程,可以用這個學習歷程來幫自己做評估。
老實說,到現在都還很佩服那才剛學程式滿三個月,居然敢在台上大放厥詞的自己。重新看一次影片,能感受到自己當時的心情,真的很享受學習新知識、新技能的過程,我應該要每過段時間就回過頭來看這篇文章,學習真的很容易遇到瓶頸,也很容易會偷懶或想放棄,一定要勉勵自己,不要忘記那很有學習熱忱的自己,加油!