The First 4-Months of My Software Engineering Internship Experience

Embracing the Work from Home Internship Life at Zone24x7

Dinuka Piyadigama
8 min readNov 7, 2020
Photo by Adrian Swancar on Unsplash

The first month of my internship was all about learning. In fact, the majority of my internship has been about learning. Since I had portrayed my comfort-zone to be frontend development and had shown my interest in working on full-stack JavaScript in innovation projects, I got a mentor who was doing just that and got to work on some interesting JavaScript projects during the first few months of my internship.

Although I was actually required to only complete the frontend of an assessment that was handed over to me the first few days that I joined the company, I was pretty adamant about completing the backend part of the project as well because I really wanted to portray myself as a full-stack developer.

Learning to manoeuvre JavaScript, the Swiss Army knife of Programming

https://media.giphy.com/media/xT5LMxAxpGSb5AZt8A/giphy.gif

By working on my assessment-project I learned so much about JavaScript and TypeScript that the more I learned, the more I realized that I knew pretty much nothing in JS compared to what it was actually capable of doing. Ever since this project, I’ve been drawn towards using TypeScript in every possible chance that I’ve gotten ’cause once you get into the TypeScript-zone, you can’t help but look down upon projects that use JavaScript.

While working on the frontend of the project, I learnt a great amount of React-TypeScript and also how to make use of Redux & Redux-persist. While working on the backend with NestJS, I always took the harder path to implement things because I wanted to learn the ins and outs of backend development. While doing so, I came across several issues that NestJS didn’t directly address anywhere on the internet. I was able to work with my mentor on those issues and figure out how to solve them.

Transfering findings to Open Source contributions

https://www.ictworks.org/how-can-open-source-software-be-sustainable-in-international-development/#.X6Wq0lMzZTY

Since NestJS was open-source, I found an issue that hadn’t been addressed to properly by the NestJS team and contributed to the NestJS docs to help-out anyone else who may come across the same issue. This was one of the issues that I had tackled with my mentor.

In case you haven’t contributed to Open Source before, you should try doing so in your free time. It’s a whole different awesome feeling that you get when you’re able to contribute to the community.

Transfering learnings to projects beyond 9–5

Having worked with Redux & Redux-persist in the assignment project, I managed to transfer those learnings into creating a fully-fledged social media app which used React-Native over the course of one week. I extended my learnings here by learning how to control user sessions using React Native Navigations and by implementing many more functional requirements. Having had only created a ‘Todo’ app with React Native before this, it was a big step forward for me.

Finally, I also worked on the DevOps part of the assessment project with Docker & AWS and further extended my area of knowledge.

Making an entrance with the first taste of R&D

https://media.giphy.com/media/3o7abooVPgeGpknXpu/giphy.gif

Zone boasts quite a number of patents and is known for the pretty amazing Research & Development projects that they carry out.

My taste of this was through a sub-project that I got one day with around 24 hours time to execute. Since I got the task at the end of days work, I glanced through a few related use-cases for about 10 mins and left my laptop after getting the feeling that it wouldn’t take longer than a couple of hours to implement. This R&D task involved the use of a socket connection.

Around midnight, I started doing extended research related to the required technical expertise and in about 1.30–2 hours I started going all out trial & error implementing the task. By 3 in the morning, I managed to get it done! This was also a great learning experience because I had never used a socket connection previously.

The next morning, both Frontend & Backend Tech Leads of the project seemed to be really satisfied and grateful for what I had managed to pull off. This led to a pretty satisfying entrance to one of the major projects that were being carried out at Zone. It was also quite the satisfaction when this was shared around to everyone at Zone to be used as a support-tool for testing purposes of the main project once it was further developed into a third-party dashboard.

The Low Friction Biometric Authentication solution

The project that I got to work on over the following weeks was based on a low friction biometric authentication solution. Having worked on the frontend of a pretty large scale Face-Recognition project named, Speculo as my second-year group-project for several months before joining Zone, I had a decent amount of experience and exposure on what was expected from a frontend developer of a similar project.

