啟發

2020/04/05一則廣告讓我遇見了AC,當時的我正在傳產擔任中南美業務,雖然是一份工作,但能從工作中獲得的價值並不多,每次與客戶們的對談總是可以讓我一再認識到就算是穩定的工作,如果是從時間換取金錢,去掉了時間這份工作就完全毫無任何價值,儘管業績的表現亮眼,結算之後一切就又是從頭來過,雖然與客戶的應對沒有碰到任何問題,卻對於職涯發展出現了迷惘,思考著工作的價值,思考著自己的定位,以及所嚮往的生活。

對於工作,我相信各行各業都有著無數的可能,也認知到術業有專攻、行行出狀元,在所有的的工作上每個人的要求不同,或許,有些人沒有過多的慾望只求穩定,但套用一句在西班牙聽到的” El trabajo no es para vivir, es para mejorar la calidad de la vida. “ ,我深深地相信在這人生裡,會有如皮克斯動畫靈魂急轉彎所敘述的"A spark isn’t a soul’s purpose.",工作也是生活的一部分,如何從工作上獲得人生價值,我想也是人生的一大課題,

學習

AC的學習安排做得很好,並非是一開始就直搗黃龍,而是循序漸進地一步步認識程式,並透過助教們的指導在每次的作業中獲得回饋得到啟發,所以除了課程的學習,作業批改後助教的回饋以及提問平台都有著滿滿的精華,也因為課程安排以及學期制的方式,像我這種走保守路線的探索者也可以不怕自己有著不適合的情況,可以先從學期一認識以後再考慮是否合適。

從小看著福爾摩斯、亞森羅蘋鬥智鬥勇,練就出發現問題就會先拆解從宏觀到微調,這讓我在課程上遇到的問題都能順利解決,也讓我對程式這條路越來越喜歡,每次的作業都讓我對程式更加的喜愛,真是太有趣了!!!!

學期一:初步認識了程式,認識了演算法,認識了html, CSS,透過了小題目學會了電腦的思維和程式運行的概念。

第二個學期分了三個階段
學期二之一:針對Javascript前端有了進一步的認識,學習了Boostrap的使用和DOM操作的應用。
學期二之二:軟體開發實務入門,對於API和Ajax有了進一步的認識,並對於前端涵蓋之前學期學過的進行統整的實作。
學期二之三:則是二學期中最有趣,但也是最爆炸的後端開發實務,除了學會了Git的操作,並開始使用Node.js, Express, Mongo DB, Heroku,以及其它的相關套建,查詢第三方套件的機會越來越多,透過VSCode將眾多的資料結合產生頁面,整個成就感可以說是衝破天花板。

學期三:與學期二不同,是分了兩條支線,而我選擇的是與二之三較為相關的全端課程,在課程中從Mongo DB轉換到了My SQL,另外,在同步與非同步有著更深的了解,最後,則是對於團體專案的考驗。

反思

對於課程所帶來的知識養分,透過文字無法形容的充實,對於AC是難以表達的感謝,在大腦容量只使用3%的研究,很高興因為做出了選擇可以更接近於這3%,不愧對於降生於一出生就擁有腦袋可以思考的人類,雖然比上不足,但也不枉費這半年以上的學習,增長了知識,也對於踏進程式領域不能說有以一擋百的力量,但至少因為奮鬥而得到了一張門票,也期待在接下去的路上能順利找到工作並回饋AC,成為一個成功的學長,故事不是結束,
To be continued…..

作業展示

調色工具

--

--

啟蒙

2020/04/05,搭上了AC的學習列車,一路從code當英文和數字看的小白,循序漸進而變成將英文和數字轉化成code的萌新手,轉眼間,這半年學到的東西不勝枚舉,技術方面、心態方面甚至是想像力都變成超能力了。

夥伴

在最後一學期的畢業專題,很榮幸的可以跟學期一就一起學習的住在新莊的台南南霸天耿綸,有著許多領域經驗與初入鐵人賽就獲獎的天命、在遊戲龍頭打滾後決定入凡間救世的切版魔人加自帶團隊氣氛催化劑Buff的民權西羅素以及處處都可打code且效率一等一,比UBER EAT還狂的台中扛壩子柏毅Liam,三位隊友一起共事,共同協做Twitter專案。

分工

在專案中,我負責的是針對model 和 seed的規劃,以及對於貼文推文使用者互動的controller的編寫,回頭回顧才發現在一開始的討論真的十分地重要,還好有先團體溝通將事情分配並且將每個人在一開始就有的問題都提出來討論,所以在指定功能製作的過程基本上沒有過多的卡頓,就連遠端git merge、git pull、git push,都可以很完美的呈現出來,這次協作中最主要的收穫可以分成兩點:

  1. 遠端協作中與夥伴討論,以及線圖控制並可以完美的呈現,我們透過master底下在建立一個develop,以確保我們的feature不會立即的推到產品線,可以在develop的緩衝區作一個測試的動作,另外,還設立了兩組heroku,一個是給develop的測試機,一個則是master的正式機,也因此我們的線圖在master的地方不會有fix,而是每次的改動都由develop接收。
  2. 夥伴在進行code review,了解到了風格一致的重要性,以及對於將程式碼精簡並易讀的方法,並在先求有在求好的心態中,一步步地在求有之中也能夠盡量優化程式碼,而減少partner的雞蛋裡挑骨頭。

溝通

