profile-pic
Vetted Talent

Rahul Ajrekar

Vetted Talent

Dedicated Frontend Engineer with over 6+ years of experience in web application development. Proficient in crafting Single Page Applications, engaging in the full Software Development Life Cycle. Known for rapid learning, collaborative teamwork, and mentorship.

  • Role

    Back End Developer

  • Years of Experience

    7.2 years

  • Professional Portfolio

    View here

Skillsets

  • webpack - 2 Years
  • Next Js
  • Node Js
  • Type Script - 2 Years
  • JavaScript ES6
  • CSS3 - 5 Years
  • Git - 5 Years
  • Node Js
  • React Js - 5 Years
  • SQL
  • Vue JS
  • Rest APIs
  • GraphQL
  • Github - 5 Years
  • Git - 5 Years
  • react - 5 Years
  • Bitbucket
  • Bootstrap
  • Confluence
  • Jira
  • Next Js - 1 Years
  • Rest APIs
  • VanillaJS
  • TDD - 2 Years
  • React Js - 5 Years
  • Vue JS - 1.8 Years
  • SCSS - 3 Years
  • Type Script - 3.0 Years
  • Next Js - 1.7 Years
  • Node Js - 1.5 Years
  • Redux - 4 Years
  • Tailwind CSS - 3 Years
  • MySQL - 2 Years
  • FullStack - 1.6 Years
  • JavaScript - 6.0 Years
  • HTML - 6 Years
  • ES6
  • Jest
  • CSS - 6.0 Years
  • Mongo DB
  • Vue JS
  • React Js - 5 Years
  • Node Js
  • Vuex
  • react - 5.0 Years

Vetted For

11Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Senior Front end Developer (React / Typescript) - REMOTEAI Screening
  • 70%
    icon-arrow-down
  • Skills assessed :Excellent Communication, NPM, UI/UX Design, CSS, react, Github, HTML, JavaScript, SCSS, Type Script, webpack
  • Score: 63/90

Professional Summary

7.2Years
  • Mar, 2022 - Present4 yr 2 months

    Senior Experience Engineer

    Publicis Sapient, Pune
  • Apr, 2024 - Oct, 2024 6 months

    Senior Frontend Engineer

    TEKsystems
  • Mar, 2022 - Apr, 20242 yr 1 month

    Senior Technology Associate

    Publicis Sapient
  • Dec, 2018 - Mar, 20201 yr 3 months

    UI Developer

    Retail Solutions Inc.
  • Dec, 2020 - Mar, 20221 yr 3 months

    Senior Frontend Developer

    Webonise Labs Pvt. Ltd
  • Dec, 2020 - Mar, 20221 yr 3 months

    Senior Software Engineer

    WeboniseLab
  • Aug, 2017 - Dec, 20181 yr 4 months

    UI Developer

    DemandMatrix LLC, Pune
  • Jul, 2015 - Mar, 2016 8 months

    Software Engineer

    Freelancer

Applications & Tools Known

  • icon-tool

    Confluence

  • icon-tool

    SonarQube

  • icon-tool

    GraphQL

  • icon-tool

    Apollo Server

  • icon-tool

    Visual Studio Code

  • icon-tool

    Stash

  • icon-tool

    Styled Components

  • icon-tool

    Figma

  • icon-tool

    MySQL

  • icon-tool

    MongoDB

  • icon-tool

    Firebase

  • icon-tool

    Node.js

  • icon-tool

    PHP

Work History

7.2Years

Senior Experience Engineer

Publicis Sapient, Pune
Mar, 2022 - Present4 yr 2 months
    Senior Frontend Engineer specializing in ReactJs, Redux, TypeScript, React Testing Library, Jest, GraphQL, NextJs, HTML, JavaScript, CSS, Tailwind CSS. Developed efficient and reusable React components using TDD methodologies. Conducted code reviews for peers, ensuring quality assurance. Designed and developed responsive web components.

Senior Frontend Engineer

