profile-pic
Vetted Talent

Saurabh Agrawal

Vetted Talent
Analytical, solutions-oriented Full Stack software development professional with extensive experience in carrying out complex and enterprise-level Azure cloud-based web applications, looking for opportunities to apply my 12+ years of experience and skills in a challenging and dynamic environment.
  • Role

    Principal Engineer (JavaScript Full Stack Architect)

  • Years of Experience

    16.1 years

Skillsets

  • microservice architecture - 1 Years
  • Jira - 12 Years
  • Git - 10 Years
  • Mongo DB - 1 Years
  • SQL - 8 Years
  • Material UI - 4 Years
  • Express Js - 2 Years
  • System Design - 4 Years
  • React Js - 8 Years
  • JavaScript - 12 Years
  • Java 8 - 12 Years
  • Azure cloud - 2 Years
  • Software Development - 12 Years
  • Agile Methodology - 8 Years
  • Node Js - 4 Years
  • Spring Boot - 2 Years
  • Redux - 4 Years
  • Type Script - 2 Years

Vetted For

16Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Principal Engineer (JavaScript Full Stack Architect) - (Remote)AI Screening
  • 63%
    icon-arrow-down
  • Skills assessed :Leadership Skills, Team Collaboration, Architecture Pattern, CI/CD Pipeline, CSS, Micro services, Node Js, React Js, RESTful API, Azure DevOps, HTML5, JavaScript, Mongo DB, Postgre SQL, Problem Solving Attitude, Strong Attention to Detail
  • Score: 57/90

Professional Summary

16.1Years
  • Mar, 2023 - Present2 yr 9 months

    Solution Architect

    UBS AG
  • Sep, 2022 - Feb, 2023 5 months

    Sr. Full Stack Engineer

    Aleph Labs
  • Sep, 2019 - Sep, 20223 yr

    Technical Lead

    HCL Software
  • Sep, 2013 - Jun, 20151 yr 9 months

    Associate - Projects

    Cognizant Technology Solutions
  • Jun, 2015 - Feb, 20193 yr 8 months

    Senior Software Development Engineer

    Nuance India Private Limited
  • Feb, 2019 - Sep, 2019 7 months

    Java Architect

    Wipro Digital
  • Feb, 2012 - Sep, 20131 yr 7 months

    Technology Analyst

    Infosys Limited
  • Feb, 2008 - Feb, 20124 yr

    Module Lead

    Persistent Systems Limited

Applications & Tools Known

  • icon-tool

    Microsoft Azure

  • icon-tool

    Kafka

  • icon-tool

    PostgreSQL

  • icon-tool

    MariaDB

  • icon-tool

    MongoDB

  • icon-tool

    Jenkins

  • icon-tool

    Ansible

  • icon-tool

    Jira

  • icon-tool

    Confluence

  • icon-tool

    Eclipse

  • icon-tool

    Visual Studio Code

  • icon-tool

    Postman

  • icon-tool

    SoapUI

  • icon-tool

    Microsoft Visio

  • icon-tool

    Docker

Work History

16.1Years

Solution Architect

UBS AG
Mar, 2023 - Present2 yr 9 months

    RDD is an infrastructure supporting application. It consists of master data system hosted on IBM Mainframe. The data is synced

    to various downstream consumers like normalized Postgres DBs, customer DBs through Kafka messaging backbone.

    Accomplishments:

    • Acquired back the BCM rating of the application.
    • Prevented frequent application crashes on production by fixing memory leak issues.
    • Optimized the API server load by correcting the application behavior of API calls in a loop.
    • Designed an architecture for Azure cloud migration.

Sr. Full Stack Engineer

Aleph Labs
Sep, 2022 - Feb, 2023 5 months

    This is an internal application with various dashboards and reports for different teams to track the resource on-boarding, team

    velocity, Agile release planning, etc. in tabular or graphical way. The application has been enhanced to support real-time resource

    onboarding from the application. The application was originally written using Vue.JS, later revamped with React.JS stack.

    Accomplishments:

    • Improved the application user rating by revamping it with new tech stack.
    • Designed and created a rich set of re-usable components library.
    • Remediated the docker vulnerability, and integrated control M for job scheduling.
    • Record implementation of complex feature within 2 sprints time.

