Looking a year back, My transition to Nodejs and Reactjs

A software developer’s experience with a tech stack transition and how it has made me a better software developer

Rishav Medhi
7 min readDec 30, 2020
Photo by Tudor Baciu on Unsplash

In December 2019, I made a job switch and also a tech stack change along with it.

Tech stack change is a big step. You are preparing to move to a new language that you might not even know, have no experience and requires a lot of effort to make it happen.

But on the bright side, getting to know a new tech stack is a healthy change and fun learning process, it’s a new change from your current job, you get to learn new industry frameworks, new language concepts and also on the other side, unlearn what you have learnt from the old tech stack which you were familiar with.

It’s been a year this month and here’s a look back on how I prepared for the transition and my experience with the change so far.

Tech Stack before the transition

Before the transition, I was working as a full-stack web-developer in a startup. I primarily worked on coding server-side and frontend with PHP and jQuery. Along with that I also worked on setting up infrastructure using AWS.

My main motivation to look for a transition was because of the growing out of the trend of PHP in my tech-community and the ongoing debates of it being a ‘dying language’ (I mean no offence to the PHP developers out there, even I am a PHP developer, that’s how I started my career and I defended this same argument a lot).
Also, PHP was missing out on major new features that new/trending languages are currently coming up with.
Furthermore, many companies in the software industry have already shifted from PHP and moving on to Javascript stacks, Python, Go and other trending languages.

As a software developer, it’s important to update yourself with new upcoming technologies and I wanted to take the leap to learn something new.

Also 2 years down my software developer career, I was not even familiar with a well-known framework quite well. (I worked with the SLIM framework in PHP, which is a micro-framework instead of a full-fledged framework).
So learning and mastering a well known popular framework was on my to-do list as well.

Selecting My Next Tech Stack and Interview Preparation

I was open to opportunities in any new language framework but I targeted Javascript frameworks primarily ReactJs and NodeJs.

I was not totally new to javascript due to my jQuery usage and hence the learning curve for a Javascript framework turned out to be a bit less for me.

Starting with the Javascript Basics

I started first by improving my javascript basics, going through the language beginner documentation, ES6 conventions and also learning important language concepts like Promises, Closures.

Then I focused on the concepts that a javascript developer usually gets asked in interviews.

Frameworks : Reactjs, Nodejs

Once I did a fair share of javascript topics, I started learning React from scratch (since it was my first time using it)

I found the best way to prepare is by going through the official reactjs.org documentation itself, going topic by topic.

The topics start right from the basics and then progress to the advanced concepts in the end.

For Nodejs, I started learning Expressjs, mainly ways on how to write server-side code and create APIs using Javascript.

Document what I learnt

Another strategy that I did to keep the learning process interesting was to code the concepts that I learnt from a topic in my local system and then push this code to Github by describing the topic which you learnt in the commit message.

In the end, you will have a repository with your own step-by-step learning process if you observe the commits.

You can then use the commits to refer back to a concept or see how you debugged the issue while implementing the concept.

Below is the link to my repository :
rishavmedhi/Reactjs-101

Exploring more advanced concepts

Once I covered the react basics, I went on to learn about advanced React concepts like Redux.

Every React Developer job description demanded redux and related react concepts, so would be plus point if I at least knew what those concepts were.

Revising the Coding Fundamentals

Every software developer has to be strong with the core-basics and for the starting rounds of any software development interview, there are questions regarding Data Structure and Algorithms (DS-Algo).

So I also started carving out some more time between my Javascript learning to revise DS-Algo concepts as well.

Below is a great medium article that covers basic DS-Algo questions:
https://medium.com/siliconwat/algorithms-in-javascript-b0bed68f4038

Revising your Past Projects

If you are an experienced developer, it is also expected to know the technical concepts that you have applied in your past projects, whether it’s in your current job or your hobby projects.

Practice

Keep trying out the sample questions, mock interviews and once you start feeling confident, you can begin applying to the companies and wait for them to follow up.

The Interviewing Experience

The interviews for me have been a mixed bag.

I applied to many roles and companies, but only a handful of them followed me up since I was looking more towards a different stack and I didn’t have much experience to the new technologies.

I didn’t ace all my interviews. For some companies, I couldn’t even go past first rounds or got rejected after a few rounds.
It gets a bit frustrating and sometimes all effort seems to feel that it’s not adding up to the expectations.

It is not an easy process, but the key during this time is patience, looking at the positive side and keep on improving one interview after another.

After every interview, I had a list of questions which I didn’t know or didn’t answer correctly. These questions indicate the topics that I was unaware of. Going through these topics made me better prepared for the next interview.

I tried to get feedback from an interviewer if I didn’t clear it. The feedback helped me in knowing crucial shortcomings where I could improve upon.

Some companies even demanded me to complete a small project/tasks, where I had to implement the desired use case.

Below are the repos of a booking application I made as a task using react and node:
rishavmedhi/bookingzone-react
rishavmedhi/bookingzone-api

After two-three months of hustle, interviews, I was finally able to land an offer for a full-stack role in Javascript stack.

New Job, New Tech Stack and Lots of Learning

Moving into my new job, I had to learn myself to get accustomed to a more structured and organised software development process, instead of a more spontaneous based that I had in my previous job.

I moved from a quite smaller team of a handful of full-stack engineers to a bigger team where sub-teams are handling various verticals (backend, platform, frontend).

I was part of the frontend web team — full-stack division, mainly handling frontend projects having full-stack solutions

On my first day, I was handed a learning list which had topics related to javascript, react, node and other topics which I had to learn to get familiar with the projects.
I was also onboarded with documents to learn the company coding ethics, standards and the lifecycle process that each project goes with.

As I knew my team-mates and mentor, I also realised my inexperience with the new stack, my level of javascript still not on par with my team-mates and hence there was a need to put effort every day on learning.

Basically, the hustle continues and that’s how the life of a software developer is, you have to keep on learning and improving

Soon after a week, I started to work on my first project in my new job and after that things have been on a fast pace.

December 2020

Fasttrack to the present, this one year journey has been a very big learning experience for me.

After completing a couple of projects over a year, I am now much more comfortable with javascript, Nodejs, Reactjs framework stack.

I had constant support from my mentors/colleagues, who helped me out with any issues or bugs I faced and also pointing out the things I should know about.

My new learnings range from
1. getting familiar with how javascript works
2. new ES6 standards
3. new react concepts
4. problem-solving techniques, the importance of brainstorming before coding
5. coding techniques, modular coding and reusability
6. Deployment pipeline, CI/CD
and in the end, getting a project efficiently done on time (most important of all :p ).

Book reading and self-learning is something that is actively encouraged by my mentors, and this underrated habit has helped me a lot to learn new concepts every day.

I also ventured into new concepts which I am still reading or trying out:
1. A easier testing process for frontend
2. Learning how automated deployments work
3. Learning the overall infrastructure and ways to handle scale
4. Learning about managing resource configurations to optimise the utilization by applications
and many more…

The tech stack transition experience is something that is not too daunting.
It has its a fair share of hardships, but coming out of the comfort zone and continuing the steps with patience and effort, it will soon eventually pay off to a reward that will make you a better software developer.

Thanks a lot for reading my experience. Hope this is useful for you :)

--

--

Rishav Medhi

Software Developer at Zolostays ~ Loves exploring Tech, Gaming and Pop Culture