TEKsystems
Apr, 2024 - Oct, 2024 6 months
    Led the development of responsive UI modules using React.js and JavaScript, ensuring seamless user experiences across multiple devices and platforms. Built reusable React components and improved code maintainability and performance by adopting Test-Driven Development (TDD) and adhering to coding best practices. Developed an in-house UI component library with React and TypeScript, integrating Storybook for component documentation and unit testing, ensuring consistency across the application. Conducted rigorous code reviews to enforce coding standards, enhance collaboration, and accelerate delivery timelines, ensuring high-quality code. Collaborated closely with UX/UI designers and back-end engineers to integrate REST APIs, ensuring smooth functionality and consistent look-and-feel across the application.

Senior Technology Associate

Publicis Sapient
Mar, 2022 - Apr, 20242 yr 1 month
    Developed scalable and reusable UI components using React.js and Next.js to digitize banking processes. Improved code quality by 27% and increased test coverage by 39%, driving higher project efficiency. Achieved 100% code coverage by writing comprehensive unit tests for a project utilizing GraphQL APIs to display data in the UI. Resolved production bugs promptly, minimizing downtime and ensuring smooth operational flow. Implemented data visualization modules with D3.js, enhancing user engagement with financial data.

Senior Software Engineer

WeboniseLab
Dec, 2020 - Mar, 20221 yr 3 months
    Led a project from inception to production deployment, mentoring junior developers throughout the process. Designed responsive web components using React.js, Redux, and JavaScript, ensuring cross-device accessibility through end-to-end module implementation. Mentored junior developers, upholding code quality through thorough code reviews and guidance. Addressed production bugs quickly, delivering prompt fixes and solutions to minimize downtime. Worked on a healthcare professionals platform, from scratch, leveraging Vue.js and Buefy to build scalable and user-friendly features.

Senior Frontend Developer

Webonise Labs Pvt. Ltd
Dec, 2020 - Mar, 20221 yr 3 months
    Specialized in React.js, Redux, HTML, JavaScript, CSS, SCSS, and Git, developing high-quality, efficient front-end solutions for scalable applications. Developed and maintained reusable React components, improving project efficiency and ensuring consistent UI elements across applications. Conducted collaborative code reviews, ensuring adherence to best practices and maintaining code quality and consistency across the team. Contributed to a micro-frontend architecture project, focusing on creating modular, scalable front-end solutions for improved maintainability and flexibility. Mentored junior developers, providing technical guidance and support to foster their growth, while also handling client communication for requirement clarification and project alignment.

UI Developer

Retail Solutions Inc.
Dec, 2018 - Mar, 20201 yr 3 months
    Utilized Vue.js, Vuetify, Vuex, HTML, JavaScript, and CSS to drive the development of dynamic and high-performance applications, ensuring a seamless user experience. Designed and developed reusable components for RSi products, adhering to best coding practices and maintaining high standards of modularity and scalability. Conducted in-depth code reviews, providing constructive feedback to colleagues and junior developers, fostering a culture of continuous improvement and knowledge sharing. Independently managed project requirements, from gathering specifications to execution, ensuring on-time delivery of high-quality features. Mentored junior team members, offering technical guidance, training them on Vue.js and support throughout the development process, helping them grow and improve their skills.

UI Developer

DemandMatrix LLC, Pune
Aug, 2017 - Dec, 20181 yr 4 months
    Fullstack Developer with expertise in JavaScript, ReactJs, and PHP. Developed a Technographic Data Platform and a Customer Engagement Management (CEM) product using ReactJs for lead generation. Conducted comprehensive documentation, revamped the WordPress website, and customized HubSpot templates. Led the development of a PDF Viewer with customized functionality. Pioneered a Technographics Retail Data Platform, a B2B CEM tool, across frontend, portal, and REST API layer in PHP. Engaged in client communication, ensuring requirements were clarified and technical needs were addressed. Played a vital role in the Requirements Design phase with clients and Business Analysts.

Software Engineer

Freelancer
Jul, 2015 - Mar, 2016 8 months
    Freelancer specializing in the development of desktop and web applications. Owned the entire development lifecycle, from conceptualization to implementation. Collaborated closely with clients, comprehending requirements, and delivering tailored solutions. Successfully delivered customized desktop applications, showcasing adaptability and versatility in addressing diverse client needs.

