壹、工作內容
一、工作環境
1.舊公司
實習的前幾個月公司在板橋創新樓(板橋區四川路一段號),通勤方式為內壢搭火車到板橋後,再搭公車即可抵達公司門口,進出採刷卡制度,實習生配有筆電和個人座位,內部有許多會議室可供討論,也有販賣部、飲水機、自動販賣機…等,飲食方面附近步行五至十分鐘也有亞東醫院外市場可以吃午餐。
2.新公司
五月份時公司搬家,搬至TPKC大樓(板橋區遠東路號),通勤方式一樣為內壢搭火車到板橋,接著改由搭捷運至亞東醫院站下車,步行約五分鐘即可抵達,新公司採取"敏捷辦公室",講究辦公效率與便利性,相較舊公司更為寬敞、明亮,除了舊公司有的設施外,還多了很多人性化的設計,例如:提供按摩椅給久坐的人按摩紓解痠痛、隨處可見得座位讓討論可以隨時進行,飲食方面附近有愛買等店家可供選擇。
3.目前上班模式
因應目前人手一機的趨勢,部門由原先的遠傳電信網路門市(Fetnet)管理,改為將重心專注於遠傳APP(遠傳新生活)後台開發,接觸的內容也從原本的電子商務平台,轉變為應用程式後端開發。
現在由於疫情的因素在家實習,雖然不用通勤上班,卻有點懷念公司辦公的氛圍與舒適的上班體驗,但由於疫情嚴峻,還是減少出門染疫的風險,在家透過線上開會討論整合實習狀況,與主管確定工作內容。
二、工作介紹
1.環境建置
遠傳大部分使用Java語言來寫程式,工作初期為建置開發環境,而我們使用Eclipse作為開發工具IDE(整合開發環境),功能包含了編譯、連結、除錯,可處理如:html、xml、json、java…等各種型態檔案,需要配合Java版本供IDE使用,並透過此工具學習如何建立專案,在實習期間基本都在使用此工具學習Java,除了程式語言外,學到更多的是如何更好建立專案。
2.資料庫設置
利用Mybatis框架實現CRUD,建立與資料庫連線環境:資料庫帳號、密碼以及名稱,生成對應的DAO層、Service層、entity、mapper.xml,可在mapper.xml中撰寫sql語法,java可透過生成的entity,使用Method:.get( )、.set( )、.save( )…操作資料,實現CRUD控制資料庫,這種用Java控制資料庫的方法,與學校所學操作資料庫有很大不同。
3.Java撈取線上json資料
運用Java撰寫程式撈取線上json,首先必須將整個json抓下來,在進行操作,json格式通常有很多層,有些是放陣列 "[ ]" (array),有些是物件 "{ }" (object),在接值的過程中,需要轉換成jsonArray或jsonObject來接取,透過Method:".get(key)"來獲得"value"的值。
4.Java生成並上傳資料至伺服器
利用從json撈取的資料生成檔案,建立vm檔案,使用變數 "$" 定義欲替換字符,java則建立velocity引擎並初始化,並在Java中指定vm檔,將撈取的資料利用語法 ".put()" 放進vm檔中,即可將vm檔內變數進行替換,"$" 變數會替換為放入資料;生成完檔案後,使用ftp與sftp兩種方法上傳。
5.心生活APP後台開發
目前工作的一環,開發關於後台的票券處理系統,讓使用者能夠透過心生活後台管理系統,管理票券匣,例如:咖啡折價券、兌換券…等,而我們的主要工作是製作頁面,負責管理票券匣,輸入各種型態資料,包含:文字、圖片、日期、檔案等型態,而透這些匯入的資料則會透過所寫的java存入資料庫以及本機,在這項工作中有運用到SpringMVC架構、Mybatis架構、html編寫和Thymeleaf應用,還有關於表資料應該使用"get"或"post"。
三、實習進度
1內容介紹
實習初期介紹了接下來工作的內容,包含了環境建置(Eclipse)、專案架構介紹(Maven專案)、資料庫建置(Mybatis),並解釋未來發展目標,透過同事所舉行多次的會議,清楚的引導我們認識觀念,更熟悉未來工作目標。
2工作指派
java讀取線上檔案內容,讀取內容透過Velocity寫入新檔案內,透過ftp與sftp將檔案上傳至伺服器;網路上有相關方法,因此自己上網搜尋的案例來套進程式中,網路上的內容可能是你要的結果,然而卻是完全不同的做法,可能已出現更好的方法,面對這些問題,讓我意識到查詢資料的重要性。
3後台開發
現在的內容為新生活APP後台開發,起初建立一頁面,內容為表格提供使用者進行票券新增功能,接著將表格內輸入資料的能夠順利儲存至資料庫與本機,因為疫情影響在加實習的緣故,需要重新建立開發環境,也會跟主管進行進度回報。
後台開發頁面
貳、學習
一、Java
二、Maven專案
(1)命名與import
Java命名時具備規則習慣,例如命名類別(Class)時,首字採大寫、駝峰式命名法,且要與內容有關聯,不能隨便取a、b、c…等名稱,程式碼可能不只自己閱讀,要考慮其他因素;當有某個套件需要使用時,則需要透過import套件或util來使用。
(2)Debug
在程式報錯時,可以使用Debug功能,透過中斷點來判斷程式是否有經過或,若步驟太繁瑣還可以跳過函數,將滑鼠放到變數上也會顯示目前變數狀態,利用Debug除了能看出程式出錯部分,能更了解整個程式運行時的步驟,甚至是中途的狀態。
實習初期接觸到有關Maven專案的建立,同事解釋以前開發一個Java專案,需要先把jar包下載下來放到專案的目錄下,並需要注意jar包版本是否正確,手動添加導致工程過大。
Maven架構的出現不再手工加入jar包,若本機 (local) 電腦中沒有這些套件,Maven會從預設的網路位置下載到我們本機的repository中,之後所有Maven專案需要用到的套件,Maven都會先找本機repository,關鍵字找出需要的jar包,通常可在 "Maven Repository" 網站中找到,複製放入pom.xml的依賴 "<dependency>" 中,再執行 "Maven build",出現 "BUILD SUCCESS" 後即完成專案建置。
三、Spring
(1)MVC框架
MVC的三大元素:模型(Model)、視圖(View)、控制器(Controller),Model負責進行資料管理和資料庫設計,Model不處理資料的顯示、操作;View是負責呈現模型數據和讓客戶端的瀏覽器能夠將資料展示出來,像是負責前端的UI介面(html);Controller用於控制應用程式的流程,包括用戶的行為和資料Model上的改變;MVC的優點:將一個專案的開發分成三個不同階層來處理,讓每一層的分工更清楚,同時增加協同作業的效率,團隊每個人可以在各自負責的部份進行開發,也能有的一致的開發設計與方式。
四、Mybatis架構
在上述資料庫建置中提到mybatis各層的建立,而日前剛得知可以寫Java來自動產生:DAO層、Service層、Entity層、Mapper層,只要輸入目標資料庫的名稱、帳號、密碼即可,進而減少建立這些檔案的時間,甚至Mapper內的基礎SQL (select) 語法也不必自己寫,可以說是相當方便。
(2)Spring
Spring就是讓物件與物件之間的關係沒有通過程式碼來關聯,都是通過配置類說明管理的,當用已經初始化的對象時,例如:某資料庫實體(Entity)、某功能(Util),可以直接注入@Autowired,而非new一個新的,可以將創建的對象或依賴交給它管理,並且支援各種框架如:Mybatis,目前專案建立也圍繞著Spring建構,透過"@"(annotation)標明要讓Spring所掃(scan)到的屬性,程式只需要一個主程式(Main)即可啟動,Spring的功能不僅於此,現在所學還只是皮毛,加上持續有方法推出,了解整個架構才能更加上手。
五、Other
在心生活後台開發中需要將表單(form)中輸入的資料傳回本機,必須使用到傳資料的方法,當使用 "get" 時,網頁的網址會出現表單所傳送的封包內容,而 "post" 則是表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址,用戶看不到這個過程,因此資料相對安全,比較不易外洩。
參、自我評估及心得感想
今年一月,我還只是一個還沒畢業也沒有什麼經驗的職場新鮮人,起初在做專題研究與專業實習間猶豫不決,不知道該選擇哪個方向,家人希望我畢業後能往更高的學歷邁進,建議我選擇專題研究,朝研究所發展,經過跟家人、同儕間的意見交換,最終我決定選擇專業實習,我認為提早累積經驗這種難得的機會只有一次,必須好好把握,畢竟在未來還有很大的空間能往更高的學歷發展,家人聽取我的想法後,尊重我的決定,讓我繼續朝專業實習發展。
進入實習後,首先是生活作息上的改變,從學校進入職場,不在像大學一樣,能夠自由彈性分配課程以及休息時間,需要自我規範生活作息,畢竟這是我選擇的方向,必須對自己負起責任,也為了保持自己最佳學習狀態,每當上班的那天就必須提早準備,深怕會錯過上班時間,在剛實習的前幾天,還需要適應通勤的繁忙;其次是學習職場方面的知識,我發現跟學校所學習的知識有所出入,還需要經常麻煩同事來指導,例如面對專案框架的介紹或是遠傳獨有的工作術語,是我從前沒有接觸過的領域,還好有主管與同事的指導、解惑,再加上現在非常發達的網路查詢,我還學習到如何利用關鍵字搜尋法,更有效率、準確地找出相關文章,讓我更快進入狀況,若是沒有這些協助,我可能無法了解的這麼透澈;接下來是心態上的轉變,從學校到職場,原先我在學校的心態是為了應付考試,而努力學習,雖然有學到東西,但不一定是有興趣的內容,導致學習品質不佳,不會想再接觸額外的內容,然而職場上的學習心態就有所變化,由於不用在為了考試而學習,不再有壓力的學習,進而增加學習新知識的動力,除了交代的工作外,還會想學相關領域的技能,充實自己,進而有更好的專業實習體驗。
綜上所述,經過這幾個月的磨練,我不後悔我所做的決定,畢竟在實習過程中我學到很多實用的技能,接下來的實習我會更加努力。作為一個工程師的能力還遠遠不足,像是與人溝通時的技巧,需要表達的更加清楚,提問時能抓住重點,問對核心問題,未來在寫專案的時候,注意專案架構是否清楚,具有可讀性,命名檔案時,依照公司的習慣,而非只寫給自己看,我相信成為一個工程師不僅要具備這些能力,還有很多我還沒接觸到的問題。
希望剩下的時間,我能好好把握,也特別感謝老闆、同事的耐心幫忙,不惜利用自己寶貴的上班時間,讓我知道我所不足的部分,也引導我未來學習的方向,讓我朝著成為一名工程師努力!
肆、對系上的建議
面試方面
感謝系上提供實習的機會,讓我可以在大學期間提早體驗職場環境與競爭力,系上在實習前開了很多說明會,加上邀請了有實習經驗的學長、姊來進行分享,讓我了解實習大致的內容、方向,給予我充足的時間做準備,以應對面試可能會遇到的狀況,還有模擬面試以及履歷健檢等多方面的資源,希望在未來能提供學弟妹同等甚至更多這方面的幫助,提高面試時的專業程度,進而增加面試的成功率。
技能方面
實習過程中,難免會遇到課堂上沒有接觸過的知識或技能,例如:前後端概念、專案設計架構、問題解決…等,學校學習期間除了對於基本知識的涉略,希望能夠在課堂中能有關的知識介紹或是加開相關課程,這樣在實習的時候可能會比較好銜接,讓有興趣的同學能夠了解。
疫情影響
因為疫情影響,導致目前上班都改為遠距實習,相對於在公司實習較不方便,公司筆電因為網路問題無法在家中使用,需要重新建置開發環境與設備,且與上司無法隨時討論目前進度,必須要等待有空閒或是特別排定開會討論,才能反應進度以及目前遇到的問題,以上種種原因,進而影響實習品質,因此我認為報告數量方面可以減少,以配合目前疫情狀況。