Technical Lead

HCL Software
Sep, 2019 - Sep, 20223 yr

    HCL Verse is a web email client. It has various modules like Calendar, Mail and Contacts. Earlier it was using CGI based APIs,

    we started implementing the RESTFUL microservices and new UI in React.JS.

    Accomplishments:

    • Led and drove the deliveries of the offshore team independently.
    • Successfully delivered the Beta version of the new module.
    • Strategically established the processes to improve the team efficiency.
    • Mentored and addressed technical/functional blockers of the team.
    • Ensured the equal team load share by contributing in individual technical deliveries.

Java Architect

Wipro Digital
Feb, 2019 - Sep, 2019 7 months

    No active assignments during this tenure, so had to leave the organization in 6 months span.

Senior Software Development Engineer

Nuance India Private Limited
Jun, 2015 - Feb, 20193 yr 8 months

    CDI Nextgen application is mainly intended for CDS (Clinical Documentation Specialist) who does documentation and review them. This application provides the complete work flow for the CDS to review the clinical codes added by the coders. Existing application was revamped using latest technology stack.

    Accomplishments:

    • End-to-end involvement in feature design from the DB design to UI layer implementation.
    • Successfully delivered a beta release of new software with a handful of features.
    • Enhanced application security by implementing SAML integration with the in-house federation server setup created.
    • Increased CSR rating of application by delivering new Features.

Associate - Projects

Cognizant Technology Solutions
Sep, 2013 - Jun, 20151 yr 9 months

    Banca is an insurance application for a bank. In the middle east, the insurance policies are sold by the banks. This application takes care of complete policy life cycle.

    Accomplishments:

    • Successfully delivered an iSave account feature in the retail banking web application.
    • On time release of beta version of the new insurance application.
    • Led the team of 3 junior developers and taken sole responsibility of the offshore teams deliveries.

Technology Analyst

Infosys Limited
Feb, 2012 - Sep, 20131 yr 7 months

    Web Console is an AJAX based web application which monitors the various hosts with multiple jobs of different types running on them.

    Accomplishments:

    • Led a team of 4 freshers and mentored them.
    • Improved the web application performance with innovative approaches.
    • Developed an in-house automation framework on top of Selenium Web Driver.
    • Improved the application performance by removing JNI layer and using the Java only solution.

Module Lead

Persistent Systems Limited
Feb, 2008 - Feb, 20124 yr

    The Memova messaging suite consists of various applications like Email, Contacts, Calendar, and Files similar to Gmail suite. The application is completely written in-house and is highly customizable.

    Accomplishments:

    • Learned and got the hold of all application modules in short span.
    • Led the team of 14 resources.
    • Completed a few onsite deployment assignments successfully within expected time frame.

Achievements

  • Special Recommendation for latest assignments: considering past deliveries, my name was recommended for more critical development assignments.
  • Recognition for Going Above & Beyond: received for solely handled multiple aged tasks and provided solution in short time.
  • You Made Difference Award: received for brilliantly completing onsite assignment.
  • Project Performer of the Quarter Award: received as a leader of the team for excellent deliverables.
  • Successfully acquired the BCM Tier rating of the application
  • Prevented frequent application crashes on production
  • Optimized the API server load
  • Designed an architecture for Azure cloud migration
  • Improved the application user rating by revamping application with React stack.
  • Record implementation of complex feature within sprint time
  • Successfully delivered the Beta version of a new module
  • Strategically defined the processes to improve team efficiency
  • Led and drove the deliveries of the offshore team independently
  • Successfully delivered beta release of new software
  • Successfully delivered an iSave account feature in the retail banking application
  • Successfully led team of developers and offshore team's deliveries
  • Independently delivered long pending SAML integration development task

Testimonial

UOB Bank

Wen Wong Fong

Saurabh is hardworking and able to work under pressure. He is very professional, and good at programming and explaining to peers.

Critical Path

Jamie Wilde

I worked with Saurabh in several projects over a period of 3 years. I was impressed by his ability to adapt and attention to detail.

Critical Path

Sanford Law

