【文科生心得】五年了,關於自學寫程式那點小事
/ 首先聲明,五年過去了,我也只是從聽過程式語言,變成了可以寫一點小東西的路人;絕非工程師本人。/
我畢業那陣子,正是網路浪潮洶湧之際,綜觀矽谷,似乎隨地都是獨角獸(註:估值達 10 億美元以上的新創企業);全球各地更是冒出各種「XX 矽谷」的口號,渴望複製成功、培養出下一代 FAANG(臉書、亞馬遜、蘋果、網飛、谷歌)。
更不用說,輟學賺大錢的心靈雞湯跟不要錢一樣,隨處可見,全球都在炒作所謂科技創新的成功故事,熱錢滾滾而來,讓人不得不贊同小米創辦人雷軍那句「站在風口上,豬都會飛」的名言。(當然,泡沫散去,最後你會發現這一切不過換湯不換藥,能常飛久做的仍是那些天生資本家。)
拉哩拉雜說了一大串,其實也就是為了強調在這種氛圍下,「軟體工程師」變成了一個金招牌,所有人的人生似乎都可以因為學寫程式而翻轉。在這樣的大背景下(再加上我的公司前輩無腦推薦),我也開始了學寫程式的道路;以下整理幾個主要學習工具,以及我的心得。
前情提要:
我並沒有下定決心要轉職工程師,也並未熱愛寫程式,對於程式語言的學習更多像是朋友相揪學習第二外語的心態;工作之前的交集,大約就是在高中時上過一學期的 JAVA (已然忘光)跟用 HTML 調整學校電腦課要求製作的古早個人頁面。
一、Codecademy 線上學習平台
Codecademy 當年最紅的線上自學平台,沒有之一!
在這邊,我大約花了四五個月時間,從 HTML、CSS 一路學到 JS,然後就此停下,勉強能夠應付工作所需的網頁、EDM 微調。至於為何沒有繼續下去,現在回想起來,這種學習方法還蠻填塞的,就一路練習,了解各種基礎語法,然後就沒有了;簡言之,就是把 W3schools 的內容整理的比較美觀、互動性更強。
在沒有更強的動機之下,似乎也起不到太多學習作用。當然,後來 Codecademy 這類型的平台也發現了這個悲劇的事實,調整了商業策略,開始提供更為客製化的學習服務,以及一步步的「成才指引」提供了許多專案課題讓學生學習。
結論:建議上過比較正統的概念課程後,再使用這類型工具來熟悉語法、加強單個語言的使用能力
二、各種 Workshops
世界上有各種各樣的程式語言,社會上也有與其相應的學習團體,例如 Ruby on Rails、Python(Django)、Android、PHP (Laravel)、R 等。當然,也就應運而生各種工作坊,有點難定義這些工作坊的目的,但大體上不脱:推銷課程、純粹推廣、消耗贊助費。
而我更是身經百戰,參加了許許多多的 Workshops,耗時一個週末的、耗時兩三個月的都有,但成效只能說差強人意。追根究底,這些工作坊只是帶你照本宣科走一遍網路上該語言的公開學習教材,其中很多概念都是一語帶過,又或是我只能理解到這邊語法的意思,但不懂整個結構面的原因,導致累積無數個為什麼,卻又不知道該怎麼問。這種茫然大概就是國中數學課,老師叫你看到 A 題幹,就套 B 公式的概念,無法有效的理解並運用。
更不用說,Workshop 的舉辦者不是專業教師,也沒有領薪水,所以教學水準蠻看運氣的;有很大的機率是,你會遇到一群工程師(老師、助教等),然後看他們彼此自嗨,台下一片寂靜。綜上,能在工作坊上存活的,大多都有寫 code 背景,其餘人等則大約半途就神隱,或是硬撐到最後,似懂非懂,似乎浪費了生命。
結論:建議已是工程師或有 CS 相關背景的人來參加,拓展人脈;零經驗的萌新們,還是乖乖回家上課吧,學習是沒有捷徑的!
三、線上 v.s. 線下課程
隨著學寫程式越來越夯,出現了各種各樣的學習套餐,可以理解為加強版 Workshop,或是軟體工程師版本的補習班。這類別介於上述兩項與正統教育機構之間,常見的就是:Udemy、Udacity、Freecodecamp 等,其他國內的平台 HiSKIO、Hahow 等,我也都有買過課程,但只能說一切看緣分,有些老師真的就是不合。
以我個人經驗來說,Udemy 算是蠻好的工具,裡面各種程度、各種面向的課程都有,也常常有免費、打折的課程可以撿便宜,推薦大家可以關注:Soft & Share 的分享。而很多公司軟體開發部的學習資源,也都是提供 Udemy 的帳號,讓員工可以學習各種相關的課程。只是 Udemy 畢竟是讓大眾自己註冊、放上自己製作的課程盈利,所以師資的品質不一,需要大家好好試聽、挑選,我自己是還蠻喜歡「Evan Kimbrell」的課程,也有工程師同事推薦 DevOps、QA 的課程。
最後,要推薦一下 Freecodecamp,誠如它的名稱所言,就是一個免費的平台,創辦人人美心善,規劃了很多前後端、數據工程師的課程,以及精實的課後作業,課程也從以前類似 Codecademy 的方式,變成是有教學影片的。除此之外,特別推薦訂閱他們的電子報,創辦人會定期分享很多學習資源,讓你可以擴充技能樹。
結論:適合各類型與程度的學習者,花點時間,人人都有機會找到合適的課程,加強自己!
四、Coursera、edX 正統教育課程
這兩個平台主要是提供全球知名大學、科技公司設計的學習課程,同時也有提供相應的證書,甚至你還可以修習線上學位,相較其他平台算是對於學業、職涯較有實際幫助的工具。這邊主要是想推薦幾個課程:
- Python for everybody – Coursera(Dr. Chuck 的課程都推)
- Google IT Support – Coursera
- Harvard CS50 – edX
除了第三個我還沒上完,其他兩個都上完模組拿到證書了;上完後,頗有相見恨晚的感受,對於從沒上過電腦理論的文科生來說,這幾個課程可以協助你建立完整的知識、了解基礎的結構跟原理,讓你對電腦(軟體)工程有一個 Big Picture,之後,就是慢慢填肉,針對不了解的部分能夠大致了解方向、尋找資源、學習成長,例如去找 Udemy 的課程,或是參加會實作作品的 Workshop。
可以說,上完這些課程,讓我對於過去大多數的疑問都有了解答與更清晰的理解,例如各種資料格式間是如何轉換溝通、server 跟 client 端的互動;回想過去的學習歷程,一直無法前進的原因很大部分是「有太多的基礎問題」,而前述的幾種學習方式,常常是給了答案,但卻無法解釋,問工程師朋友可能又給了太高階的資源。當然,這也跟我自己的學習方式有關,不了解背後的原因,無法空中建樓閣。
結論:找到適合你的老師,從最基礎的課程開始學,一路學上去,是最能夠吸收並建立動手能力的方式。上面主要介紹免費的方式,當然如果有預算,也可以選擇付費的課程,像是六角學院、Alphacamp 等都有蠻多人推薦的。
五、動手查、查、查!
動手期間,常常會發現自己的知識漏洞,list 跟 dictionary 概念模糊?又或是條件式建立不夠熟練?總之,直到動手那一刻,你才會知道自己的腦子很可能是塊海綿,滿滿都是洞!想要填洞完成任務,動手找答案的能力很重要,而這個方式主要就是 Google,看看遇到一樣問題的網友是怎麼解決的?
常見的幾個資源,就是:Stack overflow、v2ex、CSDN、W3schools、我的小筆記,以及各種各樣部落格,再推薦我自己很喜歡看的 Blog:Huli,可能因為他也是非本科出身,總覺得特別能看懂他的文章(笑)。
最後,可能就是希望大家不要氣餒吧!學程式雖然有門檻,但是它其實也沒有太難,很大一部分的內容跟數學、算式其實是沒有關係的,所以不要先自己嚇自己,也不要聽一些三八人士在旁邊說「你現在才學怎麼可能學得會」等等,只是就跟學習外語一樣,要認真背文法(語法)、了解語文邏輯、勤加練習。加油吧!
文末:誠徵下 Python 小夥伴,目前正在學 Django,希望之後可以多了解後端與數據相關的應用。歡迎交流,增進下學習動力!
(Featured Photo by ThisisEngineering RAEng)
Original link: iambics.me