Sharang Gupta

Java · Spring · TDD

Sharang Gupta

Software Engineer

Java and Spring, built test-first.

I work mainly on backend systems in Java and Spring Boot, deployed on Kubernetes and Google Cloud Platform. Away from work I build small apps that each show one idea, and write about what I learn.

Bournemouth, England.

Download CV (PDF)Email me

01 · Work

Selected work

Small, complete projects, each built test-first to show one idea.

  • Orderly (Work in progress)

    A learning project: moving from controller-service-repository habits to a hexagonal design, one failing test at a time. Each layer is a Maven module that lists only what it may depend on, so an inward import from the domain is a compile error, not a review comment. The domain is built and the application layer has started; the REST API, database and Spring Boot application are planned.

    • Java 21
    • Maven
    • Hexagonal architecture
    • TDD

    View Orderly on GitHub

  • Flight search

    A Spring Boot REST API for searching flights, built test-first with hexagonal architecture. The domain and application code is plain Java; all framework code (Spring, JPA, REST) sits outside and depends inward, never the other way. Java 21, Spring Boot 3.4, with CI on GitHub Actions.

    • Hexagonal architecture
    • Spring Boot 3.4
    • Java 21
    • GitHub Actions

    View Flight search on GitHub

  • EazyBank

    A banking application split into four Spring Boot microservices: a gateway as the single entry point, and account, card and loan services, each with its own PostgreSQL database. Runs on Kubernetes, with GitHub Actions workflows to build and deploy each service, and an observability stack (Prometheus, Grafana, Loki and Tempo) for metrics, logs and traces.

    • Spring Boot
    • Kubernetes
    • PostgreSQL
    • GitHub Actions

    View EazyBank on GitHub

  • OAuth2 product

    An OAuth2 resource server and client with Spring Boot, built test-first and run end to end with Docker Compose. The article series below follows this code.

    • Spring Boot
    • OAuth2
    • Docker Compose
    • TDD

    View OAuth2 product on GitHub

Also

02 · Open source

Fixes that landed upstream

A selection of the merged pull requests in libraries I use.

  • Spring Framework

    ProtobufDecoder releases the buffer of a partly read message when the subscriber cancels, so pooled buffers no longer leak.

  • OpenFeign

    A Request built with a null body behaves like one with an empty body instead of throwing on first access.

  • Micronaut Core

    An Accept-Charset header no longer decides how a String request body is decoded.

  • Eclipse Jetty

    A web application in a directory such as foo.com deploys as one app, together with its properties file.

  • SpotBugs

    An ignored Arrays.copyOf result is reported, and so are discarded calls to pure methods of any class that uses assert.

  • Apache Log4j 2

    Timestamps before 1970 format correctly; truncating division had produced negative nanoseconds and garbage seconds.

  • Apache Commons Lang

    TypeUtils.containsTypeVariables and unrollVariables honour the owner type of a ParameterizedType, so Outer<T>.Inner resolves.

  • Spring Cloud Config

    With multiple-uri-strategy always, a config server that answers with HTML no longer stops the client at the first URI.

All 46 contributions in 30 projects, with what each problem was and how it was fixed

126 more are in review: open pull requests on GitHub.

04 · Experience

Where I have worked

  1. Software Engineer, THG

    Jan 2023 to present · Bournemouth, England (remote)

    • Backend development in Java and Spring Boot, deployed on Kubernetes and Google Cloud Platform.
    • Diagnose and fix production incidents.
    • Test-first development and code review.
  2. Associate Software Developer, JPMorgan Chase & Co.

    Sep 2022 to Feb 2023 · Bournemouth, England

    • Built more depth in Spring Boot while working on backend services in a banking environment.
    • Hands-on exposure to Kubernetes and cloud deployment.
    • Worked with production monitoring and observability.
  3. Graduate Software Engineer, THG

    Oct 2021 to Sep 2022 · Salford, England

    • First professional work in Java and Spring Boot, on a large production system.
    • Learned clean-code practices, code review and team delivery workflows.
  4. Python Developer, Karza Technologies

    Dec 2018 to Sep 2020 · Mumbai

    • Responsible for building data pipelines across multiple web sources like BSE, NSE and electoral rolls via web-scraping using python
    • Created over 300 web crawlers, harvesting millions of data points, thus creating end to end data pipelines for consumption
    • Introduced in-memory download and re-upload of scraped PDFs reducing disk memory usage to a fraction of original
  5. Software Engineer, Bombardier

    Aug 2018 to Dec 2018 · Vadodara, India

    • Responsible for developing web-hmi components for new metro trains
  6. Software Engineer Intern, Symantec

    Jan 2017 to Jun 2017 · Pune, India

    • Built a crawler to collect files and their hashes for the most popular cloud-based software; gathered 1 million files to whitelist, hitting the target within 3 months
    • Delivered a second crawler in record time for a time-sensitive, high-priority project
    • Stayed on after the project to work with the team on development, across all stages of production

05 · Recommendations

What colleagues say

From LinkedIn recommendations; names and context as shown there.

  • “Sharang has shown outstanding dedication as a Software Engineer. He has consistently gone above and beyond to understand the complexities of the Product platform, demonstrating a remarkable ability to quickly assess and address issues. Although being part of a different team, Sharang acted swiftly and effectively during critical incidents to reduce impact on our team's platform. I am confident he will continue to make a positive impact wherever he goes.”

    Ahmad Aussaili, 2024, worked with me on a different team
  • “Sharang reported to me during his first year as a graduate software engineer. I have no doubt he will be a great success at whatever he sets his mind to. Sharang’s enthusiasm to learn and develop was consistent from day one. He took a proactive approach to his, and the team’s, development. He was a pleasure to mentor, and would be welcome back anytime.”

    Charlotte Cozens, 2022, managed me directly
  • “Sharang has been an absolute joy to work with, technically curious, willing to jump in and try new things whilst always pursuing his thirst for learning. I found Sharang to be extremely outcome and delivery focused.”

    Steve Moss, 2022, managed me directly

See all recommendations on LinkedIn

06 · Background

Education and skills

Education

Skills

Languages and frameworks
JavaSpring BootPython
Platform
KubernetesGoogle Cloud Platform
Data
MySQLCouchbaseMongoDB
Practice
TDDJUnitClean codeSOLIDCode review

07 · Contact

Get in touch

Open to hearing about interesting engineering roles.

sharang@sharanggupta.dev+44 7563 566755

Bournemouth, England