Saurabh is a very capable and professional technical consultant. I worked with Saurabh for a number of years from customer support to onsite project work at different places in Asia. I found Saurabh could take on jobs independently in customer places and got the job done well. I would not hesitate to recommend Saurabh and wish him luck with his new venture.

Major Projects

4Projects

Reference Data Distribution

UBS AG
Mar, 2023 - Present2 yr 9 months

    Project Name: Reference Data Distribution

    Employer: UBS AG

    Duration: Mar 2023 Till Date

    Environment: React.JS, Spring Boot, Java 11, Azure, Ansible, Kafka, PostgreSQL

    Role: Solution Architect with IC

    Description: RDD is an infrastructure supporting application. It consists of master data system hosted on IBM Mainframe. The data is synced to various downstream consumers like normalized Postgres DBs, customer DBs through Kafka messaging backbone.

CX360 Dashboard

Sep, 2022 - Feb, 2023 5 months

    Project Name: CX360 Dashboard

    Employer: UOB Bank

    Duration: Sep 2022 Feb 2023

    Environment: React.JS, Redux, Material UI, Node.JS, Mongo DB, MariaDB

    Role: Senior Full Stack Engineer

    Description: This is an internal application with various dashboards and reports for different teams to track the resource on-boarding, team velocity, Agile release planning, etc. in tabular or graphical way. The application has been enhanced to support real-time resource onboarding from the application. The application was originally written using Vue.JS, later revamped with React.JS stack.

HCL Verse (formerly IBM Verse)

HCL Software
Sep, 2019 - Sep, 20223 yr

    Project Name: HCL Verse (formerly IBM Verse)

    Employer: HCL Software

    Duration: Sep 2019 Aug 2022

    Environment: React.JS 16.14, Redux, Material UI, IBM Cloud, Java 8, Spring Boot, Microservices.

    Role: Technical Lead with IC

    Description: HCL Verse is a web email client. It has various modules like Calendar, Mail and Contacts. Earlier it was using CGI based APIs, we started implementing the RESTFUL microservices and new UI in React.JS.

CDI Nextgen

Nuance India Pvt. Ltd.
Nov, 2017 - Feb, 20191 yr 3 months

    Project Name: CDI Nextgen

    Employer: Nuance India Pvt. Ltd.

    Duration: Nov 2017 Feb 2019

    Environment: React.JS, Type Script, Node.JS, Webpack, Java 8, Spring, Spring Data JPA, REST, JSON, MS SQL Server 2008, etc.

    Role: Senior Java Full Stack Developer

    Description: This application is mainly intended for CDS (Clinical Documentation Specialist) who does documentation and review them. This application provides the complete work flow for the CDS to review the clinical codes added by the coders. Existing application was revamped using latest technology stack.

Education

  • B.E (Computer)

    North Maharashtra University, Jalgaon (2007)

