程式寫不好,是不是我沒天份?

洧杰 已發佈 2019-10-16

相信大家在學程式的過程中,都曾經閃過這些念頭:

  • 為了一個小問題卡了兩天,但就是找不到解法
  • 覺得自己學得很慢,我應該不適合?
  • 感覺資工資管科系才會把程式摸得很透徹,我跑來學程式真的適合我嗎?

這些念頭我都曾經有過,但是最終我還是排除萬難地成為了前端工程師,提供給各位我克服後的心態轉換建議。

跟自己比較就好,勿豎立對手

常遇到學生問我:「老師,如果我花 XX 時間的話,有辦法找到前端的工作嗎?」,這點我從來不會保證學生一定會在何時可以就業。因為每個人的吸收學習程度都不同,若是你沒達到目的,下一次豈不就更難重新出發?

你需要專注的是規劃你的學習清單,就像前面番茄鐘所提到的心法,凡事都可以切出大、中、小項目,將任務碎片化再逐一攻略。每天日月累積前端技能,自然能夠水到渠成。當然會因為天份的關係,你總會覺得周遭的人好像都很聰明學東西都很快,但你是否有看到他背後投入多少心力,每晚夜深人靜時,面對著淡淡發光的螢幕貪婪地探索知識呢?

在學校裡,成績就是一切,在名次排行榜的枷鎖下彷彿任何東西都好像要跟人比較一樣。但以掌握一個技能來說,你的對手只會有一位,就是昨日的你。常常會有學生問我:

學生:「老師我這頁花了我一天排完,會不會太久?一般專業工程師應該很快就能排好的吧?」
我:「那上個月請你排的那頁你花了多久?」
學生:「三天啊,而且還一堆 Bug」
我:「所以再給你一個月練習不就可以更快?凡事都是日月累積來的,跟自己比較就好,你現在應該著重在觀念的應用,等到真正有專案壓力時,自然就能培養起來。觀念不對基底不好也都是枉然。」

所以也奉勸各位,不要自己幫自己找對手,你最大的對手就是昨日的自己,你只要有贏他,就足夠了。

寫程式是不是數學要好,一定要有資工資管背景?

這個要看你寫什麼程式,如果像是大數據分析、資料演算的話當然需要,但以前端來說初期是不需要的,頂多到第二份、第三份工作時才需要瞭解一些而已。一開始學 HTML、CSS 時,程式語法都是設定樣式,實際上不需要邏輯運算。在學 JavaScript 時,便會開始培養邏輯觀念,但也不會那麼的重。像是我周遭的前端強者絕大部份都是非本科系,我輔導的學生有七八成也都是非本科系,同時原本本業是服務業、業務、銀行等相關,轉換跑道還是相當順利。

拋棄你對工程師的無限幻想

還記得我當時想成為工程師時,都會對這職業產生幻想,例如強大的工程師應該打字速度都超快吧?他們一定都是做很炫砲的項目,不像我做得東西小不拉機又不酷。他們一定很常在 Open Source 上相當活躍,本身一定又是個超熱血熱情的傳教士,年薪自然都是千萬等級以上,而且一定超愛寫程式,無時無刻都在寫才對。

但其實當我成為前端工程師跟許多人接觸後才發現,那些都是來自於我的幻想,有些人當工程師只是因為他擅長,但並不喜歡這工作。或是只是剛好歪打正著成為工程師而已,但是平常下班時間也不會碰程式。像是 Bootstrap 開發者也直言自己很痛恨電腦,原本他是要去修社會學的。PHP 之父的經典名錄也有一句提到他覺得自己不是一個開發者,當人們打算要解決一個記憶體問題時,他反而覺得重開機就好了,幹嘛要去解決?

如果你想學程式,未來也想成為一個開發者,奉勸你不要對這職缺有過多的幻想感到卻步,你不需要很有天份很有熱情才有辦法寫程式,就連我下班時間也有很多時間拿來耍廢追劇打 Game ,沒有無時無刻都在寫程式的。

程式卡關是家常便飯

絕大部分的人都會因為自己卡在一個小細節卡很久,就會開始自我懷疑自己到底適不適合寫程式,但我要老實說這是必經的過程,而且不代表未來就不會發生。像是我在寫程式時也時常犯許多低級錯誤,例如語法拼錯、忘了存檔就想開啟看結果、已經會的觀念但不知道為啥卡到陰一直沒解出來。

不過這些過程也是在幫助你 debug 除錯的能力,就像是很多學生問我問題,他還沒說完我就猜到他是哪裡出了狀況,學生當然會覺得老師很厲害,但可不要忘了我們可是經歷過數千次這樣 debug 經驗才有辦法達到這火候的,而且這段過程我也沒辦法教,你只能慢慢熬才有辦法內化到你心裡。

最後建議當你覺得卡關時不妨暫停一下,去上個洗手間或洗澡吧,有時候坐久了血液循環不好,當你在移動時大腦就會重新運算新的解法,所以我都會笑稱洗手間是我的靈感來源 (誤。

關於筆者

暱稱:洧杰

介紹:六角學院校長,熱愛分享與交流的前端工程師,目前專注於兼容桌面/移動網頁前端開發,期間已協助數百位平面設計師,網頁設計師導入標準網頁設計。