進度條

我已經開始寫程式了,但感覺好像一直不上手?

本文作者以自身的經歷,給大家一些自我練習方向。

作者: 縱裕 更新日期:

大家好,我是縱裕。接下來是會用一些自身的經歷來跟大家講說如何真正開始寫程式之旅。

對的,買了課程、或是買了書、看了影片,這些都不算是真正的開始寫程式。

 

 

不過這裡也不是推薦讓大家都「自學」就可以,線上課程,跟買書一樣,都只是個教材。


但是認真說起來是否「自學程式」其實算是假議題,因為一般所謂的自學,買書來看也含在「自學」的範圍內。書籍本身就是作者搜集了各方資料加上自己的經驗統整,最後集大成透過文字表達出作者的敘述。其實跟進度條的線上課程備課方式方式大同小異,只是我們透過影像與聲音來表達而已。

 

並且對於初學者來說,雖然書比較便宜,可是"人"對有影像與聲音的接受度比較高,而且畫面是連續的時候,比較不會突然跳躍步驟的問題。(很多書其實不太好跟著寫,中間都會少掉作者以為你已經知道的步驟)

 

話說如此,我個人是滿尊敬程式工具書的作者的,我自己也很喜歡透過書籍學習。

 

 

雖然線上課程可能不算便宜。但畢竟各位很多也是看上工程師優厚的薪資才決定入行或轉行。如果用機會成本來想的話,如果有任何資源可以讓你節省就算只有一個月的時間,其實就是讓你早一個月拿到你心目中的薪水,就算是進度條所有的課程一起買,其實也大概只花掉「初階工程師」半個月的薪水而已。

 

另外一提,不用錢,又不需花時間學習的工作技能卻可以賺到大把的鈔票。我想應該是老鼠會或是犯罪吧,而且就算是犯罪其實很多也需要很高超的技能(例如金融犯罪)。

 

 

 

 

廣告打完了,就開始我們的正題吧。

 

 

如果各位有看過其他網路文章的話,都會聽到不斷的練習這件事。

 

沒錯,我也是要跟大家講,要學好程式只有不斷的練習。

不過先別關視窗,也先不要按上一頁,拜託!!

讓我先講個自身的小故事,大概講30分鐘就好 (也太久)。

 

 

先講結論,無論是學習什麼技能,興趣最重要。而且不是單指對於技能的興趣,而是對於你要用這個技能做什麼的那個興趣。

 

 

不太了解這是什麼意思嗎?用個小弟自身的故事來解釋好了。

 

 

小弟其實也是半路出家的,但可能比大家有優勢點,我畢竟是機械系工科出身。所以大一有計算機概論,而且還有很罩的室友。所以我其實是在還不懂怎麼宣告變數的情況下,神秘的Pass了計算機概論這堂課,

 

說真的我還真的忘記我上機考怎麼考的,真的是很誇張,Dev C++編輯器打開連專案檔都生不出來...這樣的我後來居然進了BIOS公司當工程師,真是事事難預料。

 

 

 

 

真的開始和程式有關聯,是因為大學都在玩樂團,後來一直玩到錄音工程,玩麥克風收音。好巧不巧因為學分不夠延畢了,選到的選修跟麥克風收音有關,在老師的鼓勵下做了麥克風與電子鼓相關的研究,其中有使用Matlab這個現在不太流行的程式。當時也還是不會寫,但改改數值還可以,主要是操控研究生寫完的程式截圖,在PTT鼓板還貼過文被M(好文的意思)。

(當時的課程其實是感測器相關的訊號轉換相關課程,不過有點專業額且我"忘記"課程名稱了)

 

 

 

一直到這邊都只是鋪成。接下來才是我真正開始覺得自己能寫程式開始。

 

 

畢業後男生要當兵,當完腦袋全空。在家人的建議下,一樣進了實體課程的程式就業養成版。

(好像在幫打實體課程的廣告一樣... 我們是進度條「線上課程」啊!!!)

 

上的課程比較偏韌體一點,說實話並不是很有前途的產業。但我去的真正的原因是因為我想要自己做一套自己的電子鼓。同時間還找了幾個朋友學電路板焊接技術,可惜一直到現在電子鼓還是沒做。

(但卻因此後來有個契機,幫Funlook 做密室逃脫的電子機關,不過該時間點我"已經"是電腦工程師所以這資訊對初學者學習沒有很有幫助。)

 

 

總之,就算我開始上課了,我也還是滿腦子音樂與樂團。

 

 

真正開始會寫程式,理解什麼叫做程式,是在上讀寫檔案課程的時候,有了個突發奇想,想說沒有壓縮的音樂Wav檔,應該跟我之前做專題的東西很像,說不定我可以改編它,做個混音之類的。(後來這個想法有簡單的實現,最基礎的部分在C語言課程有包含到。)

 

 

