My Remote Work Journey: From NextJS Intern to Golang Backend Developer

Journey of my initial days in Tech

Remote Job is amazing! 🔥

The world of remote work has opened up new possibilities and opportunities for professionals across various industries. In this blog post, I will take you on a journey through my remote work experiences, starting from my first internship as a NextJS developer, transitioning to a backend engineer intern, and finally landing a campus placement as a Golang backend developer. 👨‍💻

I'll also share my experiences working remotely in an asynchronous fashion, taking up freelance projects as a DevOps engineer on Upwork, and contributing to a stealth startup by building innovative cloud solutions. 💻

A little bit about myself

I'm currently a 4th-year student at Vellore Institute of Technology, Chennai pursuing B-Tech in CSE with AI/Robotics (sounds cool but it is not!). Being interested in programming from a small age as I was creating some Minecraft mods using Java (aah the good old days), I had a thing for computers, spending countless hours playing video games, completing one campaign after another in the Call of Duty Franchise. And of course, at this point curiosity kicks in and I wonder how these games are made. 👾

Fast-forwarding to current times, I've become a cloud native enthusiast and backend developer and DevOps. 🌍

So let's get started! 🚀

NextJS Internship: A Remote Start

I started learning Flutter in my first semester but quickly changed my direction to learn about web development. By learning Full stack development with MERN and Typescript, I got an offer from a freelance company to fill out a temporary vacancy as a Full stack developer.

And yes it was hectic! 😮‍💨 As the company was a freelance company dealing with multiple clients at the same time, I had to keep up with the pace and develop websites primarily in NextJS and TailwindCSS and implement UI mockups, conduct review meetings with abroad clients and much more.

The pay was pretty mediocre for the most part as I joined as an intern but the amount of learning helped me to focus on the mistakes. From this internship, I got to learn about the importance of system architectures (both high-level as well as low-level) and I learnt it the hard way! 😳

Backend Engineer Internship: Architecting the shit out of everything 😎

I landed this internship offer through my college and networking and technical clubs (such as Google Developer Student Club, VITC) helped in getting that offer. I have applied as a Backend Engineer as I got much interested in the backend and practiced my skills with my DBMS project which was a Video streaming application. 🪧

For this project, we as a team of backend interns, were tasked to come up with an architecture for feature-rich Human Resource Management System. Learning from the mistakes that I made in the previous internship, I went on and diving deep into system architecture, practical agile methodologies that our team can implement, loosely coupled systems, microservices and much more. Teaming up with my friend, we both came up with such high-level as well as low-level interface diagrams, even the company chairman applauded our work and instructed the whole team to follow our architecture. 🥹

And of course, the fun part is CODING! 🥳 As we both had become the "Architecture Guy" (according to one of my professors), we had to implement the basic code structure and implement all the interfaces that our developers could use. We were heavily using Model-View-Controller architecture which was implemented from scratch using ExpressJS in a Class-based way, not in a functional way (similar to NestJS).

A lot of these things were new to me at first. But a bit of patience and passion made this journey a joy ride!

PS. I USE VIM BTW! 🗿

Campus Placement as a Golang Backend Developer 🥵

The third year was a bit of a mess to be quite frank! The recession had started, companies started laying off people in the number of thousands, companies like Amazon, and Linkedin froze hiring and much more. I even cleared the online test for the SDE internship on Linkedin but didn't get any response from them after that. 😢

But then, my current company, Trademarkia, came to our college for an internship and they offered around 5 roles in total including NextJS, Golang, DotNET, Hubspot and QA. I was introduced to Open source by Kunal Kushwaha through his amazing videos and I started exploring more into Cloud native technologies like Docker, Kubernetes, Grafana, Prometheus and the backbone language of Cloud Native, which is Go! 🚀

The interview was based on development, not DSA so I got really excited and applied for the Go backend Developer! The interview experience was quite intense but after 3 rounds, I finally got selected for the role! Yay!! 🤩

