Pune (IND)
Software Development
Fulltime
Published: 2026-07-15
What do we do?
Thinkproject is the leading platform for construction and infrastructure information management — used by engineering, construction and operations teams across Europe, the Middle East, and APAC to manage complex built assets across their entire lifecycle.
Our platform connects 9 products into a unified data ecosystem: document control, BIM coordination, field execution, asset management, and AI-powered project intelligence. Our customers include major infrastructure owners, contractors and engineering firms managing some of the most technically demanding projects in the world.
The analytics applications you will build are how our customers and internal teams understand, interact with, and act on the data our platform collects. They are the user-facing layer of the data ecosystem.
What your day will look like
About the Role
We are hiring a Senior Full Stack Engineer (f/m/d) to build and evolve the analytics and data applications that serve our customers and internal teams — and to lead the modernisation of the legacy Java/Spring Batch ingestion layer that currently underpins them.
This is a highly hands-on role with breadth across backend (Java/Spring, Python), frontend
(TypeScript/React), cloud (GCP, Cloud Run, GKE), and data. You will own features end-to-end: from design through implementation, deployment, and production operation.
The Spring Batch modernisation is the most technically substantive challenge in this role. You will be inheriting legacy ingestion services that need to be redesigned, migrated to cloud-native GCP architecture, and retired cleanly — without disrupting the analytics applications that depend on them.
That's the real work
Time allocation (approximate):
~40% analytics application development (frontend + backend) | ~30% Spring Batch modernisation and cloud-native migration | ~15% platform reliability and operations | ~15% architecture, documentation, and mentoring
Key Responsibilities
Analytics & Data Applications
Design, build, and operate enterprise analytics portals that integrate with modern visualization and reporting platforms
Build self-service data access applications for internal and external customers
Develop administration portals for data onboarding, configuration management, and platform administration
Implement secure, scalable, and maintainable application components for a global customer base
Build and maintain APIs consumed by analytics applications, administration tools, and third-party integrations
Platform Modernisation
Maintain, enhance, and progressively retire legacy Spring Batch and Java-based ingestion solutions
Design and implement modern cloud-native replacements using GCP services (Cloud Run, Pub/Sub, GKE) where appropriate
Reduce technical debt systematically — not just keep it at bay
Improve platform reliability, scalability, and operational efficiency as part of modernisation work
Contribute to architecture decisions on the migration target state
Full Stack Engineering
Develop modern web applications using TypeScript and React — from component design to production deployment
Build backend services, REST APIs, and integrations in Java (Spring Boot/Spring Batch) and Python
Implement event-driven integrations where the architecture requires it
Build reusable libraries, components, and tooling that improve productivity across the team
Software Engineering Excellence
Apply test-driven development, code reviews, CI/CD, and automated testing as default practice
Produce high-quality, maintainable, and well-documented software
Participate in architecture discussions and contribute to component-level design decisions
Continuously improve engineering standards and code quality across the team
AI-Assisted Engineering
Use AI-assisted development tools (OpenCode, Claude Code, or equivalent agentic coding platforms) to accelerate implementation, testing, refactoring, and documentation
Maintain full engineering accountability for delivered software — AI tooling accelerates your work; it doesn't replace your judgment
What you need to fulfill the role
Required Skills & Qualifications
You are a strong full stack engineer with Java/Spring depth on the backend and TypeScript/React on the frontend — and you have worked in cloud-native environments on GCP. Specifically:
8+ years of professional software engineering experience
Strong Java proficiency — Spring Boot and Spring Batch in production; you can read, debug, and extend Spring Batch jobs under real production pressure
Strong Python proficiency — backend services, data pipelines, scripting
Strong TypeScript and React proficiency — building production-grade web applications, not component libraries in isolation
Strong REST API design and implementation experience
Strong GCP experience — Cloud Run and GKE in particular; you have deployed and operated services on these platforms
Strong understanding of distributed systems concepts, microservices architecture, and API design principles
Experience with CI/CD pipelines and modern software delivery practices TDD, automated unit and integration tests, and code review as standard practice
Experience troubleshooting production systems and leading root cause analysis
Nice-to-Have (Bonus Skills)
Event-driven architecture experience (Pub/Sub, Kafka, Cloud Storage triggers)
Redux or modern state management framework experience
GraphQL experience
Next.js experience
Data warehousing concepts and data modelling (BigQuery, Snowflake)
Experience building internal enterprise platforms or administration portals
Experience leading technical initiatives or mentoring junior engineers
Experience working in globally distributed engineering organisations
Soft Skills
Ownership mindset — you drive work to completion without being managed
Comfortable with technical ambiguity — the Spring Batch modernisation does not have a finished design; you will help define it
Strong communicator across technical and non-technical stakeholders
Mentors naturally — you invest in the growth of engineers around you
Balances delivery speed with software quality — you know when to move fast and when to slow down
What success looks like
In 30 days
Fully onboarded on the analytics application stack, Spring Batch ingestion layer, and GCP infrastructure
First frontend or backend contribution shipped to production
Spring Batch modernisation scope and target architecture understood
In 90 days
Own at least one analytics portal feature end-to-end — from design through production
deployment
First Spring Batch modernisation milestone delivered: one legacy service migrated or retired
Contributing to architecture decisions on the migration target
In 6 months
Major analytics portal capability delivered and in production
Meaningful reduction in Spring Batch legacy footprint
Observability and reliability improvements shipped across at least one component
In 12 months
Multiple analytics portal capabilities delivered with full engineering ownership
Spring Batch modernisation significantly advanced — legacy footprint materially reduced
Junior engineers mentored and growing; engineering practices stronger across the team
The 3 Must-Haves
1. Java + Spring Boot/Spring Batch production depth — you can maintain, extend, and migrate real Spring Batch jobs; this is not negotiable and cannot be learned on the job here
2. TypeScript + React in production — not side projects; shipped, maintained applications that real users depend on
3. GCP cloud-native deployment experience — Cloud Run and/or GKE in production; you
understand how cloud-native services behave under load and failure
You might be a fit if
You have maintained a legacy Java codebase and understand the difference between refactoring it carefully and breaking it
You enjoy owning both the frontend and the API layer — you don't wait for a backend engineer to build what you need
You find the Spring Batch cloud-native migration problem interesting rather than daunting
You have strong opinions about API design and can explain them clearly
You're probably NOT a fit if
Your Java experience is primarily greenfield microservices — Spring Batch specifically requires different experience
Your frontend work has been UI components and design systems, not complete web applications with API integration
You prefer deep specialisation in one layer over breadth across the stack
You need a stable, well-defined architecture to work within — the modernisation path is still being shaped
What we offer
GCP certification sponsorship | Hybrid working | Work from abroad | Flexible working hours | Udemy Access | Thinkproject Academy | Free English lessons | Unlimited learning | Headspace community access | Women's Network | Corporate volunteering | Social events | Open forum with the Leadership Team (TP Café)
If you join us in Pune, you will own meaningful work across the full stack — not be a specialist locked into one layer. The Spring Batch modernisation is real technical debt that needs a real engineer, not a workaround.
Your contact:
Preethika Ramdass
Please submit your application, including salary expectations and potential date of entry
Submit your CV and a short written answer (max 250 words) to:
"You are inheriting a Spring Batch job that runs nightly, processes 500k records, and has no tests. The team wants to migrate it to a cloud-native GCP solution. Walk me through your first two weeks."
Working at thinkproject.com - think career. think ahead.
#LI-PR1
#LI-Hybrid
#content_zone { max-width: 834px; } #scheme_detail_data { width: 100%; display: table; margin-bottom: 10px; } .scheme-border { border: 1px solid rgba(220,223,226,0.8); } .scheme-margin { margin-top: 10px; } .scheme-display .scheme-content { font-size: 16px; padding: 14px 24px; background-color: #ffffff; line-height: 1.6; } .scheme-display .scheme-title { word-break: break-word; } .scheme-display .scheme-title h2 { margin: 0px; font-size: 28px; line-height: 2; padding: 0px; } .scheme-display .scheme-title ul { margin-bottom: 16px; } .scheme-display .video { width: 100%; height: 400px; } .scheme-display h2.scheme-headline { margin: 0px 0px 18px 0px; padding: 0px; } .scheme-display .content-images { position: relative; overflow: hidden; display: block; box-sizing: border-box; padding: 0px; } .scheme-display .content-images: not(: has(.content-images-frame)) { height: 335px; } #header_image { display: none; } #jobTplContainer ul.scheme-additional-data { margin-bottom: 0px; min-width: 40%; } .scheme-additional-data { float: left; margin: 0; padding: 0; list-style: none; } .scheme-additional-data li { list-style: none; margin: 4px 15px 0px -3px !important; } .scheme-additional-data li.left { float: left; } .scheme-display .slide-images: nth-child(2), .scheme-display .slide-images: nth-child(3) { display: none; } .scheme-display .slide-images { width: 100%; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); } .scheme-display .content-images-frame { position: relative; width: 100%; height: 335px; overflow: hidden; } .scheme-display .content-images-description { display: block; text-align: left; font-size: 1rem; line-height: 1.4; color: #000; padding: 8px 24px; border-bottom: 1px solid rgba(220,223,226,0.8); } .scheme-content .user-image { width: 100px; height: 100px; border-radius: 50%; float: left; line-height: 100px; background: no-repeat center center; background-size: cover; } .scheme-content .user-data { height: 100px; margin-left: 80px; } .scheme-content .user-data li { list-style: none; } i.fa-fw { margin-right: 5px; margin-left: 5px; } @media (max-width: 768px) { .scheme-additional-data li { display: block; float: none; } .scheme-display .content-images { height: 250px; } } @media (max-width: 650px) { .scheme-display .content-images { height: 250px; } } @media (max-width: 450px) { .scheme-display .content-images { height: 133px; } } #frame_zone { background-color: #ffffff; }