就指定功能的順利秘訣,可以歸功於夥伴們的心態以及團體意識的建立,大家都很了解此專案的目的,也很願意提出意見以及看法,使得每一次的ZOOM會議都有著部分的進展,ZOOM到後來也習慣每40min的中場休息,在製作過程中的重大事件,大概就是與後端夥伴耿綸針對一開始的auth controller 要進行merge的部分了,由於,我的進度比較快,因此,對於功能上req.user的部分還沒有辦法落實完全的檢查,以我的想法是,只要程式碼沒問題就可以先到develop等後夥伴的controller,但是,隊友的想法則是要再把他的feature併入後測試完在PR進develop,對此我們就進行了一系列的溝通,這部分他踩得很硬,因此我就對於為了要將線圖完美呈現,而決定另一種方式的退讓(pull 後再重新進行feature),沒想到他又拒絕了我,這時我就我的理解上提出了我的堅持,我希望在不干擾他人的情況下,我自己的線圖製作可以以我自己的想法進行,畢竟是我的feature裡而不是develop上,結果突然的堅持導致耿綸嚇到以為我釋放的是怒氣(後來分享時有多次提到,不過完全是錯誤的理解,只是霸氣外露XD),其實只是覺得既然要的結果以達共識,我作了必要的退讓後,在我自己的工作上可以秉持自己的風格,而不是連過程都要被設定,重申了一遍結論然後停止話題直接,深深體悟不帶情緒的溝通才是最好的溝通,對於堅持的理解以及目標的確定,中間的過程並非爭論的必要,只要最後結果是好的最重要。

約定

針對挑戰題的部分,很可惜的挑戰題近在眼前在門的另一頭,但是伺服器聯接的門卻是鎖上的,雖然一度想將前後分離連接的部分改掉,以繳交作業為最終目標,但在最後與心裡的不甘心和小組的溝通,決定雖然這是個挑戰題,但是將此專案成為未來的的一份作品,所以哪裡跌倒就哪裡爬起,死在這裡就坦然接受,並約定會繼續將專案完美呈現。

好比人生,每個選擇背後都有著後悔以及不甘心,但是,如果失敗了沒必要氣餒,接受失敗並學習經驗,所有的一切必定會再未來的某一段人生展現出驕傲的成果。

--

--

  • 你為何會選擇這個專案?

由於在日常生活中最普遍用到包含CRUD功能且功能可擴增性最高的工具就屬於記帳軟體了,為了能夠更加靈活地運用所學知識,以及更深入的探討技術,因此選擇製作expense-tracker此項專案。

  • 你使用了什麼技術?

此項技術是以Javascript為基礎,前端使用了HTML, CSS , Javascript,並搭配了chart.js 、bootstrap以及 font-awesome來裝飾,後端的部分則以Node.js為開發,使用express框架搭配handle-bars模板,並使用MongoDB搭配mongoose操作資料庫。

在使用者登入機制的部分則採用了passport.js的技術,並加入bcryptjs來加密保護使用者密碼,connect-flash來顯示執行錯誤的訊息,另外透過dotenv來管理環境變數。

  • 哪部分你相對能掌握?哪裡花了最多時間?

對於基本的前端架構,後端的架設可以快速的就完成了,但是為了要將date的變數從string改為date的部分花費了許多時間,並於filter 月份和年份的時候再度花費了不少時間,此外,為了增加圓餅圖和長條圖,用到了前端axios來獲得後端處理後輸出的json資料,這部分也花費了不少時間。

  • 過程中碰到什麼困難?又如何克服?(例如:查找網路文件)

由於unixTime 和 IsoDate的轉換要弄懂花費了許多時間,還好上網都可以找到相關的資料,只是要從眾多的資料中找到合適的資料花了許多時間,另外則是為了將後端的資料交給前端作axios的接收使用,也是花了很多的時間,可惜尚未有更多的時間可以做鑽研,預計在未來更深入的去作探討以及改良。

  • 過程中你有對哪個技術有特別深刻的學習?

在同步與非同步的部分,目前才初步的探索了表面,於製作上更深刻的了解到了同步與非同步的重要性,另外對於資料庫的串接也有更深刻的體悟,會在花更多的時間投入以及回顧的探討。

--

--

在2-3學期開始接觸後端的開發,比起前端的版面規劃設計後端更重視各路由連接的設計,並且需要碰到許多的套件,開發框架的Node.js和Express.js、資料庫管理的MongoDB與操作的mongoose、將前後端分離連結的handlebars、處理資料的中介軟體body-parser和控制request的路由語意化的method-override,還有伺服器端的heroku和雲端資料站github,雖然在一開始十分的不熟悉,需要寫一次看一次甚至看好幾次,但是重複的使用後,漸漸地就可以一次打完。 在期末的專案,由於學習了Git,所以開始習慣隨時的記錄,但是每次的記錄總是有些閃失,可能左邊漏了一點程式碼,右邊又漏了一點程式碼,所以結點的部分常常會分的很零散,這時候就會想在git add . 和 git commit -m的時候就先檢查,不過,想的總是比做得容易,還是多少會忘記,這時候就會想說要把做壞的節點給毀屍滅跡,不過因為commit後甚至上了github,更動時都會一直產生錯誤,試過右鍵,回到前幾個節點重新創節點,直覺上的反應都不是那麼容易執行,後來就想到了課程中有提到節點的操作,所以就先從教材裡面看,然後覺得還是懵懵懂懂的,所以就從教材裡提取了關鍵字,上孤狗搜尋,首先主詞是Github,再來是動詞[刪除],然後受詞[節點],把這些關鍵字打上去就可以找到很多相關的資訊,然後再慢慢的閱讀找到需要的資源,而在這中間也額外的透過閱讀得到了額外其他的知識。