Not my desk though

I had an option of working on-site as well but remote work was my thing! So I took the role as remote and the experience is amazing so far! We are currently developing on the cloud itself utilizing parallel event-driven systems. And yes, for the project, I again created an event-driven serverless system based on the AWS Lambda functions which we are currently testing to support around a million concurrent executions! Damn! 🔥

Freelancing as a DevOps Engineer on Upwork 💰

Throughout these years, I wanted to dive into contract work as well and I got my Upwork profile verified as well. As my interest majorly lies in DevOps, I started applying for the DevOps work that clients post at Upwork I got my first client to create a CI/CD pipeline and I quickly realised that the flexibility that freelancing provides is unmatched.

But one drawback that I found, is that the codebases of the projects which are primarily written by previous freelancers were super messy and doesn't have proper documentation. With my work as a DevOps engineer, I faced a lot of issues even configuring environment variables because of a lack of documentation and architecture. So, to all the clients reading this post, I would greatly encourage you all to offer a raise and ask freelancers to include proper and structured documentation for their work.

Of course, I'll try continuing my contact journey after the internship got over but yeah the pay is awesome! 😉

Contributing to a Stealth Startup: Building Cloud Solutions

For the past six months, I had been involved in building DevOps automated solutions for a stealth startup as well! And that helped me immensely in learning production-grade workflows with resilience and increased fault tolerance, faster build times with caching during docker. And for all the nerds out there, yes I didn't use any of the cloud services to build the source code. Everything was implemented in Github Actions itself with an average build time of 1 min only including all the build times to deploying them to EC2.😎

GitHub actions really have a lot of potential as a CI/CD solution. There are a few caveats about using actions but I think with a little bit of effort, you can easily make it fault-tolerant, secure and fast CI/CD solution out of it! (🤔Hmmm I may write a blog on that right?)

Managing infrastructure, automated deployment, and monitoring were some of the many things that I was supervising and the amount of learning was just insane! I really recommend you all to be in a startup even once, to learn the real feel of what development actually looks like!

Thriving in a Remote and Asynchronous Work Environment 🧘

Thriving in a remote and asynchronous work environment can be an exciting adventure!

To make the most of this flexible setup, it's important to keep a few things in mind. Firstly, establish a daily routine that suits your productivity style. Whether you're an early bird or a night owl, find a schedule that allows you to focus and accomplish your tasks effectively. Creating a designated workspace can also work wonders for concentration and separating work from your personal life.

Additionally, self-motivation is key to staying on track without constant supervision. Set goals, break them down into smaller tasks, and reward yourself for completing them. It's also essential to communicate openly and regularly with your team. Embrace collaboration tools and schedule virtual check-ins to ensure everyone stays connected and informed.

Lastly, don't forget to take breaks and practice self-care. Step away from your workspace, stretch, or indulge in a hobby to recharge your mind and avoid burnout. With these tips, you'll be well on your way to thriving in the remote work world!

Conclusion: 😇

My remote work journey has been a thrilling and transformative experience, allowing me to gain diverse skills, work on challenging projects, and contribute to both established and emerging companies. From my humble beginnings as a NextJS intern to my current role as a Golang backend developer and DevOps engineer, I have embraced the flexibility and opportunities that remote work offers. As the remote work landscape continues to evolve, I look forward to further expanding my skills, tackling exciting projects, and making a positive impact in the world of technology.

Finally, I thank you all for taking the time to read my blog post! Your interest and support mean a lot to me. I hope the insights and experiences shared have been valuable and insightful for you. If you enjoyed the content and would like to stay connected, feel free to follow me on social media:

Twitter: twitter.com/Nimishkashyap03

Linkedin: linkedin.com/in/nimish-kashyap

Portfolio: nimish-kashyap.tech

Let's continue the conversation and explore more exciting topics together. Thank you once again for your readership, and I look forward to connecting with you online!

~ Nimish Kashyap