Reflection on My Internship Experience at GoFreight

GF 小編
GoFreight HQ
Published in
4 min readNov 13, 2023

Background

我是 Jay,在剛入職的時候是政治大學資科系四年級,為什麼想找實習的原因是因為未來想出國念書,在做研究跟找工作經驗裡我選擇了後者,剛好很幸運的在暑假尾聲找到 GoFreight,當時公司正在招軟體實習生,主要的內容是用 Python 做爬蟲,我剛好本人不排斥爬蟲以及當時感覺 GoFreight HR 給人的感覺非常好,想必公司氛圍也是不差,於是就進了公司!

I am Jay, a senior student majoring in Computer Science at National Chengchi University. I decided to pursue an internship experience to gain valuable skills before pursuing further education abroad. Given my interest in research and job opportunities, I chose the latter path. Fortunately, I came across GoFreight towards the end of the summer break, where the company was hiring software interns. The role involved Python web scraping, a task I was open to. The positive impression I had of GoFreight’s HR and company atmosphere led me to join the team.

Introduction to GF & Team

從一開始接受 offer 到入職第一天,整個流程非常的順暢跟專業,當時的公司有五樓以及十三樓,我主要是在五樓活動,第一次見識到新創公司都會提供的零食櫃,雖然我平常上班不太吃東西,但看到滿滿的食物以及飲料心情會比較好是真的。五樓主要是RD部門,但因為公司的WFH政策,其實座位上平常大約六成的人而已,所以空間異常寬敞。

我所在的團隊是 VIS(Visibility Team),主要的工作是確保我們蒐集的最新貨運資料我們可以快速穩定地送達到顧客手上,公司的產品除了幫助客戶管理貨運系統以外,會使用另外一個系統叫做 Tracking,而當客戶想要知道某個貨物的當下或歷史情況,我們蒐集的實時或歷史資料就派上了用場,透過將資料整理後送到 Tracking 提供給客戶。

我負責的項目是將資料送到 Tracking 之前,把資料整理打包好,而背後包含了 EDI(Electronic Data Interchange) 以及所有爬蟲的撰寫、維護,Tracking 的運作全仰賴資料流的穩定,所以我的工作就是確保所有爬蟲以及資料是沒問題的。

From accepting the offer to my first day at GoFreight, the entire onboarding process was smooth and professional. The company occupied the 5th and 13th floors, with my activities centered on the 5th floor. I was introduced to the snack cabinet, a common feature in startup offices, even though I don’t eat much during work hours. The spacious 5th floor was mainly the RD department. Due to the company’s WFH policy, only about 60% of the seats were typically occupied.

I was part of the VIS (Visibility Team), responsible for ensuring that the latest shipping data we collected could be promptly and reliably delivered to customers. Aside from assisting clients in managing their shipping systems, the company utilized a system called “Tracking” to provide real-time and historical data about shipments to customers.

My project involved organizing and packaging data before sending it to Tracking. This included handling Electronic Data Interchange (EDI) and writing/maintaining all the web scraping scripts. Since Tracking’s operation heavily relied on stable data flow, my role was to ensure the integrity of all scraping processes and data.

Experience sharing

在公司裡我學到了什麼以及每個階段我成長了甚麼我會分三個階段來說明。
第一階段是剛入職三個月,前期的我主要的目標是學習我未來將會負責的系統以及學習怎麼撰寫爬蟲爬資料,在來 GoFreight 之前,我其實很少使用 Python 以及爬蟲,但在這邊可以看到使用 Scrapy 框架以及 Selenium 的整合應用,十分驚豔。當我第一次發 PR 時是滿有自信的,但現實是被前輩 Code Review 後覺得自己寫得很糟糕,有時候甚至看不懂他們要求的改動,一開始是滿挫折的,但這段陣痛期很快就過去了。

第二階段我會說是第四個月到第八個月,這時我開始接觸 EDI,也就是處理資料的核心,在這部分我遇到了非常大的挫折,因為資料送到 EDI 後,我們會經過一連串的處理,而背後會涉及到許多第三方服務,像是 Proxy、Zyte、AirFlow,更別說基本的 Django 我都還沒掌握,於是那一段時間我每天 Trace Code,嘗試釐清以及理解整個系統的架構以及每個 Component 所負責的功能和為甚麼,這是我到公司後的第二個挫折,因為真的太多”為什麼要這樣寫”的感覺了。但其實被指派給我們的任務只是 EDI 裡面的一小部分修改,而那部分主要是做資料處理而已,所以相對簡單,只不過我就是很想把整個 EDI 的流程搞清楚,所以那時候常常看 code 的時間會比寫 code 的時間多。

最後一階段就是最後五個月,這時的我自認對 EDI 跟爬蟲都有一定程度的理解,大部分問題都可以有效的提出想法,這段時間算是工作效率比較穩定的時期,而我們也接手了大量的 test 任務,透過撰寫 test,可以更清楚的理解到整個系統設計的理念以及方法,而在修改流程上的問題時,我發現我也可以提出過去寫不好的地方並改進。而我跟另外一位 intern 也合作去嘗試使用機器學習來預測一些目標,我個人不算是 AI 專業,所以透過這過程我學到了很多實際落地應用應該注意的地方,算是意外重新複習了一下學校裡學到的資料處理以及機器學習,而要導入這新功能我也做了很多努力去理解一些系統設計的小知識。

