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

    6.5 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

6.5Years
  • Mar, 2022 - Present3 yr 7 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

6.5Years

Senior Experience Engineer

Publicis Sapient, Pune
Mar, 2022 - Present3 yr 7 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. Uh, uh, myself, Rahul Azrikar. I am working as a front end engineer. Uh, like, I'm 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, like, 6.5 years. I've I'm into front end tool itself. Um, I'm I've worked on, like, multiple, uh, frameworks, basically, Vue JS, uh, React, HTML, CSS, JavaScript, TypeScript, GraphQL, uh, testing unit test cases also. Uh, so, yeah, basically, um, I worked on, like, multiple domains also. Basically, like, marketing domain, retail domain, banking, product based companies also. Like, they are data products and everything. I work from, like, uh, I have I have experience from working from, like, startups to, like, MNCs also. So yeah um basically uh I feel pretty much confident on this role also

And most critical factors to consider when choosing NPM, different packages for project. So, uh, basically, when you choose an NPM package, definitely, the version, uh, comes into picture of whether, like, that package supports your current node version, uh, going forward if you want to, like, scale that component specifically. For example, if you are using any kind of data table, uh, data table, uh, might need some changes going forward as per, like, uh, our requirements. So we, uh, we should see, like, what what, um, uh, how much can you extend that package? Like, how much modifications can you do, customizations you can make into that project, uh, package? And, uh, yeah, these are the things, basically. Uh, also, if your if your if your application is in React or Vue or whatever, you should also check, like, how what version Maxi can support your, uh, framework also, like, the application you're using. Um, Yeah. Basically, that's what you want to look after. Like and yeah, the the more important part is, like, how much can you customize your package? Because most of the times, there itself comes the challenges going forward. That's and that's what I've I've faced in my earlier experiences. So that's it. That is what you want to consider.

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

In a component process, how do you decide on the granularity of the comp okay. So, uh, for example, in your whole application, you have divided the components, like, uh, describe define the components and, uh, you have used that in your whole application. Um, suppose we can consider an example of, uh, data table itself. Data table would have a lot of things basically into it. We can, um, modularize it or granularize it, uh, at different levels. Basically, we can, uh, make a different header component in it. We can make actions, like, if we have if we'll have an actions component basically or column, uh, so that we can have actions like button items into it. We can create that separately. We can have pagination component separately, we maybe we if you want to show some nested level of data into our columns, our rows, uh, we can have that particular component separately and with this with props we can, like, decide if we want to, uh, show that component or not. So, yeah, definitely, we can modularize these kind of components easily. I've done this already, uh, like, in my recent project, uh, one of my pet projects basically. Uh, so I had to, like, uh, I didn't had any specific, uh, headers defined because we if you're using a data table, you won't have any headers defined specifically. You cannot define it basically. So you have to make it dynamic. Uh, what I did implemented was, like, to send a JSON data itself and we will choose, like, what columns should we show and what cannot be shown. So I had given that prop to it, and we are we were showing only those specific columns and, uh, like, data, basically, what which you want to show into the data table. So, yeah, I had done this, uh, recently, and it 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, you should start with like, so suppose if your application needs to have TypeScript, SCSS, SAS or SCSS, linters, maybe some other plugins you want to include in your application, you should define, definitely define that in the webpack itself at the initial, like beginning of the project. You can, you can define your, define your needed loaders basically, because if you are, if you're using CSS like libraries in your, any kind of libraries like that in your application, you need to define some loaders or maybe plugins if you want to use, you need to use those. So you can define those basically. After this, to make that build process efficient, you can use some, so I'm not getting the name of that library right now, but, but there's a library, which if suppose you're using a lodash kind of library and you're using only maybe three or four methods from it. So what that does is like it only takes out those specific methods from your library and builds the bundle and negates like everything else. So to just to reduce the bundle size, we can use this. We can use obfuscation definitely in your application like webpack. We can use minifying of CSS to like, again, reduce the size. Code splitting is also that, that you can use at code level. But yeah, you can define it here. Like if you have any customizations to make. And yeah, this is all I can remember so far.

