Greetings all! Hope you’re having a wonderful 2020 thus far. The year 2019 was a significant year for me. I gained invaluable exposure to things within the tech industry whilst broadening my network and gaining new opportunities. One of the most significant experiences for the year was my internship at QualityWorks Consulting Group, which I’ll talk about in this post.
I first got introduced to QualityWorks. back in 2018, when I attended an Internship Job Fair held by my Faculty at the University of Technology, Jamaica. At the Internship Job Fair, companies set up booths which allowed students to do a walk-in interview. I did interviews with numerous companies, including QualityWorks. A couple weeks later I received a call for a follow up interview with the company; the interview went well, and before the end of the year I was offered an internship at the company.
The Start of the internship
I started my internship on January 14, 2019. During the first two weeks I met other interns, my supervisors, co-workers, and learnt the company’s culture, methodologies, and more about the services offered.
Additionally I was enrolled in QualityWorks’ own online university. Courses provided by this platform aimed to give interns an introduction to Agile development and methodologies, manual and automated testing principles and techniques, the technical side of services offered by the company, and standards used.
All interns worked together as a single team. By the end of the second week we were assigned a project. The project was given to allow interns to actively put to use the concepts which we were exposed to via the online courses.
We were tasked with building a Human resource (HR) software. A non-disclosure agreement(NDA) prevents me from going into details about the project.
We spent the next week discussing the project with supervisors, drafting project requirements, and proposing technologies to use for development and project management.
By the end of the week we had finalized basic project requirements and agreed on the tool/technologies which will be used. We agreed to use the MERN (MongoDB, Express.js, React.js, and Node.js) stack to develop the application
The scrum agile process framework was used to deliver this project in an iterative manner.
A standout benefit of undergoing an internship whilst in university is the number of possible technologies that you get exposed to. Prior to my first internship I’ve mostly only used PHP(with Laravel framework). I only knew about SQL based database, NoSQL was foreign to me. My time as an intern exposed me to numerous technology and concepts. These includes:
Node.JS with express
Building fast and efficient user interfaces can be complicated and often time consuming, but react makes this much simpler with reusable components and state management.
I enjoy building user interfaces with React because I can do more with a lot less code.
During my internship I used Reactjs to design user interfaces for dashboards and web apps that made API calls to APIs built with node.js.
Prior to my internship, I only had experience using SQL based databases. That changed when I got introduced to MongoDB which is a document-oriented NoSQL database.
NoSQL databases are different from traditional relational databases in that it does not use a structured query language (SQL) to query data, and records are not stored in carefully designed tables as is the case with relational databases.
Read more about mongoDB here | Read more about NoSQL databases here
Containers and Docker
“It works on my computer!” We’ve heard this, and may have said it ourselves, on numerous occasions.
Problems arises when we move software/code from one environment to another. This could be from one developer machine to another, to a live server or a testing environment. You can spend countless hours setting up one environment to match another. This takes away from productivity and may eventually require more configuration in the future when something changes in one environment.
Containers helps to solve this problem by allowing you to create a runtime environment that consist of the application/code, all dependencies, libraries, and any configuration files required to run it. You then operate within the environment (container). This removes the concerns around dependencies, and operating systems etc.
Other technologies used
I used numerous other tools, technologies and libraries for development, communication, productivity, version control, and project management during my internship. These include:
Google OAuth2.0, Passports.js, Trello, Slack, Google Suite, VS Code, Git, Amazon web services(AWS), and Apiary
Internships are a great opportunity for you to gain valuable experience at a company. A good internship will definitely improve your skills and knowledge while exposing you to new concepts. My first internship unquestionably enhanced my knowledge. For my first internship I built a HR tool, and used technologies such as node.js, reactjs, mongoDb, docker, Google OAuth 2.0, and more.
Thanks for reading this article. feel free to leave a comment below. Until next time, Think, Learn, Create, Repeat!