I’ve divided my experience at GoFreight into three stages to highlight what I learned and how I grew during each phase.

1. Initial Learning (First Three Months):
During the initial phase, my primary focus was on learning about the system I would be responsible for and gaining expertise in web scraping. Prior to joining GoFreight, I had limited experience with Python and web scraping. However, here I was introduced to using Scrapy framework and Selenium integration, which amazed me. My first pull request (PR) filled me with confidence, but the reality of receiving critical feedback during code reviews was initially disheartening. Overcoming this initial frustration was a quick process.

2. Deep Diving into EDI and Data Processing (Fourth to Eighth Months):
In this phase, I started dealing with EDI, the core of data processing. This presented a substantial challenge as EDI involved a series of intricate processes with multiple third-party services like Proxy, Zyte, AirFlow, and even the fundamental Django, which I hadn’t yet mastered. I dedicated time to trace the code and understand the architecture and functionalities of each component. This marked my second major challenge at the company.

3. Steady Participation and Skill Application (Last Five Months):
In the final phase, I felt I had a solid understanding of both EDI and web scraping. Most issues could be addressed confidently, and this period saw stable work efficiency. Our team took on numerous testing tasks, which helped me gain a better grasp of the system’s design principles and methods. Collaborating with another intern, I explored using machine learning for predictions. Despite not being an AI expert, this process allowed me to practically apply data processing and machine learning concepts, reinforcing what I had learned in school.

Notable Memories

另外比較衝擊的就是我以前一直以為自己滿厲害的,但其實理論跟實際還是有差距,更別說我理論也沒有特別好,很多時候被 Paul 問一些 follow up 的細節我就會答不出來,一開始我是滿喜歡問問題的,但是漸漸地有些看起來很白癡的問題就會不太敢發問,但無形之中會浪費很多的工作時間,我個人也自己學會了一套自己找答案,若找不出來在把問題整理好發問的工作模式,這會很大程度的幫助自己學習以及兼顧工作效率。

除此之外,比較印象深刻應該就是 GoFreight 的飯局好多,感覺很多名目可以拿來吃飯,這或許是新創公司的特色吧,哈哈。

Moreover, I came to understand that theory and practice sometimes differ substantially. Over time, I developed a problem-solving approach, first attempting to find solutions myself and then seeking help if needed. This strategy enhanced my learning and efficiency.

Another memorable aspect was the frequent gatherings at GoFreight, which often revolved around meals, showcasing the vibrant startup culture.

Summary

在 GoFreight 的實習期間,我經歷了三個明顯的階段,從學習 Python 與爬蟲開始,到深入研究 EDI 和資料處理,最後穩定地參與系統測試與新功能導入。這段經驗讓我在技術和思維上有了顯著的成長。我在 VIS 團隊中負責整理並運送資料至 Tracking 系統,這需要 EDI 的應用、爬蟲開發與維護,以及測試與新功能實現,讓我獲得了豐富的技能和經驗。

My internship journey at GoFreight unfolded in three distinct stages, from learning Python and web scraping to delving deep into EDI and data processing and finally actively participating in testing and new feature implementation. This experience significantly enhanced my technical skills and thinking. My role within the VIS team involved data organization and delivery to the Tracking system, encompassing EDI applications, web scraping, testing, and new feature integration, providing me with a broad skill set and rich experience.

Advice for the Next Intern

對於下一位實習生,工作上我想分享以下幾點建議:

  1. 主動學習:專注於學習所需的技能。不要害怕挑戰,因為 GoFreight 處處都是挑戰。
  2. 溝通與合作:當你遇到問題時,不要猶豫向同事尋求幫助,前輩的經驗可以加速你的學習效率。
  3. 時間管理:實習生還有學校課業以及期中期末考,所以好好安排時間以及合理評估自己的能力會有助於你在工作上更順利不會 burn out!
  4. 不斷反思:定期反思你的工作,檢視你的成果和進步,並找出改進的地方。這將有助於你持續成長並提升自己的表現。

對於準備面試方面,也有幾點分享

  1. 不會 Python 沒關係,請熟悉一個語言
  2. OOP 複習一下 最好能用例子去說明 OOP 特性
  3. 基本的資料結構也要熟練 抽象概念要能解釋清楚
  4. 保持自信

For the next intern, I’d like to share a few pieces of advice:

1. Active Learning: Focus on acquiring the necessary skills. Embrace challenges as opportunities to learn and grow.

2. Communication and Collaboration: Don’t hesitate to ask colleagues for help when facing problems. Their experience can expedite your learning curve.

3. Time Management: Balancing your internship, studies, and exams requires effective time management to prevent burnout.

4. Continuous Reflection: Regularly evaluate your work, identify progress, and areas for improvement. This habit fosters ongoing growth and improved performance.

In terms of interview preparation, here are a few pointers:

  1. At least one Language Proficiency: Familiarize yourself with a programming language, even if it’s not Python.
  2. OOP Understanding: Review object-oriented programming concepts and be able to explain them with examples.
  3. Data Structures: Master essential data structures and be able to explain abstract concepts clearly.
  4. Maintain Confidence: Believe in yourself and your abilities.

By embracing these suggestions, the next intern can make the most out of their experience at GoFreight.

--

--