Monday, November 16, 2015

學寫網頁比你想像的困難

前言

算一算大概是第十個身邊朋友告訴我想學習網頁,但仍沒有成功自己寫出什麼。這件事情進入一個需要靜下來思考怎麼回事的狀況,而我下了一個從我自身經驗上得到的結論:「大家把寫網頁想的太簡單了」。

學寫網頁的現況

很多人都會有學習寫網頁的這個想法,與想法後續的實現是如何的呢?

想寫網頁的原因

網頁是現代人每天都在用東西,甚至超過一天超過數個小時,而偶爾我們會點到一些設計非常動人的網頁、看到朋友分享自己弄的網頁、又或是看到某機構或教材宣傳著學寫網頁有多容易,上述這些時候都可能讓一個人開始想學網頁。

開始想方法

接著可能出現以下幾種方式
  1. 網路上找資料
  2. 書店買書
  3. 找課來上
  4. 問會寫網頁的朋友
這時,若有不錯的寫程式背景的人,或本來就善於學習各種新知識的人,任何方法都能帶領著他最終寫出一些成品。然而,對於這塊陌生的人,其中「網路上找資料」其實是把事情搞的很複雜的開始,因為有太多相關資料,如Google回覆我的第一個連結是Mobile01的討論串,雖說資訊豐富,但反而像是資料爆炸的受害者。

然後,卡住

一樣,那些自學能力超強的人可能這時已經寫出幾個成品。而有心卻不得其門而入的人,可能還在選擇要看哪本書、要用哪個工具、在研究朋友講的到底是什麼意思。時間漸漸過去之後,「最近比較忙」、「我有看一點前面的東西,後來沒時間」之類的話就跑出來了,同時也代表學網頁這件事情並沒有像想像那樣。

我經歷的情況

2011年夏天,在Stanford我修了"Client-Side Internet Technologies"這一門課,也是我開始寫網頁的起點,兩個月的時間,從基本的版面設計、客戶端程式設計到遠端資料呼叫等都學得頗扎實。2015年春天,在CMU我修了Web Application跟Advanced Web Design兩門與網頁相關的課,做出來的成品有Bug KillerTmate。至今我架設過的網頁應當超過30個。

於是,很多朋友會跟我說他們想學網頁,因為網頁在多數人的認知中是比較簡單的,我也盡我所能的提供我能幫助的地方,包含:

上Google或Product Hunt找好的網頁教學平台分享

若想自己寫Code的人,我則會分享W3CSchool的連結配合上Bootstrap的範例;而不想的人我則分享WordPress或甚至Blogger跟Tumblr。在我自己的經驗上,除非有特殊的版面或功能要求,不然既有的工具如WordPress等是最好的選擇。

自己寫學習綱要,包含學習內容、相關連結、範例等

對,我針對朋友願意花的時間,會列出一些步驟,如認識第一週HTML的標籤、第二週瞭解DOM架構等。然而我發現,若是有心的人其實不需要這樣的幫助,而這樣的幫助對於興趣不夠大但覺得網頁是簡單的人,也是沒有幫助的,因為最終仍是很難一步步走完。

在社團教寫網頁

2015年夏天,我在高中社團教學弟妹寫網頁,當時的教材在這個連結裡,因為是連續五天的Workshop,原本的Syllabus裡想要介紹到後端Node.js,然而實際上就只有教了HTML/CSS + JS,其中細節也被我略過很多。可見我也低估了學習網頁的難度。

困難點

說了這麼多,所以困難點到底是什麼?我覺得是以下幾點:

低估寫一個網頁需要的能力

「寫網頁很簡單啦,按一按就好」這句話不知道是否各位也常常聽到,我認為半對半錯。透過既有工具,確實按幾下就是一個網頁,而我會定義這是第一級的層次,其實就如同部落格,或你現在在閱讀的這個網頁。第二層次則是可以套用既有模板而做變化的人,如使用Bootstrap或Semantic UI等。第三層是可以全部自行設計的人。而針對需求會採用或混搭不同層次的做法。

如第一層次的東西來說,到WordPress.com上建立一個網頁、選自己喜歡的模板並不難。但是要開始套用套件,或是想要有修改設計時變是卡關的開始。

低估寫一個網頁需要的成本

要做一個有個人設計的網頁並運行他其實是有成本的,然而在很多數的人認知中似乎自動忽略這件事情。假設是一個靜態網頁,可用Github Pages,但是使用者需要如何使用Git,變回到「低估寫一個網頁需要的能力」的問題;如若是用學校空間、透過FTP上傳,那表示是學校在付營運成本;又或是線上各種架站服務,免費的其實都有各種問題與限制,使用者想像中想要架設的網站往往不是免費的。總而言之,要維持一個網頁持續運作是需要花錢的。

高估自己的動力

「想學一個東西」與「必須把一個東西學好」之間的分別對於包含我在內的很多人都常常會遇到分辨上的困難,如同前文描述的,開始學寫網頁時候,會有過量的資料出現在面前,不知道怎麼取捨。同時,也不知道自己要做的東西確實是長哪樣的,出現有點雞生蛋、蛋生雞的問題。

所以,我很常建議想學網頁的朋友先畫一張草圖(其實就類似正規的網頁開發流程中的Mockup圖),然後刪減上面的東西後,我幫忙選可以使用的工具。然後再一起評估需要花的時間後訂下學習過程中的milestone。

結語

從最早觀察到這個問題至現在,我持續想要解決或改善這個問題,然後讓大家最終都可以如願以償的學習到想學的技能,同時我更相信越多人的加入,可以讓網頁開發這件事情變得更豐富有趣。

最重要的部分是,上述的困難點都源自於學習者的「高估」或「低估」,於是藉由這個文章讓人更認識到一些現實層面會遇到的困難,同時我相信這也是解決問題的開端。此外整篇文章主要針對想學網站但不得其門而入的人,若本就是善於學習這種技能的人也許就不適用了。

對了,曾經我聽過一句話,要完成一件事情:我們需要一個計劃(Plan),還有永遠不夠用的時間限制(Not Enough Time),共勉。