FACULTY OF COMPUTER SCIENCE AND
INFORMATION TECHNOLOGY
UNIVERSITY OF MALAYA
INDUSTRIAL TRAINING FINAL REPORT
SEMESTER 1 SESSION 2019/2020
HAZEM HADI HAZEM ALLBABIDI
WIF170709
SUPERVISOR FROM THE FACULTY:
DR. MUHAMMAD SHAREEZA
Table of Contents 2
3
i. ABSTRACT 4
ii. ACKNOWLEDGEMENT 5
iii. LIST OF FIGURES 7
1. OVERVIEW OF ADEV VENTURES SDN BHD 7
2. WORK EXPERIENCE 8
11
2.1. On-Boarding and Testing My Abilities 11
2.2. Notifications Project 12
2.3. Bug Fixes and Bug Fix Competition 13
2.4. Notification Mechanism Project 14
2.5. vimiBadge Project 15
2.6. vimiChallenge Multiple Winners 15
2.7. More Bug Fixes and Admin Page Task 16
2.8. Attending the Company Event 16
2.9. Daily Quotes Task 17
2.10. Email Reminders 17
2.11. Notification Mechanism (Continued…) 23
2.12. Email Server Time-Out Task 25
2.13. Pay-outs Redesign 26
3. SKILLS GAINED 27
4. CONCLUSION AND SUGGESTION
5. REFERENCES
6. A PPENDIX
1 | P age
i. ABSTRACT
Industrial Training is one of the most significant times in a student’s
university life. It allows the student to experience real-world work, and how things
work in a company. The aim of this Industrial Training is to help build better
technical skills, by working on actual problems, as well as developing and improving
soft skills such as better time management and more teamwork. My Industrial
Training lasted 6 months in a Start-Up called ADEV Ventures Sdn Bhd. And during
the internship time, I was working as a Web Developer, mainly a Back-End
developer. I helped build the logic and the functionality required for the user to be
able to achieve certain goals by using our app. Throughout my Industrial Training, I
used a Framework from a language that I learned in a course I took in my university,
University of Malaya. As a result of this internship, I learned the benefit of working
in a company, and being able to be part of a team that works together. In conclusion,
this was a great opportunity for me to develop and enhance both my technical and
soft skills, especially in my field as a Software Engineer.
2 | P age
ii. ACKNOWLEDGEMENT
I would like to give a special thank you to my supervisor in the company, Mr.
Yuan Chen Wong, who guided and mentored me throughout my internship, and
helped me build better technical skills, as well as soft skills.
I would also like to thank M r. Phillip Choong who gave me the opportunity to be
working under him and being well taken care of, both as an employee, and as a
student and intern.
I am also very thankful for the seniors in my team, who helped me in all my tasks by
supporting me and working hard for me to be able to achieve and fulfil my goals.
Another special thank you for the other interns that I was working with, who made
the office hours more fun.
I appreciate and deeply thank the efforts of D r Aznul whom helped us be able to take
the Industrial Training this semester and eased our way to experience the actual work
life.
And finally, a special thank you to Dr Muhammad Shareeza for his time for
visiting my company and meeting me and my supervisor and learning more about my
work and what I do in the company.
3 | Page
iii. LIST OF FIGURES
Figure 1: O rganization Chart of the Company 5
Figure 2: Notification Priorities and Due Dates 9
Figure 3: The Next Week Birthday Notification the User 9
Receives
Figure 4: Part of the spreadsheet that includes the notifications 11
data
Figure 5: An example of how the badges work 12
Figure 6: vimiChallenge adding multiple winners 13
Figure 7: Daily Quotes module on the dashboard 15
Figure 8: Notifications on the mobile 16
Figure 9: Step one in the first version, choosing the dates 17
Figure 10: Step 2 in the first version, choosing the departments 18
Figure 11: Step one in the second version, choosing date and 18
departments
Figure 12: Step 3 in the 1st version and Step 2 in the 2n d version, 19
choosing the pay-outs.
Figure 13: Summarizing the data and allowing user to confirm 20
Figure 14: After the user clicks on confirm 21
Figure 15: The Payout History Page 21
4 | P age
1. OVERVIEW OF ADEV VENTURES
SDN BHD
ADEV Ventures Sdn Bhd is a Start-Up company that was founded in 2018 by Mr
Phillip Choong and Mr Shane Mun, with the focus on building software that other
Start-Ups can integrate in their business.
The vision of the company is to become SME companies’ best technology partner,
empowering them through a unified vision and mission to achieve a common goal.
Figure 1: Organization Chart of the Company
In figure 1 above, you can see the full Organization chart for the company. Within
the chart, I am under Engineering section, in the Implementation Team, because I
mainly work on the app “vimigo” as a developer and engineer.
As mentioned above, the clients of this company are mainly SME companies. These
companies adapt the software we develop in order to improve their work and their
teamwork within the company. The organization structure consists of the IT Director,
5 | P age
Mr. Phillip Choong, who is the CTO of the company. Under him are My Hazim and
Mr Chen who are the Lead Software Engineers. Mr Chen and Mr Hazim are both
Back End engineers and work with DevOps, deploying, and making sure the website
is always running properly. The team also consists of Mr Lee, who is the main Front
End and Mobile Developer, Mr Henry, who also works in Front End as well as
UI/UX, and Ms Jessica who manages the logic behind some of the main features we
have in the app. There is also Ms Najwa who is the main person to QA all the new
features, along with Ms Fatin, who also does the Quality Assurance.
ADEV Ventures Sdn Bhd also works with another company, called The Billion, that
helps them organize events where ADEV talks about and explains the software or
app we are maintaining, which is called “vimigo”.
6 | P age
2. WORK EXPERIENCE
During my industrial training as a Back-End Developer, I was able to work
on many different projects. But when I first started, I faced a lot of issues. I was still
new to the work life and wasn’t sure how to keep up with my tasks. I was not good at
time management, I was bad at asking for help from my team, and I couldn’t finish
most of my tasks. But thankfully, I had the great opportunity to improve my technical
as well as my soft skills.
2.1. On-Boarding and Testing My Abilities
On my first day, I was introduced to the whole IT team and was taken around the
office. I received my On-Boarding email that contained information about the
company as well as the technologies used by the developers, so I spent most of my
first day installing and preparing software that I will be using throughout my
internship, I was also given a task to test my knowledge on the web development
framework I will be using throughout my internship. The task was to create a REST
API that can perform CRUD operations, the task also included adding authentication,
pagination and filtering, as well as extracting to an Excel format, my deadline was
19th of Aug. On my second day of internship, our boss, Mr. Phillip Choong, gave me
and the other new interns and full-timers, a cultural training. The training consisted
of Mr Phillips life story, the story of how ADEV Ventures was founded, and a brief
explanation and history about the software that we are working on. And my first day
was on a Thursday, that was all that happened in my first week.
On my second week of industrial training, I was working on the API task, I was
completing the API to make it functional where the user can register, login, and
perform CRUD operations. I was able to complete most of the project, except for the
Excel format extraction. Afterwards I continued to do basic Front-End functionality
for the API to test my Front-End skills. I used Vue JS for the Front-End, since I have
learned Vue JS before starting my internship. I had never used Vue JS with Laravel
before, so it a bit of a challenge for me, and unfortunately, I failed to deliver my task
on time. I wanted to prove to my supervisor that I am great at web development in
7 | P age
both Laravel and Vue JS, but I showed him otherwise. After I submitted the API
task, I was given a bug to fix as a test of my problem solving and bug fixing skills.
After looking at the codes, I understood the cause of the bug, but I fixed it in a wrong
way, so I failed the practical part of the task. So far, I have failed both of the tasks
that I received, so I gave my supervisor a bad image about me and not proving that I
am a hard-worker and good at problem solving. But I continued to work on the API
to learn about the technologies that I was asked to use which included using
authentication using Laravel Passport as well as exporting to Excel using a library
called Laravel Excel. Unfortunately, I do not have the projects on my laptop anymore
so I cannot show the work that I had completed.
After I was done from doing the practical tests, I was given a task of how we can
improve our software using Machine Learning and Artificial Intelligence, Internet of
Things, and Face Recognition. My task was to write 3 different ways we can use
each of the 3 mentioned technologies. The uses I wrote were not very practical as I
was not very familiar with these technologies. Two of the things I wrote are using
Face Recognition as a login method and using IoT to check-in using the app when
the user enters their office.
Afterwards on 28th of August, we were given a training on Git and the model used in
the company. The model was based on the successful Git branching model
(h ttps://nvie.com/posts/a-successful-git-branching-model/). This is the model that I
spent my whole Industrial Training using. But during that time, I still did not have
access to the Git Repository because I was still not very familiar with Git itself.
2.2. Notifications Project
Because it was the end of the month of August, I was given an actual task for the
software we are working on. This task was for the month of September, so it was a
very big one, it was to create notifications to send to users about a specific update in
the system, I had to create more than 30 different notifications for different
operations in the system. My deadline for the task was on the 20t h of September 2019.
This task required knowledge of Laravel Notifications as well as Laravel’s Task
8 | Page
Scheduler. I was already familiar with notifications because I learned it before
starting my Industrial Training, but I still had to learn to use the Task Scheduler.
Before starting to work on the notifications project, I was given two Spreadsheets on
Google Sheets that contained all the notifications I needed to work on, the message
for each notification, the importance or priority of the notification, and also when the
user is supposed to receive this notification (after a certain action is done or at a
specific time). I had to compile the two Spreadsheets to one file and add the date to
when I will deliver each notification.
Figure 2: Notification Priorities and Due Dates
The figure above shows part of the completed file I had done, the colour on the
priority indicates the status of the notification, whether it is in progress, completed,
or other. The notifications are also divided into groups of 3-4 notifications per group,
so that I can test only that group when I push it to staging, where it is tested. After
completing and sharing the file to my supervisor, I began to work on the notifications
from highest priority. I was able to complete the first few notifications on time,
which included the two birthday notifications and the leave application notification.
Below is an example of what the user sees when another employee in the company
has a birthday next week.
Figure 3: The Next Week Birthday Notification the User Receives
9 | P age
After completing work on a group of notifications, I faced a problem with how to
give the work to my supervisor for him to be able to push to staging. That tine, I still
did not have access to Git, so I added the files to a folder and put the folder on
Google Drive, and sent my supervisor the link of the folder. That was how I sent files
to my supervisor for a few weeks in my Industrial Training.
On the 9th of September, Mr Phillip gave us a presentation on TDD (Test Driven
Development). He explained to use what are tests, why they are useful, and how to
make tests. The training was beneficial since, we as developers, mostly just write
code that works in some cases, we don’t always think of all the possible cases, which
causes the testing on a feature to fail often.
I continued to work on the Notifications Project, making different types of
notifications for different contexts. The list of notifications to be done contained
exactly 52 notifications to be created, so it was a huge list.
I was later given a Front-End task that required the use of JavaScript and JQuery. I
was not very familiar with JQuery because I normally use JavaScript for DOM
Manipulation. To complete the task, my supervisor gave me a folder that contained
the whole software project. He had to give me the project locally because I still did
not get access to Git. I completed the task and sent him all the files that I changed.
During that time, the supervisor and most other seniors were not in the office because
they were attending an event that was organized to explain about and how to use our
software “vimigo”. After the supervisor came back from the event, he reviewed my
work for the Front-End task and found issues in the code, so he showed me these
issues and asked me to fix them before I can push it to staging.
While working on all these tasks, I was learning how to use Git and Sourcetree,
which is basically a GUI for Git. After learning about them, my supervisor asked me
to prepare a video explaining how the branching works and how to merge as well as
how to solve merge conflicts. After I submitted the first video, my supervisor
watched and reviewed it, and gave me comments on the issues that I made or the
10 | P age
things that I misunderstood. I had to make multiple different videos before I was able
to get the access for Git.
After getting access to the Git Repository, I added all the notifications groups that I
was working on, in different branches and added the SHA for each branch to the
notifications Spreadsheet. I was not able to complete the Notifications Project on
time (20t h of September), due to changes in the requirements for some of the
notifications.
2.3. Bug Fixes and Bug Fix Competition
On the 24th of September, I got a bug to fix in the Backend. The fix was to add more
validation for that page so that the users does not add wrong data. On the next day,
we had a bug fix competition that involved all but 2 developers in the IT Team. We
had to fix the greatest number of bugs or fix bugs that had a high priority. In that day
alone, I was able to fix up to 3 bugs, one of these bugs was in one of the 3 main
modules, which gave me an extra point. But even with all that effort, I was the 6th out
of 10 in the competition. It was difficult for me to get a higher rank because most of
the developers are Seniors and Full Timers, which means they had more knowledge
of the software we are working on and more experience using the Laravel
Framework.
On the next day, we had the competition again with a different scoring system. The
leader board for today was empty and new. Today I was able to fix a high priority
bug which gave me a lot of points. I was the 2nd in the competition out of the 10
developers which included the seniors and full timers, the 1st being my supervisor.
Later on, the next day, I worked on more bug fixes as well.
2.4. Notification Mechanism Project
With the start of October, I continued to work on the Notifications, but now had to
think of a better mechanism to send the notifications. I made documents and
spreadsheets that contain data from the database to help me clarify how I should take
on the mechanism and to solve the problems that need to be fixed.
11 | Page
Figure 4: Part of the spreadsheet that includes the notifications data
In the figure above, you can part of the data that I collected to be able to finalize
which notifications I should focus to reduce the sending of and which ones I should
summarize, as well as which ones have a high priority. The data in the figure show
the summary for each module, the spreadsheet also includes the statistics for each
notification we have in the system which are more than 40 notifications. Based on the
data that I collected, I added the notifications into groups for which ones should be
sent as soon as the action is triggered, which ones to send every hour, and which ones
to send only once or twice daily.
I applied the mechanism to a few notifications only. The mechanism was to reduce
the number of notifications that a user receives so that they do not get annoyed of the
app. I worked on the mechanism throughout the next few weeks. While working on
the notifications, I was a given a bug to fix. The fix was done on the database using
an SQL Script that I wrote.
2.5. vimiBadge Project
During October, I was given a task that included Backend and Frontend work. In our
app, we have something called Badge or Pin, which is given to an employee from the
employer or HR as a form of rewarding or appreciating their effort. My task was to
allow a user to be able to receive multiple badges of the same type. I worked on the
database to make it more flexible, I added in the Backend functionality to allow a
user to receive multiples badges at the same time, and worked on the Frontend to add
the count of how many of this specific badge did a user achieve.
12 | P age
Figure 5: An example of how the badges work
Figure 5 above shows how the badges looks like within the system and shows how it
counts the number of badges a user has.
I continued to work on tasks and bugs. I had access to the website that keeps track of
all the bugs and tasks to be fixed and done. The website is called Jira Software, and
inside, we had a what is called a Kanban Board where you can keep track of each
card. After having access to Jira, I started to browse on it to choose a bug that I can
fix. One bug that I fixed was that the user was typing wrong date type in datepicker
box. I fixed the issue in the backend by redirecting the user with error if the user
input the date in a wrong format and in the frontend by not allowing the user to
manually type in the date, but instead, use the datepicker feature.
After I got the access to Jira, I was allowed to test and QA more basic cards, or fixes
and features. I helped another intern by testing his cards when I could, and he did the
same as well.
2.6. vimiChallenge Multiple Winners
In vimigo app, we have a module called vimiChallenge, which allows the users to
enrol into a challenge and compete with other employees in that challenge. I had a
task in which the user is allowed to choose more than one winner at the same time.
13 | P age
The task required Backend to be able to accept more than 1 user and required
Frontend to allow the user to choose more than 1 user.
Figure 6: vimiChallenge adding multiple winners
In Figure 6 you can see how it looks like when you add multiple winners. Initially,
the place where winners’ names are entered was a textbox where you can search for
names of the users. What I changed here is I added a textarea instead of the textbox
to be able to fit in multiple names. After the user chooses and clicks “Add” the
backend will then get the ID of each chosen user and add them as winners.
2.7. More Bug Fixes and Admin Page Task
On the last day of October, I got a task in the API, so I had to get a collection on
Postman to be able to test and work on the task. The collection included links from
the API routes that are used in the mobile app.
I also worked on more bug fixes, the fixes included correct routing and redirection
after a user does a specific action such as click on a notification. For my team, each
of us had a goal to fix up to 3 bugs per week, or 12 per month. It was very difficult to
14 | P age
achieve that, but I was able to solve 10 bugs in a month. The bugs ranged from the
redirection to Frontend issues such as displaying wrong data.
I had a task to add pages to the admin side of the website, work on the Backend and
Frontend, but mostly the Frontend. The pages are to create, edit, and delete billing
addresses for the customers.
2.8. Attending the Company Event
On the 22nd of November, we attended an event that was organized to talk about the
software. I attended until lunch time. I helped make sure the customers got the
information they needed when they had questions. So when a customer had a
question, they would raise their hand and we would go assist them as the IT team.
The event is usually 3 days, I attended on 22n d and attended on 24th of November as
well on Sunday, I did the same thing, which is assisting and helping customers with
their questions. During the event, my supervisor asked me to help fix an urgent bug
that caused users to be able to add billing address with some required fields being
empty.
2.9. Daily Quotes Task
I had a task, to work on a pre-existing widget and implement it on the Frontend. The
widget displays Daily Quotes on the dashboard. The quotes were already
implemented on the system, I had to fix the issues and to implement it. In figure 7
below, you can see how the Daily Quotes looks on the dashboard.
Figure 7: Daily Quotes module on the dashboard
15 | Page
2.10. Email Reminders
In December, I started working on emails for when the user cancels their subscription
and when the payment for the subscription fails. The email will be sent to the
employer of the company to inform them of either. This is to let them know about the
subscription of the software.
2.11. Notification Mechanism (Continued…)
I finally had the chance to implement the Notification Mechanism on some
notifications. I applied the mechanism to the 2 Birthday notifications, as well as the
Daily Quotes being sent to the users on their mobile app. The mechanism is to keep
users from receiving too many notifications at the same time, as well as allowing the
server to send all the notifications without crashing.
Figure 8: Notifications on the mobile
In Figure 8 above, you can see the two notifications that are implemented in the
mobile. My mechanism helped to ensure that all users receive these two notifications.
16 | P age
2.12. Email Server Time-Out Task
There is a page in the software website that allows the user to choose employees that
need onboarding. The chosen users will receive emails that allows them to complete
their account on our software. There was a bug in which the server timed out if too
many emails are being sent. To fix the bug, I implemented queuing to allow the
emails to be sent without crashing of the server or timing out. I was not familiar with
queuing, so I started to read and watch videos on YouTube and Laracasts to help me
fix the issue.
2.13. Pay-outs Redesign
In December, I was assigned one of the biggest tasks I have taken during my
industrial training. The task was to make a full form for users to complete pay-outs
for the employees. The form included choosing dates, departments, and pay-outs.
The form had two different versions, where one is the Team module, in which the
user can choose the dates from one page, then the departments, then the actual
pay-outs, and after that they can confirm the pay-outs. The second version allows the
users to choose one date and all departments by default, then they will choose the
pay-outs and complete the form. Below I show the full flow for both versions.
Figure 9: Step one in the first version, choosing the dates
17 | P age
In figure 9, the user can choose the dates they wish to proceed with. Next to each
month is the count and amount for all completed and pending pay-outs for that
company. At the bottom is a dynamic summary that updates with the Number of
Employees and Total Amount after the user checks or unchecks a date.
Figure 10: Step 2 in the first version, choosing the departments
After the user chooses the dates they wish to proceed with, they will then see the
departments that have pay-outs with the count and amount of pending and completed
pay-outs. The “Confirm Payout” button allows the user to directly choose all users
and pay-outs in that specific department. The summary at the bottom also updates as
the user checks and unchecks a department.
These 2 steps are only for the first version of the system, which is the Team version.
In the next figure, I show these two steps, combined into one for the other version.
18 | Page
Figure 11: Step one in the second version, choosing date and departments
In figure 11, you can see that the user is able to choose departments from a specific
month. This version is made for non-Team pay-outs, that is because Team pay-outs
are usually made every few months, which is why we allow the user to choose more
than 1 date at once, while for non-Team pay-outs, those are usually paid
month-by-month.
After the user chooses the date(s) and departments, they can move on to choosing the
pay-outs to complete. From this step, the two versions continue in the same flow.
Figure 12: Step 3 in the 1st version and Step 2 in the 2n d version, choosing the
pay-outs.
19 | P age
In this last step, the user is able to choose the pay-outs, based on the choices they
made for the dates and departments. The system will display pending pay-outs in the
chosen dates and for users in the chosen departments. Here, I applied dynamic
pagination using AJAX to retrieve the new data while maintaining the previous
choices. This means that after a user chooses pay-outs in page 1, they can proceed to
page 2 without losing the choices they made in page 1. I worked heavily on
JavaScript and JQuery to be able to retrieve the new data from the pagination as well
as keep track of the checkboxes that are being checked. In the top, you can also see a
button that allows the user to uncheck all or check all pay-outs that are available
across all pages.
I also added filters in each page so that the user can filter by year in Step 1 and can
filter by department in Step 2. The user is also able to filter by the username.
After they have completed this step, they will be shown the confirmation page, the
one in figure 13 below.
Figure 13: Summarizing the data and allowing user to confirm
In this last step, the user can see the summary of the pay-outs: Total amount, count of
processes pay-outs, departments, count of employees selected, months selected, as
well as the actual individual pay-outs that were chosen. Here, the user can confirm
the pay-outs being paid or save it as draft so that they can come back to it later. The
user is also able to add remarks.
20 | Page
After the user saves as draft, they will be redirected back to the last step where they
can confirm the pay-outs whenever they wish. One main functionality I added on the
flow is a Back button that allows the user to change the choices they made in a
previous step. For example, if the user chose the months of November and December
then later saved as draft, they can go back to that step and change the months chosen
to August and September. This functionality is applied throughout the whole system,
so the user can go back to whichever step they wish.
And if the user chooses to confirm the pay-outs, they will be redirected to a page that
contains the summary of the paid pay-outs.
Figure 14: After the user clicks on confirm
In figure 14, you can see the page that the user is redirected to after they click
confirm pay-out. In this page, the user can Export the pay-outs to an excel sheet with
all the paid-out pay-outs data. The user can also add or edit the remarks.
After the user completes a pay-out, they can view it, along with all the draft and
completed ones in the Payout History page.
21 | P age
Figure 15: The Payout History Page
In figure 15, you can see the history of all the previous pay-outs. The page shows the
pay-out type, who completed the pay-out, the status (draft or complete), as well as
some other information. The user can access the page of each pay-out (like in figure
14) if they click on the date on the complete left. The user can also filter by when the
pay-out was made and who it was made by, as well as the pay-out type and the
involved departments.
After finishing from the pay-outs flow, I had one more thing to do in this project,
which is to group all the previously completed pay-outs from the previous design and
adding them to this new redesign, I did this using a migration. The migration used
foreach loops to get the pay-outs that were paid out in a specific month, group them
and save the group, this was done for each company and each year.
When I was done from the huge pay-outs project, I continued to do smaller tasks
such as sending emails to users to remind them to do a specific action and to fix bugs
in the system. Unfortunately, since I am a Backend developer, most of my work is
not seen by users, it is only functionality, so I cannot show most of the work. I also
cannot show the code because it is company confidential data.
22 | P age
3. SKILLS GAINED
During the 6 months I spent in this Industrial Training, I gained a lot of technical
skills, as well as soft skills. The technical skills I gained or improved on include
being able to design a big system or architecture, I learned this after working on
the Notification Mechanism and the Pay-outs flow. I can think in a bigger way and
create solutions for bigger systems. I also learned how to f ix a bug or complete a
small task properly, I know how to g et the requirements of the task or fix, how to
organize and plan the flow of how it should work, and how to implement the
solution. I also gained experience on how to think clearly before directly starting to
work on a task. I improved my skills in w orking with a team, how I can get help as
well as provide help when it is possible, how to have proper and prosperous
discussions, and how to take feedback into consideration as well as act on it.
The soft skills I gained include Time management, how I can manage to complete a
task within the given duration or deadline. I also improved my c ommunication
skills, how to deliver my ideas or thoughts in an understandable way and depending
on the situation, how I can explain a concept or idea to a developer and how to
explain it to a non-developer. I also improved on my decision-making skills, how to
make better decisions to satisfy the user based on the requirements I have for the
project. Another skill I improved on, which I already talked about, is w orking in a
team.
Adding to the technical skills, I also improved on using the L aravel framework,
JavaScript and JQuery in the Frontend, and some Frontend design such as
Bootstrap and CSS. I also worked on and improve on the knowledge I have in
MySQL.
Mr Phillip always gave us training to help us become better thinkers and developers,
and to improve on both our technical and soft skills. Even when I personally asked
him to train us about a topic, which was Amazon Web Services, he made time for us
and helped talk about and explain this topic.
23 | P age
My supervisor, Mr Chen, was always there to guide, mentor, and coach me to find
better solutions and work in the team. He would also help me figure out how to build
the big systems and architectures. He motivates me to improve on my work and tells
me that he believes that I could complete a task in a great manner. He tries to shape
me to be a better Backend developer who thinks clearly regarding the task and how
to complete in a good and efficient way.
My teammates in the company also helped me often by guiding me to complete a
task in an area where I am not very familiar, such as Frontend, and they would help
by working along with me on a task, such as working on the design of a page and
applying the design on the Frontend. They would also explain to me whatever I did
not understand, and they helped to coach me as well.
My references included the documentation of Laravel framework, YouTube,
Laracasts videos, StackOverFlow questions, and more technical websites. I used to
go through these pages daily to see how I can complete a task or how I can make my
solution more efficient.
24 | P age
4. CONCLUSION AND SUGGESTION
Industrial Training is where a student gets the chance to explore the work and
office life, where they get tasks and projects that they get to work on, full time. It is
very different from university, where a student attends classes at different times,
learns from multiple different courses, and does projects to help them understand the
topic. In a company, a student gets tasks and projects that relate specifically to their
profession or their work scope, has to complete these tasks within the specified time
and to submit before the deadline.
In conclusion of my Internship and Industrial Training, I would like to say that I
learned a lot in my internship, from technical skills to soft skills. I improved in terms
working in a team, where I can get help as well as give help whenever I can. I
understood how it is to work in a company, with specific working hours and in an
office. How to think as an employee and how to satisfy customers and those who use
the software I develop and work on.
In short, I am grateful for the skills that I gained, the team I got to work with, and
with the experience I got as a Backend web developer and as an employee in a
company. I am more prepared now to start working as a full-timer in a company, and
to work on and develop better and more efficient software that would satisfy the
customers that I develop for.
My suggestion to improve the Industrial Training, is to help students be more
prepared for the work life by giving us more projects in our profession, such as web
development in my case, and to help us explore more of our field of work and
studies. But otherwise, I am thankful for the opportunity to be able to do my
industrial training before I proceeded to do my FYP. Now I am much more confident
in starting to work on my Final Year Project.
25 | P age
5. REFERENCES
Laravel Documentation: h ttps://laravel.com/
JQuery Documentation: h ttps://api.jquery.com/
JavaScript Reference: https://javascript.info/
StackOverFlow: h ttps://stackoverflow.com/
Laracasts: h ttps://laracasts.com/
26 | Page