我在社群網路公司實習的日子

我在社群網路公司實習的日子

前言 #

今年四月,我投遞出人生的第一份履歷。

我使用該公司的社群網路服務已有近七年之久,於是當他們釋出前端工程師的實習職位,考慮不過半天、回過神來我已將履歷投至對方信箱——也很幸運地,在經過篩選與面試後,我獲得了暑期實習的合作機會。

經過一段時間沈澱之後,我想我是該好好寫篇文章,分享我在短短兩個月的實習過程之中的所見所學。

想像與現實 #

我所期望的實習型態是圍繞著特定專案的核心概念,再以實踐專案中的每個功能、使用者經驗優化為目標,去摸索與學習。

學生時代比較多是個人專案的獨立作業,專案規模較小型、缺乏有制度的組織規劃,所以希望能在實習期間更加瞭解或是涉身經歷這些大型專案的開發流程,增加大型專案前後端的合作經驗。技術層面則希望能先紮穩原生 JavaScript 的觀念再學習 Webpack、ES6 或其他現代框架,以理解背後目的和提升品質為前提去精進自我能力。

以上是我在實習前對工作型態的期許,然而在面試時前輩也跟我大致做了說明:

正式上路 #

我所負責的工作內容是與團隊中另一位後端實習工程師,一同開發 Bookmark feature,也就是讓使用者可以自由儲存他感興趣的 post 內容,提供更加便利的方式以再次瀏覽,同時也必須整合原有的專案結構去增加新 UI 、加入整個新功能。

實習初期主要花了一些時間去瞭解網站的專案架構,有些頭緒後才開始涉身投入開發過程。

接觸的新事物 #

思想衝擊 #

作為一個新鮮人,在實際投入業界以後,我開始對於過去在學校的所見所聞有了更加深刻的體會,同時也接收了一些未曾想過的開發新觀點。

從作業到產品 #

在校作業往往有明確的要求與規範,然而實際開發新產品、新功能時,一切都從零開始。

成為開發者的同時,讓我比以前更加在意程式效能。雖然我不是後端、不負責資料庫的架構設計,但是掌握過去所學的核心科目(資料結構、演算法),確實對於寫好程式碼有極大幫助,至少會養成習慣去分析並且選擇最佳解決方法。

僅僅是功能寫好是遠遠不夠的,其中一個感受深刻的部分是資訊安全層面的考量,這次開發新功能我也對 CSRF、XSS 等攻擊手法做了不少功課,這些也都是在校時期較少接觸的部分。

提高程式碼的架構可讀性 #

實習之中隨著元件越加越多,程式碼也被我越改越亂,當我意識到的同時已然變成了 Spaghetti code

只好捧著程式碼去向前輩討教,也好好重新檢視了自己的 coding style——主要是疏於注意重複性程式碼,導致寫出維護性與可讀性不佳的程式碼。在撰寫起初也許不認為這段 code 包成 function 會有多大的效益,但是隨著程式越改越長,如果能好好管理、組織程式結構,積少成多下來會帶來可觀的影響。

打造最佳的使用者體驗 #

就如同前面所說的,僅僅是功能寫好是遠遠不夠的,尤其前端工程師必須扛起整個網頁與使用者互動的門面,也開始讓我更常思考——要怎麼樣設計界面和規劃每個元件的事件,才能讓使用者容易上手、便於使用。我想這個部分我還需要多加琢磨。

後記 #

"Tell me and I forget, Teach me and I remember, Involve me and I learn." - Benjamin Franklin

這段話可作為我這段日子以來的最佳寫照。兩個月的實習過得比想像中快,我也學到超乎原先預期的東西和觀念。

同時我也有感於一天只有二十四小時真的好不夠,開始工作的每一天,往往覺得自己越是學習越是不足,還有好多新事物在等著我去探索,也是和這個部落格的標題有所呼應吧。

最後很幸運地,原先團隊並沒有打算招收新的正職工程師,然而在這段期間經過公司的評估後,卻開給了我正職前端工程師的 offer。很高興獲得團隊的肯定,期許自己能在工作過程中學習更多,未來我也會好好全力以赴。

分享文章