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 - Present3 yr 3 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 - Present3 yr 3 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 - Present3 yr 3 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 18 years of industry experience, out of which various are in software development. During this 12 years, I worked as a full-stack Java developer. But then, on the back-end side, I'm into Java and the Spring framework. On the front-end side, I have worked with React, JavaScript, and a bit of Vue.js. So, during this tenure, I played various roles, like an individual contributor and a technical lead.

    To approach optimizing React application components for maximum rendering performance, we have multiple ways. One is to use a hook called useCallback. The second is to memorize the component using the use memo hook. And even we can memoize the return value of highly computational functions using the memo function. So, useCallback. What it does is that between renderings, it keeps the function definition in the cache. That's why, if the dependency list, or any of the variables in the dependency list, does not change, React will return the cached copy of the function definition. That way, it won't recreate the definition of the function. If it is defined under useCallback. Now, use memo. Use memo can be used to memorize the return value of computational functions. So, if you are doing a very heavy operation or computation in any of your functions, then that can be memoized using the use memo hook. The third way is to use memo. Memo means we can create pure components in a functional way. So, using memo, we can prevent unnecessary rerendering of child components. So, what happens in React is that when a parent component is rendered, a complete tree of components is tried to be rendered. So, if we optimize the child components and avoid unnecessary rerenderings, then we can optimize the application componentry for rendering performance.

    Yes, we can effectively implement the continuous deployment process using Azure DevOps for a JavaScript-based application. For this, we can implement a CICD pipeline using any of the languages like Ansible or Terraform. And, we can build as soon as the developer pushes any new code to the git branch on the repository. So, it's going to trigger a CI pipeline, which is going to build the repository code. So, while building, it will execute all the inner test cases as well. And if 100% of unit test cases are passed, then the build will succeed. Ultimately, it will check for any passwords or security threats in the code using Fortify. And then, it will release a new package. Then that package can be deployed further using any of the live HTTP servers. Yeah. So, that way we can implement the continuous deployment process for any JavaScript-based application.

    So one tackles the problem of database connection pulling in a Node JS application to improve performance and stability by following a rule of thumb. Once you've used a connection from your connection pool and are finished with your transaction, you should close that connection so it can be returned to the pool or at least commit your transaction. If you don't do this or don't gracefully close your resources, it may lead to connection link issues. If you take care of this connection link issue, close all open resources created during the database operation, and your connection or database transaction will be cleaned. The connection can be returned to the pool, improving the performance and stability of the application. There won't be any data connection leak. Otherwise, the memory usage of the Node application will increase if connection objects get piled up in memory, and the application may crash. 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 ways to handle this. I mean, one way is to have multiple databases which are replicated. I mean, one database would be the master and another would be the slave. And, the slave will have the exact replica of the master database. Whereas, the master database can only be used for write operations or write transactions, whereas the secondary database can only be used for reading. So that way, you know, you won't have all or a complete load of different user operations on a single database, so we can segregate them using dedicated write and read databases. That's

    We can use sticky sessions on the load balancer to effectively manage user sessions across micro contents. The load balancer generates a unique session ID or token on the load balancer side. This single session ID or sticky session ID is then used to verify or achieve sessions across the distribution system. For different micro front-end applications, even though they are in different modules, they can use a simple or single session ID to achieve user session across the distributed platform effectively.

    The data might not be displaying as expected on the web page because the fetch data method is asynchronous and only invoked once when the application mounts. This is due to the way the useEffect hook is used, without any dependencies, it will only run once, when the component mounts. If any updates happen to the data on the API side, it won't be reflected on the UI on the web page. To have the desired effect, the useEffect hook should be used with a dependency array, so that every time the value or dependency list changes, the effect will be called, new data will be fetched from the API, and it will be rendered on the web page. Additionally, the component should return JSX with code that iterates on the data list and displays it as a list on the web page. Without this implementation, the component will not render the data.

    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, for the instance variable, late keyword is being used, which is a block scope, 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, initially, it will be null but once the constructor is called and first time we won't find it Then it will assign, this, object to the instance and variable, and it will return. The 2nd time, 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, the user should see real-time data on its web page as well as 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 way of communicating between server and client. That way we can have a full-duplex connection, and there won't be any pulling for real-time data from the server. So through a WebSocket, the real-time data will be updated on the web page as well as whatever bid the user will place will also go to the server using a single WebSocket connection. So that way, we can achieve the real-time bidding system without any polling in place. That's all.

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

    Can you imagine where technologies like WebAssembly could be integrated into an existing JavaScript application architecture to improve performance? Okay. So, as per my knowledge, WebAssembly's primary purpose was to run native code on the browser platform. So, basically C++-based code can be executed or hosted directly on a browser. Code written in C or C++ or a native language is highly efficient in nature. So, using WebAssembly, we can execute the same code in our browser. The UI rendered on the browser would be more efficient compared to Java or JavaScript-written applications. I think that's the information I know about WebAssembly. I need to check how it can be integrated into the existing JavaScript application. However, I know the concept that WebAssembly's use is and how it can benefit the user interface. That's all from me. Thank you.