Interests

  • Watching Movies
  • Cooking
  • Gardening
  • Technology Research
  • Drawing
  • Listening Music
  • AI-interview Questions & Answers

    Hello. My name is Saurabh Agrawal, and I have 2016 years of industry experience out of which various are into software development. During this 12 years, I worked as a full stack Java developer. Uh, but then, uh, on the back end side, uh, I'm into Java and the Spring framework. But, you know, on the front end side, I have worked into the React. Js, uh, and, uh, many JavaScript and a bit of Vue. Js. Yeah. So so during this tenure, I played various role like, uh, you know, the individual contributor and the team lead technical lead. Yeah. That's all.

    How do you approach optimizing react application components 3 for maximum rendering performance? Okay. To have the, uh, optim optimization in the React application, we have multiple ways. 1 is to, uh, use a hook called useCallback. Uh, 2nd is to memorize the component, uh, using use memo hook. And, uh, even we can, uh, you know, uh, memoize the return value of highly computational functions using memo function. Yes. K. So useCallback. What it does is that, uh, between the rendering, it keeps the function definition into the cache. That's why, uh, you know, if the, uh, dependency list, any of the, uh, variables in the dependency list does not change. So React will return the cached copy of function definition. That way, it won't recreate the definition of function. If it is defined under, use callback. Now use memo. Use memo can be used to, you know, memorize the, uh, return value of computational function. So if you are doing a very heavy operation or computation in any of your function, then that can be memoized using use memo hook. And the 3rd way is to use, you know, memo. Memo means, uh, we can, uh, it's, you know, the functional way of creating a pure components. So, uh, using Memo, we can prevent rerendering of the child components unnecessarily. So what happens in React is that when a parent component is uh, rendered, so a complete tree of, uh, components is tried to be rendered. So if we, you know, optimize the uh, child components and avoid the unnecessary rerenderings, then we can optimize, you know, the application componentry, um, for, uh, you know, rendering performance.

    Still, will you take effectively implement the continuous deployment process using Azure DevOps for JavaScript based application? Okay. So, uh, for this, we can implement a CICD pipeline using any of the language like, uh, Ansible or Teradata. And, uh, we can, uh, you know, uh, build as soon as, you know, the developer will push any new code to the, uh, git branch, uh, on the repository. So, uh, it's going to trigger a CIC will get pipeline, which is going to build, uh, the repository code. So while building, it will, you know, execute all the inner test cases as well. And if, you know, uh, a a 100% unit test cases are passed, then the build will succeed. Uh, ultimately, it will, uh, check for, you know, uh, any passwords or security threats, uh, in the code using Fortify. And, uh, then maybe, ultimately, it will release a new of a package. Then that package can be, you know, deployed further, uh, using, uh, I mean, uh, any of the live HTTP server. Yeah. So that way we can, you know, implement the uh, continuous deployment process for any JavaScript based application.

    How does one tackle the problem of database connection pulling in Node JS application to improve the performance and stability? So in any case of application, which is, you know, connecting to database using connection tool, so the, uh, rule of thumb is that, uh, once you have used the connection from your connection pool and if you are finished with your transaction, then you should close that connection so that that can be returned to, uh, the pool again or at least you should commit your, uh, transaction so that it can be returned to the connection pool. If you don't do this or if you don't, uh, you know, gracefully close your all the resources that you have created during, you know, database transaction. So that may lead to any connection link. K? So if you take care of this, uh, connection link issue, if you close all the open resources that you have created during the database operation, then, uh, your connection or database transaction will be cleaned, and the connection can be returned to the pool again. In that way, uh, the performance and the stability of the application will be improved. There won't be any data, uh, connection leak. Otherwise, what will happen that, uh, uh, ultimately, the, um, memory usage of the node application will keep on increasing if it, you know, connection, uh, objects get piled up into the memory, and, ultimately, application may crash. Yeah. That's all for me.

    In microservices ecosystem, how do you handle the distributed transaction across the services to ensure the consistency? Okay. So there are various way to handle this. I mean, uh, one way is to, you know, have multiple databases which are replicated. Uh, I mean, 1 database would be the master and another would be the slave. And, uh, slave will have the exact replica of the master database. Whereas, uh, master database can only be, uh, used for write operations or write transactions, Whereas other, uh, the secondary database can only be used for the to read the completion. So that way, you know, um, you won't have all or a complete load of different user operations on a single database so that we can segregate through using, you know, uh, dedicated to write and create operation databases. That's

    Design system to effectively manage user session across micro contents. I think one way to achieve this is to use, you know, the sticky, uh, sessions on the load balancer. Wherein, you know, uh, the unique, uh, session ID or token is generated on the load balancer side. And for all the different sessions, uh, across the distribution system will be, you know, verified or, you know, uh, I mean, achieved using that single session ID or a sticky session ID. So that way for different, uh, micro front end applications, even though those are in a different, uh, like, uh, modules, but they can use the simple, uh, or a single, you know, session ID, uh, for, uh, achieving this uh, user session across the distributed platform, uh, effectively.

    Let's skip super snippet below that uses a modern framework. Please explain why the data might not be displaying as expected on the web page. So code is const data, uh, send data, use data, use data, use a list, useEffect, fetch data, and then response, send data, uh, and then response. Data. The fetch data method is asynchronous, and fetches data from an API. So from the code, Okay. So from the code, it looks like, you know, the data is phased at the time of mounting of an application. I mean, use effect will be called only once. So first time the face data will be invoked, it will return the response, and, uh, a data will be extracted from the response and will be set into the component state. However, if any update happens to the, uh, you know, data on the API side, it won't be reflected on the UI on the web page. So for that, uh, to have that effect, we should be using useEffect hook with some dependency array so that, uh, every time, uh, that, uh, value or a dependency list changes, every time this effect will be called, uh, new data will be faced from the API, and it will be rendered on the web page. So, basically, this code, uh, fetches the data only once. And additionally uh in this code or in this snippet I don't see any uh, you know, the method which actually, you know, uh, renders the, uh, UI. So there is no implementation for the render so basically this component should return our JSX uh with you know which will, you know, iterate on a data list and it will display it as a list on the web page. So if we want to do that, uh, we need to implement that that piece of code here. Yeah. That's all from

    Review the JavaScript code block that is intended to implement the singleton pattern. Explain what is wrong with the implementation. How would it fix that? So let instance equal to null class Singleton constructor if instant if not instance, then instance equal to this return instance const singleton and new singleton I think, uh, for the instance variable, uh, late keyword is being used, which is a block scope, uh, keyword. So we want to truly implement this singleton in this case, then we have to replace let with back so that it will be hoisted. And, that way we can have a single instance and, uh, initially, it will be null but once the constructor is called and first time we won't find it Then it will assign, uh, this, uh, object to the instance and variable, and it will return. The 2nd time, uh, it will find the instance to be valid reference with some object, and it will simply return it. It won't create or assign a new object again. So, basically, here, we need to replace let with the var.

    Which architectural pattern would you use to build a scalable real time bidding system, and how would you ensure its responsiveness under heavy load? K. Support bidding system. What I think is that, uh, user should see the real time data, uh, on its web page as well as, uh, whatever bid he is placing should also go in real time to the server. So one thought coming to mind is that we can use WebSockets, which is a full duplex, a way of communicating between server and client. That way we can have full duplex connection, and, uh, there won't be any pulling for, you know, real time data, uh, from the server. So WebSocket through WebSocket, uh, the real time data will be updated on the web page as well as whatever bid bit that user will place will also go to the, uh, server using, uh, WebSocket connection, a single WebSocket connection. So that way, uh, we can achieve the, uh, real time bidding system without any polling in place. That's all.

    And strategies we recommend for React application with a focus on user interface, consistency, and integration. Okay. So first one is user interface consistency. Consistency means, uh, there are multiple browsers in market available. So UI should be consistent across the browser. So it should be compatible with all the browsers. So for that, we can use, uh, you know, uh, either, uh, physical, uh, different browsers to test on, Or, uh, we can use, uh, cloud platform like, you know, uh, browser stack, wherein we can use our desktop application on multiple, uh, devices, multiple browsers. And that way we can ensure the consistency of the interface. What is the testing framework and strategies will you recommend? Okay. And, uh, I would recommend that, uh, whenever, you know, the there has to be a CICD, uh, integration, uh, in place to run the automation suit for, uh, you know, our UI, uh, so that we can ensure that, uh, if any change happens to the code, there is 0 regression happening on the existing functionality of the application. 3rd, in the developer perspective, uh, we should have, you know, 100% coverage for, uh, our unit test cases. So for, uh, React application, we can use testing library. Uh, so React testing library is, you know, kind of a paradigm shift as compared to, uh, enzyme. So, uh, what the React Testing library does is that it actually renders the, uh, component and it tries to perform the, uh, assertions on the rendered component DOM. Okay? So that way we can ensure that, uh, user interface is consistent and well integrated. Yeah. That's all from me.

    Can you imagine where technologies like WebAssembly be integrated into an existing JavaScript application architecture to improve performance? Okay. So, uh, as per my knowledge, web assembly, primary purpose was to use, you know, or to run the native core onto the, browser platform. So basically CC plus plus based code can be executed or or can be you know hosted directly on a browser. So So the code which is written in c or c plus plus or maybe a native language are highly efficient in nature. So using WebAssembly, we can execute the same code into our browser. Uh, so, uh, the effective UI which will be rendered on the browser uh would be more efficient as compared to the, you know, Java or JavaScript written applications. I think, uh, that's the information I know about WebAssembly. Uh, I need to check how it can be integrated into the existing JavaScript application. Uh, but I know the concept that, uh, what is the use of WebAssembly is and how it can, uh, you know, benefit to the user interface. K. That's all from me. Thank you.