So, using lazy loading of components in an application breaks down your component bundle size into chunks and request those chunks only when needed, instead of like prefetching those the whole bundle itself. This would, this would, this would make your application like page loading faster itself, because you're not, it won't take much time to load the whole bundle js at the like in your every routing. So basically, yeah, that's what you want to do by using lazy loading. We can use this in its best to use at the routing or the component like pages, pages level, and then you can go on like defining the nested components or whatever components you're using in your app, like parent components, you can use lazy loading there itself. There's no harm in that. But you can avoid like very smaller components if there if it's like any static pop up module, maybe something like that. But yeah, definitely lazy loading would help you to like break down your whole application into applications bundle size into chunks.

Okay. First of all, um, there are no props or anything being okay. I'm considering this component as a, like, kind of boilerplate and, um, we might do something in these in this component and it might go into rerendering phase. Uh, I would explain like how we can optimize any component basically. So you're you're not using any useEffect here with, like, uh, the empty array, first of all. Uh, and if at all you are passing some props to it or maybe some, um, changes, like, props are being passed to the component, but it's it's like, uh, not not controlled in any way. For example, we are not implementing this component in a pure component form. Uh, this might cause, uh, re renders again. You may use, uh, use memo hook for this to, like, uh, prevent rerendering, uh, of this component. Um, you can yeah. Definitely. You can use you can use, um, like, uh, callbacks. Like, we can we if suppose we are using, uh, a a comp an element HTML element with, like, uh, no and that that's a button come button element. You're clicking on that button, but there's no callback added to that. It would cause again the rerendering parts again, uh, even before clicking or triggering that. So, yeah, these are the few things you can implement.

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

This is your experience with your test Internet applications and how Okay. So, um, suppose you have, uh, you're writing, uh, there's a component already existing that is a login page, and you're writing some unit test cases for the login component. Um, definitely, you might have described few of the types, uh, in your login, uh, component itself, But when you're writing the unit tests for that, uh, you may you may do, like, definitely if it's a small component, you can just go on and and grab pure d, um, like, interfaces or types, whatever you're defining in your component. And just grab those and copy paste those but suppose going forward, um, if you are making some changes or adding some types again to your login component cell it's better to like export that the same types or interface from the component itself and, uh, you can use the same thing in your testing file. Uh, usually, it's better idea to keep the types, uh, file separate along with your component, uh, at the same level, and, uh, then it's very easy to, like, uh, import, uh, import it anywhere elsewhere, like, in your, uh, whole application, basically. Um, this would definitely prevent the interference of the types, uh, in your retesting 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, uh, the same type is being referred over there and to some of the test case may fail or it won't run, uh, 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. Just get started on the coding part and then come back with test cases. But as I grew up and understood few things, I understood like we should, whenever we get a task, we should discuss over it, find all the use cases of that, suppose you are developing the login page itself, you should discuss all the scenarios with someone or like you can go through the component itself, like the login page itself and note down few points. Once you have these points, you should definitely first write the unit tests, like empty unit tests, like what could be the cases where we have to cover the code and everything. Once you have all the test cases ready, then you might go to the code actually and then write everything. Those might handle these scenarios again in your code. Once that is complete, then you might come back to your test file and write, complete those unit test cases. So this way, this is the way I follow usually from my, like in my development style.

So, um, there was a there was a There was a component, basically. We this was a page, basically, we I had to develop. This whole page had, like, everything, tiles on the at the top, accordion, um, like, tabs tab component, basically. And within tab you also had some accordions, uh, and everything had to be developed dynamically based on one single API's response so that every API would return a used data, uh, with lot of, like, JSON fields and but but everything was this categorized in 4 categories and those 4 categories we had to show in 2 different tabs. One tab component would have 4, another tab would have 4. So, uh, that was a bit challenging because, uh, we had to take care of the optimization part, the performance and also the consistency of the data which we are showing because those datas were changing only on the basis of single flag of from one of the keys in that in that JSON. So, yeah, this was a bit challenging. Uh, I think I used I first what I did was, like, whenever I get the response of the data, uh, I wrote a snippet of code, like, to categorize the data and store it in the JSON object. Oh, sorry. The j store basically in our application using Redux. Uh, once that is done, I had to, like, uh, render the tabs based on the categories available from in that response. Suppose instead of 4 there are 3 only coming, I have to show only 3 of them. So, yeah, this, uh, had to, uh, categorize it at the initial response itself then I had to display it in the in the UI. As the data was huge I had to, like, optimize the loops basically and add, uh, and then dispatch the action to, like, uh, in the reducts to make these changes happening, uh, in the UI. Uh, that was a bit challenging.