my experience

software engineer intern @ barclays
june 2024 - august 2024

Thoughout the summer, I and a co-intern worked on one project: building a validation application.
As engineers on the Wholesale Lending team, we worked closely with ensuring that lending operations at Barclays Bank were processed accurately and efficiently. At the time of my internship, a primary focus for the team was replacing the existing system that supported loan booking and servicing with a new commercial lending system.

  • Problem: Due to the migration process, the accurate migration of data from one platform to another becomes very important. During the process, interfaces within the system are constantly changing — thus requiring a need to ensure consistency and proper maintenance of information.

  • Solution: To address the problem, we developed an application that validated the generated output (API response) of two important interfaces by comparing it to previously stored output in the MongoDB database, as part of the regression testing process.

  • Process:
    I read up on a lot of documentation, sifting through the existing codebase and understanding the workflow of the interfaces and microservices I was working with. After drafting up a diagram and design doc with our workflow, we began developing the application.
    I met often with my manager and the owners of the interfaces/microservices, updating them on progress, getting assistance on troubleshooting, and brainstorming ideas for implementation at each step.

    The application was developed in Java Spring Boot, with the integration of Kafka services to send API requests of existing records, and retrieve newly generated API responses.
    We implemented multiple comparators to account for the comparison of different API response formats, and integrated an emailing function that would send a detailed report of all test cases run in a particular session to the relevant testing team.
    Due to running into many server failures throughout our development process, an start-up check was also implemented to ensure everything was up and running.

    The application was deployed on a server accessible to anyone on the team, and was to be extended to more interfaces and ultimately integrated into the CI/CD pipeline.

  • Result:
    Previously, all outputs were inspected manually. Whoever was verifying would've needed to send the record manually, retrieve the API response, and compare it to the new response by manually looking up the record in the database.
    Needless to say, this would be very time consuming to do for each record. The application provides scalability, enabling large volumes of records to be verified at once, and automates the testing process, completely eliminating the need for manual testing.
    By catching any inconsistencies or errors, the validation application can cover the firm's reputational risk by ensuring that correct information is being sent out to clients and prevent any inaccurate transfers of funds, which involves large sums of money — up to billions of dollars. By automating an important testing process, we were able to help the team avoid running the risk of falsifying information and breaching regulatory requirements, preserving Barclays' reputation and avoiding heavy penalties.

developer / business operations intern @ glossgenius
june 2023 - august 2023

GlossGenius is a SaaS startup tailored towards small businesses in the beauty industry, providing booking, payments, marketing, and other services all-in-one.

At GlossGenius, as expected of a start-up environment, I wore many hats. Though I mainly worked on the GTM team, I was also given responsibilities related to technical, product, and marketing.

key responsibilities

The outbound sales team had been newly established at the time; much of the lead sourcing (reaching out to potential clients) were done manually by Google search, Yelp, etc.

  • Problem: As lead sourcing grows in volume, this becomes very time consuming, inefficient and error-prone.

  • Solution: Developing a script that could automate the lead generation process through web scraping.

  • Research: As this was something I had not done before, I did a lot of research to understand web scraping techniques and tools. I explored different libraries to find the best fit for our needs. This involved reading documentation, watching tutorials, and experimenting with sample code.

  • Process: Requirements for the script included writing code to navigate websites, locate specific data elements, and extract them accurately based on inputted location and number of desired results by the user. It was a complex process that involved extensive handling of various scenarios and edge cases. For each desired parameter to be retrieved, I made sure it underwent rigorous testing and iteration to ensure its functionality and accuracy.

  • Result: The resulting script reduced lead generation time by 95% (from hours to minutes). It was built in Python, utilizing BeautifulSoup and Selenium libraries for web scraping. NLP was also employed to filter out well-known names/entities when determining number of staff at a potential client.

  • Problem: As the company transitioned from a mobile-only to also desktop platform, there was a need to ensure that the user experience on desktop was seamless and competitive. The challenge was to understand how competitors were handling onboarding and sales flows on their desktop platforms and to identify gaps in our own UX and feature set.

  • Solution: I conducted a comprehensive competitive analysis by examining our competitors' desktop versions. This involved analyzing their sales and onboarding flows to identify best practices and innovative features that could be adopted or improved upon for our platform.

  • Process: I systematically documented the onboarding processes and features of several competitors, noting the strengths and weaknesses of each. This involved mapping out user journeys, identifying pain points, and comparing them with our platform. Based on this analysis, I drafted recommendations for UX improvements and new feature implementations that could enhance our platform's desktop experience.

  • Result: The analysis led to actionable insights that were shared with the product design team, and received positive feedback. The documentation and analysis of competitors' desktop features were studied by the product team in their planning process.

  • Problem: The company needed to attract and engage potential customers at the top of the sales funnel. There was a gap in providing users with interactive tools that could also draw them in as potential customers. The challenge was to create a tool that would not only draw in traffic but also provide meaningful insights for users’ financial needs.

  • Solution: I spearheaded the development of an online calculator tool designed to help users with financial planning. Based on inputted financial data from the user, the tool will calculate relevant and important values towards business insights, i.e. % of revenue made from appointments vs. selling products, average number of missed appointments over the past x months, etc.

  • Process: I conducted research to identify the financial insights that would be most helpful to small businesses in the beauty industry by reaching out to beauty professionals and the product team. I also analyzed successful online tools from other industries to understand what made a tool engaging and effective in driving traffic. This research informed the design and functionality of the calculator. What followed then was simply a lot of math and calculations, and building out the UI via Calconic.

  • Result: The prototype received positive feedback from the Marketing team, and was slated to be fully developed and released after my internship.

undergraduate course assistant @ princeton cs
feb 2022 - present

As an undergraduate course assistant for the Intro to Java Programming and Data Structures and Algorithms courses, my primary responsibility was in grading programming assignments each week. Based on a given rubric and my own observations, I would evaluate assignments on criteria such as efficiency, code design, and readability.

Initially, my motivation for applying to the role was to give back to the staff, who have been very helpful while I was taking the course, and provided a positive transition into a CS education in college from high school. But as I began taking on work, I realized the role really helped me build upon my analytical skills, communication skills, and also problem-solving.

I learned to scan code with a more critical eye, paying attention to things such as unnecessary lines, repeated code blocks, lack of variables to store results (calling functions over and over), and doing this often with many assignments have since instilled in me a subconsciousness to avoid similar mistakes with my own programming work.

In some cases, I received feedback from students who disputed my grading; it is definitely refreshing to be challenged and to think further about the reasoning behind my grading, as well as the students’ justification for why points shouldn’t have been deducted. I appreciate students who believe in their ideas and advocate for them, rather than just accepting the score.

The rubric that we are given weekly also teaches me new concepts in its reasoning behind why certain errors/code choices might raise issues, and every time I come upon a concept that I might not have known, I’m reminded that although I’ve moved on from the class, there are still many areas where my knowledge is still fairly superficial.