What I learned during my internship

  • Home
  • /
  • What I learned during my internship
What I learned during my internship

What I learned during my internship

Author: Chau Long
Career 25 Jan 2022

Overview

While wrapping up my studies at Ho Chi Minh University of Science, an acquaintance of mine introduced me to the Parcel Perform’s Internship project, which piqued my interest solely by the thought of creating a game called Server Heist. With this, I began my internship at Parcel Perform in both the Product and Development aspects.

Onboarding and Server Heist

When we arrived, the interns (me and three others) had a brief onboarding session with the HR Manager to learn about the company and all of the squads. The onboarding also introduced all of the tools and actions required as a newly hired intern. The first morning was spent settling into our new table and meeting up with the project’s team.

We were first given links to the Engineer handbook, folders, and files that we were encouraged to read to get the sense of the git flow and all the important notions in the company’s projects. We were then given access to the source code management system on GitLab, as well as for instructions on how to get started. We started to learn the fundamentals and complete several basic assignments both individually and as a group. We did enjoy those tasks; it was fun to get to know each other via the tasks and was also quite interesting to finish the tasks around midnight (voluntarily of course).

After completing each assignment, we submitted a merge request of our current branch to the main source for our Tech Lead and three other team members to review and comment on any concerns. The Tech Lead would occasionally organize a code review session with the interns to go through the code in person. There were some mistakes at first, but the Tech Lead was able to guide us through them.

Server Heist - Meeting the dream team

After the assignment, then came Server Heist. It was the real deal of the internship. Server Heist was a replica of a terminal-like experience while cracking/saving the server. Users would have to go through several games/challenges with adequate hints to get through while engaging with the terminal, the server. And, of course, the winner would receive a prize for saving the server.

There were 2 teams: the Product team and the Development team, which worked and collaborated closely. At the heart of the team, there was a Project Manager to assist with the Scrum process of this project. She led and guided us through our ideas so that we were able to present them and perform better. For the Product team, we had two Product Owners that were fantastic at creating the overall flow and underlying processes for the Server Heist game. We occasionally gathered for brainstorming to discuss new flows or another possible direction for the current flow. Along with this, we had the support of the all-mighty Tech Lead, who provided us with extensive hints and directions for the tasks (both FE and BE), as well as anything else we might be interested in. He was and still is an all-purpose mentor well-versed in FE, BE, and DevOps (kudos to him).

Product management and Planning

Before experiencing how the processes work, we got some training sessions on all of the related topics and processes. This was to help us get an overview or at least know how things work, to better adapt with it, such as the Scrum Training meeting.

Going into the actual project - Server Heist, before every major phase, we would have a full detailed roadmap of what was coming in the next week, the week after that, just to have a clear view of what would be ahead of us. This at least helped in wrapping up and preparing for the next step.

In these phases, we first had an Inception meeting for the Product team to deliver what they had planned for that phase for everyone to have a grasp of. Discussion and questions were always welcomed and they were fun, engaging, and informative, causing new ideas to be formed, both technical and non-technical.

After the Inception, we gathered again for the Solutioning session. Particularly, we dived deeper into the details, questioning ourselves how to solve certain parts, or would there be anything stalling the upcoming implementation. After having a discussion, we came to the main part - Task Estimation, to estimate the difficulty of all the tasks and assign them as tickets needed to be done. The tickets would then be created on a Ticket Manager.

Following Solutioning, we began development based on the product requirements and tickets assigned. And, in accordance with the Scrum process, we held a Standup meeting every day to keep track of the progress. The meeting lasted only 15 minutes and covered what had been done, what would be done, and whether there were any worries or issues.

Building Server Heist

I am not going to go very technical here, but just a quick overview of what we have been doing along the process of building the final product.

Initially, we were creating everything from scratch with the help of our Tech Lead. The setup was just similar to all of the other projects we had done before with ReactJS. Throughout the project, our Tech Lead gave ideas and hints that helped shape the project into what it is now, in terms of both product and development. For the command line management, after many attempts at that, we received assistance from the CTO in one of the Solutioning meetings. Consequently, after following the advice from the CTO and our Tech Lead, the final codebase is now using a mixture of templates, controllers for easier viewing and testing, as well as applying a design pattern for command line management.

At some point, to better keep track of what was happening on the user’s machine, we set up an Error Tracking tool for the website in both the local and production environment. If there had been any errors, we would be notified by the system and come to the rescue immediately following the correct process. For the Backend side, there is also a notification indicating if the server is down, as well as an Error Tracking tool. This was also something new that we had not try before, so it was rather enjoyable investigating what would be regarded as an error and what would not by the tool.

At the end of it all, we had quite a bit of spare time so we moved on to Google Analytics and Google Tag Manager setup, which we also had not done previously. All the events, tags, and analytics are monitored and still operational as of today. Fun fact: the most common command used by the players is the ls command.

Enjoyable experience that still keeps me here

During my stay, everyone was sociable, friendly, and professional in their work. The lunch was fantastic of course; I gained 4kg during my 4-month internship here as a result of also eating snacks in the afternoon. Aside from meals, there were also countless activities available on a daily and weekly basis, such as board games, jogging, badminton, and so on. Not to mention the company’s presents were all interesting and tasty, such as those for Mid-autumn festivals, company games, and even for our birthdays.

Overall, it was a pleasing and enjoyable internship experience at Parcel Perform, glad to be able to stay and still contribute to the company.

Figure 1.