當然,依當時的能力,用2進位資料顯示的方式打開檔案,完全看不懂。不然我來研究MIDI訊號檔好了,他應該是最簡單的,我應該看得懂。

(MIDI的概念有點像鋼琴鍵盤,他有128個值,每個值會對應一個音檔,簡單來說就是音檔的播放順序而已,我因為玩數位錄音所以有"概念",但實際上寫成程式會比較複雜些。)

 

 

結果我用Google在網路上找到了一個MIDI產生器的原始碼,他的程式碼很短,印象中不超過100行。所以我就在上課中完全不顧老師在講什麼課,嘗試著解析這份原始碼在做什麼。然後加上簡單的文字輸出與鍵盤偵測。(這兩個功能在任何一本C語言的書的前幾章都一定會教)

 

 

然後把完成,充滿bug的程式傳給我一個做業務的文組朋友做炫耀,

雖然他一直沒告訴我他真正的想法,但我覺得當下他一定覺得這是三小。

(請原諒我用比較粗俗的字眼,我覺得這樣比較傳神一點)

 

 

後來的故事我覺得就沒有那麼重要,因為我當時我已經得到了成就感,開始有能力自己學習進步。對我來說當時最重要的是因為興趣的關係,即使那段下載下來的程式碼除了有C語言的新手殺手 "指標" 外,還有他的威力加強版"雙重指標"。我卻還是網路爬文,似懂非懂的,把它成功改成我想要的程式。

 

 

看到這裡,你可能跟我的朋友一樣覺得三小啊。

連指標都克服了當然一帆風順。

(其實指標只是個開始,C語言還有非常多很難懂的歷史業障寫法,

在BIOS與Linux 核心都可以很容易找得到)

 

 

這裡容我解釋一番。我想要表達的是在那個當下,因為我的學位背景,我的興趣,以及我的經歷,剛好跟C語言的某一段是吻合的,所以我對它突然就很有興趣。

而且我已經知道所有實現該功能的相關知識,唯一不知道的就是C語言。

(可以參考我們的C語言課程範例)

 

 

 

這也是為什麼我一般推薦大家從HTML開始,因為它最簡單,沒有興趣的人也學得會。現在的人每天都上網,不太有人真的對架設網站"完全"沒興趣。當HTML學會後,自然就會想讓網站動,因此對JavaScript的興趣也就生出來了。

(像是想自己開網路商店啊,拍網路影片當youtuber,這都跟網站有關)

 

 

當然,有些人對手機程式比較有興趣。

不過手機程式入門比HTML高一點,一開始就會碰到"變數"這件事。而"變數"的概念跟國中國小數學的代數有關(通常章節名稱是 幾元幾次方程式那種)。所以代數不好的人可能就比較難消化。HTML 與 CSS就沒有這問題。

(嚴格說起來Bootstrap也沒有這個問題,因為Bootstrap比較注重在CSS的版型問題而非Javascript)

 

 

再來比較現實的,如果各位是轉職的話,可能沒有那麼多時間做自己的專案。HTML / CSS 跟網站美工設計有關,所以一般工作是可以容許設計師慢慢養成網站前端技術。如果不是相關的話,就比較吃虧了,可能需要先做大量的自我專案當作品集才比較好找工作。

 

但這裡要澄清的是,並沒有全部學完才找工作這回事。一般公司的工程師沒有那麼強,多半只有自己份內的工作比較熟練。我個人菜鳥時期寫的一些程式,那些老鳥同事常常也是嚇了一小跳。

(例如因為我解析過MIDI,所以我後來也解析了BPM圖檔與WAV音訊檔這些未壓縮格式, 然後因專案需求把BPM圖檔改寫成黑白轉換程式,以對應部分裝置只能顯示黑白色。並不是老鳥沒有能力寫,是一般來說不會自幹這隻程式,而是Google現有的函式庫去解決。)

 

 

所以要寫好程式除了大量練習外,最好自己找題目。

例如:

你喜歡網拍 => 就嘗試自己架網拍。

你喜歡幫小孩拍照 => 就寫個很爛但可以用的照片分享軟體APP。

你喜歡音樂 => 就嘗試建立自己的音樂播放器。

 

當然,失敗的可能性絕對大於成功,畢竟不會操控資料庫只會HTML是架不出網拍的。不過或許你就因此知道了WordPress 與 WooCommerce的存在,開始對PHP有興趣。最後因為你會部分的PHP與熟練的HTML / CSS 加上其他的工作經驗就被錄取了。這種事其實滿常發生的。

 

 

最後還是要提醒,光"懂"是沒有用的,做中學才是王道。

 

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Medium picture

縱裕

錄課程錄到快死掉了啊!!!