工作到現在差不多兩年多,因為公司業務的關係偶爾也會跟同事討論在學習當工程師或者寫程式上的經驗。所以打算寫一個系列的文章,跟大家分享一下我從學程式到成為一個工程師的過程,是怎麼樣的。
這是第一篇,我想用「輸在起跑點」來當開始。
學習總是有兩種人
不知道什麼時候開始,總會有「不要讓你的孩子輸在起跑點」上之類的言論,從我小學開始,即使是鄉下的小學校也還是會有很多人放學就得到補習班補習。
然後就這樣比別人先學了英文、比別人多會了樂器等等⋯⋯
這類人,不是起步比別人早,不然就是家裡有那個資源可以讓他去學才藝或者嘗試各式各樣的東西。以我的家庭經濟狀況,基本上明顯會是屬於「輸在起跑點」上的情況。
不過,我還有「起步早」這個優勢。我跟很多認識的社群朋友,大多都是在小學就開始接觸這類東西的。所以單純來說,如果要比較有沒有贏在起跑點這個問題上,我想以經驗來說我肯定比很多人經驗豐富很多。
不過,出社會後才想學程式會輸在起跑點嗎?
一直進步跟原地踏步是不一樣的,有進步就算是一小步你也是超前的那一類人
我母親是鋼琴老師,所以我小時候是有學鋼琴的。但是我國中之後幾乎不練習(沈迷寫程式),所以我的程度基本上跟初學者差不多,這就是原地踏步。
好的老師決定你進步的速度
這邊的「老師」不一定是指學校的老師,可能是指導你的人,或者你讀的那本書的作者,也可能是你的朋友。我在怎麼選第一份工作這篇文章有提到公司看待員工的方式,會影響這個員工未來的發展。
假設你出社會後才第一次學習程式,要怎麼樣才能最快速的進步?這個問題很簡單,就是不要自己埋頭的學,去找「適合」的人教你或者跟他一起學習。
有好幾種形式,這邊講幾個案例。
一種是競爭,我國中的時候成績可以進步很大一部分是靠同班幾位比較好的同學。基本上就是互相比分數,因為這種良性的競爭,就會自然地帶動成績的提升。
當初在入門的時候,有個小我一歲的網友也是這樣,我們會邊打遊戲編寫程式(做攻略網站之類的)然後再互相看對方的作品跟進度。
另一種是分享,其實也就是我們在教育體系裡面從老師那邊接受知識的形式。我最早是寫 PHP 的,其實大概有五六年都是幾乎很微小的進步(跟當時網路資源不多跟完全自學有關)開了眼界是參加了 PHPConf 之後,才知道有像是開發框架(Framework)之類的東西,然後才對架構這類有概念,然後才快速的進步起來。
不過研討會的缺點是為了符合「大多數人」的程度,通常會遇到深入的議題不夠或者太過困難之類的情況。像是 LaravelConf TW 就一直在嘗試做各種變化來改善這種問題。而 RubyConf TW 則因為工程師相對少,而且不多新人選擇進入,議程上普遍就比較有深度(同時也變成門檻)不過即使在日本 RubyKaigi 也是有這樣的狀況,但是因為有其他研討會能互補反而比較沒有台灣這種一種語言靠一個研討會支撐上的問題。
這一直是台灣各語言社群的難題,不管是難或簡單都不好挑選。而且為了穩固新手讓他們成場起來,很多時候必須犧牲掉一些深入的題目(所以我後來參加研討會都跑去聊天,如果發現自己開始這樣做,也許是你的實力到了某個水準也說不定)
快速進步的方法
既然主題是「輸在起跑點」我們總該討論怎麼樣補上這個差距吧?理論上來說應該是沒有辦法,但是現實面來說我個人認為是一種「意志力」上的戰鬥。
在當兵的時候,我因為大學畢業專題開發遊戲(多媒體設計學系)所以攝取了大量的可樂跟麥當勞(我個人感覺畢業的時候同學全部胖一圈)所以後來跑 3000(公尺) 的體能測驗項目,我幾乎是落後中的落後。
不過中間經過了一些體能訓練之類的,學到了兩件事情。第一個就是你身體至少要能負擔這個程度的運動,才能在時間內跑完。另外一個就是你要能讓身體可以負擔,就是要在跑到想放棄的時候告訴自己「我還可以」盡可能把自己的極限逼出來。
其實這是在不管學什麼都通用的道理:
- 基礎很重要
- 堅持很重要
從這兩點來看,文章一開始的「我沒有堅持練鋼琴」就是造成我現在程度差的原因(還有不少,大學因為讀多媒體也會畫畫,畢業後就很少動筆了,基礎本身就差還沒有練習,就變成退步很多)
基礎讓你不容易退步,堅持讓你可以進步
所以,在衝刺之前我們應該先想想「準備好了嗎?」才知道自己有沒有那個餘裕往前衝刺,尤其是學習跟我們想像的不是什麼曲線,是梯狀的(也就是要度過瓶頸)如果不堅持的話是很容易在突破前一點的地方放棄。
小結
會以這篇文章作為開始,是因為我認為不管做什麼之前,都要有心理建設。不管建設了多少,只要有一個簡單的概念或是認知,就能很大的改善學習的過程。
我認為自己很愛找藉口,所以常常用比較激烈的方式學東西。像是畢業後還想把電繪技巧練好,但是一直都是用時間不夠當藉口(明明把寫程式時間貢獻出來就可以了 XD)
總之,一個簡單的結論。
不要管是不是本科系或者什麼有的沒的,只要先問自己「想不想學」「喜不喜歡」「撐不撐得下去」就好了,大多數時候我不鼓勵別人用跟我一樣激烈的方法,大學畢業前我大多是一定程度的把人際關係那些都犧牲掉,然後用來強化程式技能。所以用「我想學」「我喜歡」「我(自己一個人)撐得下去」的方式去進步,也許畢業後我跟很多人比「起步很順利」但不一定對每個人都是好的,你可能會發現「朋友跟不上自己」的孤獨感,比起這樣也許在職場跟朋友一起進步,說不定反而是件好事。
所以,先確定自己能不能堅持走這條路,在思考適合的走法。
我的方法簡單粗暴,就是我不繞路,遇到障礙我就是一路往前推到障礙不見。他很花時間也很費力,不過我喜歡這種方式。