But, what I found new here was that the entire code-base of the main functional module was written in vanilla JavaScript as a library. This is when I learned how framework-agnostic JS packages can be created as libraries.

I also got my initial experience of working with QR codes in this project which I was able to utilize in the next project that I got to work on.

Unit Testing Mayhem

https://media.giphy.com/media/e43MD18f4wdZC/giphy.gif

When it came to unit-testing with JavaScript, I wasn’t as excited nor comfortable in adapting to it since there were many complications that arose. The fact that I didn’t really understand what was going on in the entire code was one of the problems. It was quite a challenge to learn advanced JavaScript while trying to learn and implement unit-tests as well. I was lucky that there were a couple of other associates who were able to help me out and get most of the coverage completed.

Combating Issues through Newfound Experiences

https://media.giphy.com/media/8PadKgGXNBmMrFn8Ce/source.gif

One of the main things that I had found difficulty in was debugging and identifying issues with results related to HTTP-requests. I would always try to console.log() and debug issues, but that wasn’t very helpful when trying to find root-issues in request handling. This is when my mentor taught me how to work with the network tab in Dev-Tools of the browser to debug these type of issues. Ever since then, the network tab has been the next-best-place-to-be when debugging, after the console for me.

Progressive Web Apps and Firebase

The next project that I got the opportunity to work on was a spin-off project based on the low friction biometric authentication solution that I had been working on previously. Here, I got a really good exposure in developing Progressive Web Apps (PWAs). Although I had a brief idea on the concept of PWAs, I actually didn’t really know all the awesome features that it could bring to the table. In my opinion, it’s a shame that most of us developers don’t build PWAs. What’s even more shameful is the fact that most of the developers that I know (including myself previously) have no idea of the benefits that PWAs can offer to the user.

In this project, I also got a fair share of experience with Firebase services such as Firebase Cloud Messaging, Firebase Functions & Firestore.

Cheat Days 🤥

Photo by Luca Bravo on Unsplash

Well, these cheat days were actually cheat days from JavaScript and usually took place over weekends. I’ve always been highly enthusiastic about working on Python Machine Learning and Automation. So, I tried dedicating my off-work time towards learning and improving my skills in those areas. This not only helped me keep myself reminded of the fun side of programming, but it also helped me gain more knowledge and help out with Python-related projects whenever needed.

I also expanded my skills in the areas of Blockchain, serverless and building fast static sites using GatsbyJS whenever I had the time to do so.

The Learning Never Stops

I’ve been learning a lot of Golang & a certain amount of advanced NodeJS over the last few days and it has been an interesting area to get myself into, especially because I’ve been wanting to learn how Go’s concurrency works for quite a while now.

I think you should see a clear pattern of how the experience of an intern at Zone24x7 lays out. Zone24x7 has a really great environment for anyone who likes to learn new cutting edge technologies and use them in projects. The support given by the senior Engineers is quite remarkable as well. When I was told about this from a few previous interns, I was really excited to work here because I myself loved learning and applying new skills.

The Scientia24x7 sessions that are held regularly cover a vast area of technical domains & expertise. I even attended a C++ session, which was technically off my required set of languages, but I just wanted to get an idea of how things worked there as well.

The projects that Zone had done in the areas of VR an AR got me quite excited before joining and I’m yet to get to experience them. Furthermore, the Big Data and IoT projects were also some areas that I found interest in.

A Final Reflection

Photo by Yeshi Kangrang on Unsplash

Looking back at my first 4-months at Zone as an intern, I think I’ve done a pretty decent job so far and kept true to the learning culture of the company. It’s quite remarkable how I’ve been able to grow as a Software Engineering undergrad over the last few months even in the middle of a pandemic.

As much as I crave to get to meet, connect and work with even more skilled Associates, the work-from-home culture has compromised the possibilities to do so. Even though we’ve been working from home, I’m happy to state that I’ve gotten to know several employees from various departments at Zone by helping out in various projects and by attending Zone’s Toastmasters Meetings that were held online.

That’s all folks!

I’m looking forward to keeping this space updated with even more interesting projects, technical experiences and expertise over the rest of my internship year.

--

--