Education

  • BCA

    Jain College of BBA, BCA & B.COM (2016)
  • BCA

    Jain College of BBA, BCA & B.COM Belgaum, Karnataka (2016)
  • Bachelor of Computer Applications

    Rani Channamma University (2016)
  • Bachelor of Computer Applications

    RCU (2016)

AI-interview Questions & Answers

Yeah, myself, Rahul Azrikar. I am working as a front-end engineer. Like, I'm currently not working in it right now, but I was working as a front-end engineer in my last company. It's been 6.5 years. I'm into front-end tools itself. I've worked on multiple frameworks, basically, Vue JS, React, HTML, CSS, JavaScript, TypeScript, GraphQL, and testing unit test cases also. So, yeah, basically, I worked on multiple domains also. Basically, like, marketing domain, retail domain, banking, product-based companies also. Like, they are data products and everything. I've worked from startups to MNCs also. So, yeah, basically, I feel pretty much confident in this role also.

And most critical factors to consider when choosing an NPM package for a project are, basically, when you choose an NPM package, the version definitely comes into play, whether that package supports your current Node version, going forward if you want to scale that component specifically. For example, if you are using a data table, it might need some changes going forward as per our requirements. So we should see how much you can extend that package, how many modifications and customizations you can make into that project. And, yeah, these are the things, basically. Also, if your application is in React or Vue or whatever, you should also check how the package can support your framework and the application you're using. Yeah, that's what you want to look after. The more important part is how much you can customize your package. Because most of the time, the challenges come from there itself. That's what I've faced in my earlier experiences. So that's it. That is what you want to consider.

Yeah. Using TypeScript for unit testing is the best thing I've experienced in my last project. So we were deaf; we were kind of using so first, we in our project, we had a lot of components that were used from some other library, basically. And we decided later on going forward, like, we should be creating our own component library. And there we should, like, develop our own components and also write a storybook for that. But along with the storybook, we decided to also write some unit testing for each of those components with TypeScript. So basically, all of our components which were earlier in the project were written in JavaScript, and those who are being transformed into TypeScript again. So while developing these things, I found out, like, we implement the component in a very strict, but still unbreakable way, basically. Because even if you were trying to pass any kind of other prop to it, like, instead of a string, you're passing in a null object or an object itself or an array. We definitely had control in the component at the component level to decide if you want to accept these props or not. This would prevent our component from reducing a lot of bugs, basically, and showing a lot of prevented errors in our component. Yeah. That was the best idea, like, the best decision they made, and I was lucky enough, I can say, to get a chance to work on those things also recently.

In a component process, how do you decide on the granularity of the component, okay. So, for example, in your whole application, you have divided the components, like, describe and define the components and you have used that in your whole application. Suppose we can consider an example of a data table itself. A data table would have a lot of things in it. We can modularize it or granularize it at different levels. Basically, we can make a different header component in it. We can make actions, like, if we have an actions component or a column, so that we can have actions like button items into it. We can create that separately. We can have a pagination component separately, and if you want to show some nested level of data into our columns or rows, we can have that particular component separately, and with props we can decide if we want to show that component or not. So, yeah, definitely, we can modularize these kinds of components easily. I've done this already, like, in my recent project, one of my pet projects. So I had to implement headers dynamically because if you're using a data table, you won't have any headers defined specifically. What I did was implement sending a JSON data itself and choose what columns should we show and what shouldn't be shown. So I gave that prop to it, and we were showing only those specific columns and like, data, basically, what you want to show into the data table. So, yeah, I had done this recently, and it works very well, basically.

Should we approach creating an efficient webpack build process for a React and TypeScript project? Should we approach creating an efficient webpack build process for a React and TypeScript project? Okay, for webpack, basically you can start by defining the necessary configurations at the beginning of the project. You should define the needed loaders because if you're using CSS libraries in your application, you need to define some loaders or plugins to use them. After this, to make the build process efficient, you can use a library that takes out specific methods from libraries you're using, such as lodash, and builds the bundle, negating everything else. This reduces the bundle size. You can also use obfuscation, minifying of CSS, and code splitting at the code level. You can define customizations here as well. And yeah, this is all I can remember so far.

