大四上學期的回顧
回想過去四上的我其實做了一些不同的嘗試與挑戰,不管是實習上或在學校,程式技術的學習,職場上辛苦的體驗,都有不少的收穫,也更讓我認識了許多新朋友呢!
這段期間包含著2種成份的經歷:
學校課程的新滋味
沒錯! 就是新滋味。因為我自己原本是建工校區的學生,為了嘗試不同的課程增廣見聞,就跑去燕巢校區上資管系的 專業選修課,絕對不是因為被當才跑過去的。
大老遠騎機車也要個30~40分鐘,別人可能都是一求通識好過或是有妹子可以一求眼福,其實我原先也是有這麼一點打算的哈哈。不過,就在第一週上了那門課的課程介紹後,我的眼睛都為之一亮了,而且還是業界的老師教課的,感覺很特別,讓我就此打算待下去啦。
課程: 企業軟體開發與安全程式碼設計
課程內容: 期中考前是教資料庫SQL進階語法的應用,期中考後卻是教CI持續整合1、程式碼自動化檢測、資安漏洞的防範…等等,後期一整個就是超有趣的阿!SQL語法比較有印象的是聚合函式Aggregation function2與CTE3,因為是很實用的技巧都有做上筆記,就算不懂語法,老師也會與學生互動,請會的學生上台示範講解。
CI持續整合、程式碼檢測就是使用Jenkins + Git + SonarQube的組合4,該如何測試、如何看數據分析、錯誤資訊檢測、程式碼使否有資安風險,這些都是學問阿。老師是以PPT做輔助來講解的,看似不怎麼樣,內容卻是很詳細又加了一堆補充,讓我們能更瞭解,還親手帶我們做過一遍,體會企業級的系統軟體在上架前是要經過許多道手續去檢測與整合的,才會有真的好品質,否則維護成本將會讓人很頭痛。
最後的期末報告是拿自己的畢業專題(有關程式碼專案的)來做檢驗,是否有資安漏洞或技術債,把前幾堂課所學的技巧都運用上去,當時還真的檢測出不少的bug與資安問題…ㄎㄎ
上課的老師雖然有一位主要的業師在教課,但整個學期每幾次上課就會換一個,換過2次女的3次男的,可以讓人換了一換再換嘛!不過,每次上課都有不同的新鮮感與趣味,每個老師人都很好,風格不大一樣,卻都是很認真在教課的態度,主動上前詢問學生的老師也是有的。
這段期間也認識了幾個資管系的好友,樂觀開朗時常笑臉迎人、做事非常認真的小黃,有時候也很無俚頭又很搞笑,很高興能認識這位資管女孩,讓唯一一個別系的學生不覺得孤單的好夥伴,另外早上的羽球課也正好是同學,雖然我每次都是去運動,但也真的蠻巧合的阿。還有一位熱心助人、前端網頁程式寫得很厲害的Leo,雖然看似肥宅,但意外地很好聊開,我也受他的幫助不少,很感謝他。
最後總結
從上大學以來第一次讓我覺得很開心沒壓力與真心有東西可學的一門課程阿!!尤其業界教師的功力真的很厲害,專業實作技巧給的都很全面,也都有在關照學生,讓我跑去燕巢這麼多次沒有白費阿。我認為能提早瞭解這些課程知識,對以後在應徵職場上想必是有不少的加分成效吧。
實習上的辛酸血淚史
去年2016暑假開始其實我就在實習公司渡過了,當時就是進入學校介紹的公司 西川系統,他們的專長是幫忙企業做代工──開發手機App應用軟體,但我在因緣際會下改做他們的後臺管理系統,撰寫PHP&MySQL與JavaScript的程式開發,還有處理後端資料庫與web server5。
當時以為有自學過能比較輕鬆,卻還是得從頭學起公司所用的JavaScript框架ExtJS6,初學時真的蠻痛苦的,尤其正值人員教導我才不到三天就放生我啦!而且這項技術還不是開源Open Source的框架,網路上能參考的資訊少之又少,本身就非常難以修改了,還有限制Api7的取用方式…當時搞懂整個架構的運用方式就花了我快一個月的時間吧,我記得7月的訓練期真的過得好漫長阿 ><。
8月習慣之後就比較好上手了,開始寫客戶所需的功能,上機debug、新增功能介面、PHP後端資料庫撈取、幫忙工程師完成測試系統…等等,還多少碰了web server的內容,撰寫Api給手機端使用,還瞭解了資料庫的搭建與維護之類的技巧,其實這個月過得還蠻充實的。
原本在9月暑假結束之時預計要離開公司,我已完成最少320小時的實習時數了,但是當時公司內部正在做自家的產品,新專案為電子商務的平台管理系統,而我也參與了不少的內容是還沒結束的,此外我也通過了可以領取時薪的考核,就這樣又加上總經理的推託之下就再簽了一個學年的合約,條件是我可以彈性地返校上課與處理實習公務之類的,所以大四上學期就是每周平日時間除了星期四以外都會待在公司實習了。
基本上都是過著朝九晚六下班的日子,中午有一小時半可休息,有時候下班會趕專案趕到超過六點半才走都是普遍的。某些專案的bug一直兜不出來,甚至還有過2個實習生一起review了整個下午都還無解,最後才發現其實是資料庫本身的問題,跟程式碼無關…,白費了一堆時間真的很幹=.=,只能說這種debug經驗也太不值了吧QAQ。
平台管理系統的新專案大致到11月底才告一段落,共耗費了4個人力成本與超過半年的時間,大大小小的功能都是做好做滿阿。讓我最印象深刻兩點是訂單管理系統與開發UI新元件的圖表系統。
訂單管理系統是由我跟另一位實習生合作完成的,有出貨、配送、送達、取貨、退貨退款、取消、失效…等等狀態細部功能,因為都有互相關聯,所以花了不少時間才達成程式碼的架構共識,互相觀摩code review來增長見識,也瞭解自己還有須加強的地方,一起合作溝通就變得很重要,有時解bug也得互相配合才行,這是蠻有趣的經驗啦。
開發新元件圖表系統是一個全新的嘗試,因為其他專案都沒有做過類似的功能,就只能硬著頭皮上網參考官方元件套來用了,再加上與資料庫做連結,花費了一段時間做研究,還好7月當時打底有打深,至少還能改動元件應用在系統上,圓餅圖、長條圖、折線圖的參數微調都不一樣,圖形刻出來的的當下極為感動阿,這也是第一次靠自己開發ExtJS的UI新元件就上手。
上學期最後一個月則是改做Web網站設計,這次與UI/UX視覺設計人員合作,一樣也是全新的內容,邊學邊做邊嘗試,尤其CSS的撰寫都搞得我一個頭兩個大,寫起來這樣,瀏覽器呈現的卻是有偏差,這時修改或增加幾個參數就變得很重要,前端設計真的不是想像中那麼容易,美術技能也要有點天分才能讓客戶感到滿足阿!
我在公司實習的另個收穫就是交朋友啦!那裏一大半都是樹德科大的實習生,全都是男生,就算是寫App的學生,一個遊戲話題也就能搭起朋友的橋梁啦哈哈,之後還一起鳩團聚餐過呢。其中有瞭解到他們學校的實習方式是三次3學分的制度,所以要三個學期才能解決實習必修,還真的很辛苦啊!當然我們學校的同學也是有的,只是他們的工作都是寫App IOS,所拿的Mac筆電是從電子系那兒借來的,其實我也很想借一台來玩玩,但好像太晚去申請就被借光了,太可惜了..嗚嗚
最後總結
已經做了半年的校外實習,真的與學校生活相差非常多,沒有老師的叮嚀或同學的提醒,沒有做錯了再改就能輕易了事的道理,也不會逼你去學習,基本上全都只能靠自己,程式寫錯了那些時間成本都得自己承擔,客戶需求debug不能拖延否則就會拖累其他人的進度,總之就是非常累人阿!在畢業上職場前,除了有這些經歷與作品,就是磨練自己的抗壓性與自主學習能力,讓自己不輕易就退縮。
文章題外話:
這是我第一篇的部落格文章,終於完成啦!
之後就會是技術文居多啦!
- 1.持續整合 (Continuous integration, CI),是驅動所有系統品質工具的引擎,可產生報表、檢測程式碼好壞…等等。參考連結 ↩
- 2.查詢資料庫資源時,對所有數據式子進行數據運算的函數,例如:COUNT、AVG和SUM函數。 ↩
- 3.CTE (Common Table Expression),用來簡化複雜的SQL陳述式與暫存用。參考連結 ↩
- 4.請上網google參考,因為內容太龐大了。 ↩
- 5.網頁伺服器(web server),可提供所需api與網頁url,透過http協定傳給客戶端。參考連結 ↩
- 6.一種前端程式語言JavaScript的框架,但它整合了前後端所需的連接與應用資源。 ↩
- 7.應用程式介面接口(Application Programming Interface)。參考連結 ↩