我在研華實習的日子
很快兩個月過去了,實習也來到尾聲,想把這暑假的點滴記錄下來。
專案題目- Dashboard前端介面
這次暑假參加研華Elite 100的實習計畫,專案主題有非常多,我履歷投遞前端,負責協助公司開發WISE.M+平台上的Dashboard管理介面,將資料視覺化呈現給使用者,針對水資源處理廠提供解決方案,實習生的工作內容是把平台上Dashboard所缺乏的元件開發出來。
Dashboard是在Grafana這個open source上做延伸,使用的前端框架為Angular,還有引入一些第三方的library。
工作日常
團隊跑敏捷開發,每兩周為一個Sprint,會和北京的同事、UI團隊、PM進行遠端會議,針對該次Demo進度做檢討,我們自己也會做Sprint Review,每日還有15分鐘左右的站立會議,和主管報告個人進度。
剛到職的前兩周需要上公司內部的課程,熟悉如何在平台上做開發,並通過初級測驗。除了前面提到的測驗之外,我們還完成交辦下來的兩個Panel,進度算不錯。
第三周進行一次期初報告,參與會議的人除了計畫內的實習生及mentor之外,還有CTO親自來聆聽實習生簡報的內容。
期初報告目的在於了解目前執行的專案是否符合訂立的目標,CTO會針對內容提出問題與改善建議。
第五周公司在林口進行實習期中成果展覽,實習生需要把第一個月的成果以展覽的形式做呈現,其中包含做海報、場佈。
當天有許多外部的業師以及特定產業的專業人士來參觀,連CEO也都有來!(還第一個參觀我們的成果XD) 參觀的人會針對展覽成果提出建議,展覽結束後還需要上台進行一次期中成果簡報。
當天行程非常緊湊,回到家像在洗三溫暖…
後續幾周實習生們會根據期中展覽得到的回饋把專案做調整,準備期末成果報告,做最後呈現。我們繼續把交辦下來的panel完成,放到期末簡報中,值得一提的是,後面的時間完成每個panel的時間比之前縮短一些,是件令人開心的事。
期末成果報告,我們把所有完成的專案都放入簡報,也修改一些覺得期中報告做得不好之處,很幸運我們得到評審好評,獲得這次專題的團隊優勝,對我們來說是非常大的鼓勵,努力兩個月後有所回報~
一些值得記錄的事
Merge Conflict
還沒有來實習之前,我和實習的朋友都沒有什麼與他人協作的經驗,自己對於Git版本控制也沒有很熟悉,停留的程度大概就把自己練習的作品push到GitHub上,用過的git 指令大概就 git status
、git commit
、git push
或是連接到遠端專案,什麼git branch
、git reset
啦,有些根本沒聽過,或是知道但不知道怎麼用(嗚嗚嗚)
在缺乏協作經驗的情況下,我們在專案開發前工作切分沒有明確,導致大家把各自開發的功能完成後做整併就發生問題— 分支合併衝突(conflict),遇到時才發現我與對方修改到一部分相同程式碼,還要花時間討論重複修改的地方要用誰的……有時候看起來衝突都解完了,但專案還是無法正常執行,回頭檢查才發現有些地方要用原來的code,不然就是用git做分支合併或切換因為指令或流程順序錯誤導致花更多時間修改壞掉的分支……
我看到這張圖時,過沒幾天就血淋淋發生在我身上,為了解merge conflict 晚20分鐘下班,真D慘。
第一次解merge conflict真的會想這麼幹XD
檢討會議上發現需求和當初不同時
這事發生在某次遠端會議上,Demo功能和對方說的不一樣,後來知道是當初溝通需求沒有講清楚,聽到的當下覺得很苦惱,畢竟還要做修改,不過只能再次確定好需求,回去把功能修改。
自動化展
接近暑假的尾聲,適逢在南港展覽館的自動化展,利用空閒時間去參觀,公司也有進駐,攤位的入口牆上是一個大螢幕,上面一部分展示我們實習生這兩個月的成果,看見成果被放在大螢幕上給人參觀的感覺真奇妙,這讓我們有滿滿成就感。
聚餐
Sprint Review
每兩周一次的Sprint Review,我們會把自己覺得好的、壞的、可以多做、可以少做的事情,還有心情都寫在便條紙上,再貼上白板,每個人把寫下的事情做分享。
個人還蠻喜歡做這樣的會議,藉由會議回頭檢視自己有那些地方做得不足,那些地方值得肯定,這樣的過程讓自己逐步成長。
反思
兩個月磨練帶給我的反思。
勇於提問
到職初期,對交辦下來的工作都只是照做,沒有進一步去思考可能還有哪些功能需求,後來主管希望我們得有自己的想法,改變原有作法,先給我們設計圖,大概敘述應用場景,我們實習生要提出可能有哪些需求,試著提出來討論,最後將所有工作列點出來做工作分配。
此外,如果在開發時遇到困難,可以主動找主管或同事討論可能的解決方法,不要因為覺得會打擾大家所以選擇不發問,大家都很願意幫忙,這是我覺得最棒的地方。
不應只是埋頭苦幹
這個反思是在期中成果展之前,與PM一同針對簡報進行會議檢討,這次會議中發現其實對自己開發出來的東西實際應用場景不了解,畢竟上台簡報需報告效益及如何使用,之前只專注於開發手邊的東西,卻忘了去了解我們成果能夠解決客戶什麼樣的問題,發揮何種價值,我想這點是做為開發者也該知道的事情。
明確的工作分配
有merge conflict的慘痛經驗後,我們學到在工作分配上,不應該多人開發同一個feature,結果只會花更多時間在解衝突而已。
Git 很重要 Git 很重要 Git 很重要
因為很重要,所以說三次,不會版本控制,很難跟別人一起開發同個專案,前面的教訓讓我開始學習git 更多指令,也許還不到精通,但應用層面上已經足夠,有問題都能在短時間內解決。
接觸不同領域的同事
公司分工精細,我們可以專注在程式開發,但每次進行會議時,會和不同領域的同事一同開會討論,可以藉這個認識不同職能的同事。
心態調整
自己有修部分資訊科系的課,在網路上學前端課程,偶爾把學習內容作筆記,但非資訊本科生,不算受過正規訓練,所以在投遞履歷前一直很擔心自己準備不夠,不過想到身邊也有不少朋友去實習的職缺也跟本科系無關,這年頭不務正業好像也不是什麼新鮮事XD,還是嘗試投看看。
很感謝主管願意提供實習機會給我,讓我有實際開發經驗,到職前幾天也擔心實力不夠導致進度拖延,拖累大家。
不過後來發現沒想像中糟糕,每個sprint都有如期完成進度,這樣的結果讓我對自己增加信心,心態上也不想侷限在自己所屬科系,反而更在意我學了什麼,能做什麼實際應用。
後記
實習過程中,與夥伴一同討論技術問題,或是後續生涯規劃,甚至生活瑣事,偶爾講講幹話(?),這樣的互動模式成為我暑假日常,本身就喜歡玲聽他人的故事,學習他人觀點,感謝實習夥伴的包容,遇上難題總是不吝嗇伸出援手。
完成專案內容固然重要,但與你們相識更是可貴
希望在未來的路上能夠再一起相聚,感謝研華帶給我莫大的成長,不管是技術面,或是與人溝通,相信在未來會有幫助。