Using lazy loading of components in an application breaks down your component bundle size into chunks and requests those chunks only when needed, instead of prefetching the whole bundle itself. This would make your application's page loading faster, because you're not loading the whole bundle.js at once in every routing. So basically, that's what you want to do by using lazy loading. We can use this best at the routing or component level, and then you can define the nested components or whatever components you're using in your app, like parent components, using lazy loading there. There's no harm in that. However, you can avoid very small components if they're static, like pop-up modules. But definitely, lazy loading helps to break down your application's bundle size into chunks.

Okay, first of all, there are no props or anything being okay. I'm considering this component as a kind of boilerplate and we might do something in this component and it might go into the rerendering phase. I would explain how we can optimize any component basically. So you're not using any useEffect here with the empty array, first of all. And if at all you are passing some props to it or maybe some changes, props are being passed to the component, but it's not controlled in any way. For example, we are not implementing this component in a pure component form. This might cause re renders again. You may use the memo hook for this to prevent rerendering of this component. You can definitely use callbacks. If we are using an HTML element with no callback added to that, it would cause rerendering even before clicking or triggering that.

Okay, first, we're defining the interface Bird here with fly and lay eggs as the properties in it. I think we should not define this in such a way, we should be using either the parentheses and the return type of that function. And, yeah, and not definitely, I mean, in this way. Apart from that,

This is my experience with testing Internet applications. Okay. So, suppose you have a component already existing that is a login page, and you're writing some unit test cases for the login component. Definitely, you might have described few of the types in your login component itself, but when you're writing the unit tests for that, you may do definitely if it's a small component. You can just go on and grab pure interfaces or types, whatever you're defining in your component. And just grab those and copy paste those. But suppose going forward, if you are making some changes or adding some types again to your login component, it's better to export that same type or interface from the component itself and you can use the same thing in your testing file. Usually, it's a better idea to keep the types file separate from your component, at the same level, and then it's very easy to import it anywhere else, like in your whole application, basically. This would definitely prevent the interference of the types in your testing file and the component file. But also, if you make any enhancements to your login component itself, it would also make or give some errors again in your application because the same type is being referred over there. And some of the test cases may fail or won't run, the coverage might not come entirely. So, yeah, this might help you.

Which will process front-end testing and development and deliver your project. So, I usually follow in my initial days the style of my working with TDD was a bit different. I was not so much into test-driven development basically. It was like I just used to get some task and continue with that. I'd just get started on the coding part and then come back with test cases. But as I grew up and understood a few things, I understood that we should, whenever we get a task, discuss it, find all the use cases of that. Suppose you're developing the login page itself, you should discuss all the scenarios with someone or go through the component itself, like the login page itself, and note down a few points. Once you have these points, you should definitely first write the unit tests, like empty unit tests, for the cases where you need to cover the code and everything. Once you have all the test cases ready, then you might go to the code and write everything. Those tests should handle these scenarios again in your code. Once that's complete, then you might come back to your test file and write the complete unit test cases. This is the way I follow usually in my development style.

There was a component, basically. We developed this page, which had everything, including tiles at the top, an accordion, and a tab component. Within the tab, there were also some accordions, and everything had to be developed dynamically based on one single API's response, so that every API would return used data with a lot of JSON fields. However, everything was categorized into 4 categories, and those 4 categories had to be shown in 2 different tabs, one tab component with 4, another with 4. That was a bit challenging because we had to take care of the optimization part, the performance, and also the consistency of the data, which was changing only on the basis of a single flag from one of the keys in that JSON. So, yeah, this was a bit challenging. I think I first did was, whenever I got the response of the data, I wrote a snippet of code to categorize the data and store it in a JSON object, which I then stored in our application using Redux. Once that was done, I had to render the tabs based on the categories available from that response. Suppose instead of 4 there were 3 only coming, I had to show only 3 of them. So, yeah, this had to categorize it at the initial response itself, then display it in the UI. As the data was huge, I had to optimize the loops and then dispatch the action to Redux to make these changes happen in the UI. That was a bit challenging.