Java Developer
Tenexti is an emerging software development company based in Lviv. We specialize in creating innovative solutions, delivering high-quality results, and helping our clients turn their ideas into reality. With a passion for technology and a commitment to excellence, we strive to build lasting partnerships and drive meaningful impact through our work.
We are looking for a Java/Kotlin Developer to join our team.
🧑💻 What we expect from the ideal candidate:
- You have 1-3 years of experience working with Java in production environments.
- You are a good engineer. You don’t write code just to the point when it starts working. You go the extra mile to make your code elegant. You are passionate about technology and you take ownership of the things you implement. You have skills to design solutions that are simple, robust and easy to maintain.
- You are open-minded and eager to learn. Strong Java proficiency is required, but you should be comfortable working with Kotlin and functional programming patterns. We’re actively modernizing our codebase—new features are primarily written in Kotlin. You don’t need to be a Kotlin expert from day one, but you should be excited to grow in that direction.
- You think beyond just coding. Building great software isn’t about closing tickets—it’s about making the product and codebase better every time you touch it. You’re creative, you ask questions, and you care about the “why” behind what you’re building.
- You are a good team player. You treat people around you well and have strong communication skills to articulate technical decisions clearly.
- You don’t need supervision. You are self-driven and can solve problems on your own. You take initiative when you see opportunities for improvement.
💡 What you will do:
- Work on a mission-critical system that handles complex data synchronization workflows. System stability is paramount—downtime during peak hours leads to significant financial impact.
- Balance legacy and modern code. Help modernize existing Java code while building new features in Kotlin. Refactor legacy code, prune dead code, and gradually improve architecture while keeping the system stable.
- Implement complex business logic using sophisticated rules engines (like GoRules) for pricing logic, data mapping decisions, and business-critical workflows. You’ll participate in market analysis and some business decisions around pricing strategies.
- Optimize performance at scale. Process hundreds of thousands of records with strict rate limits. Identify bottlenecks, optimize database queries, improve API performance, and ensure queues don’t stack up.
- Participate in analytical decisions. While you’re a developer first, you’ll be involved in market analysis, system auditing, and even some business decisions around pricing and data strategies. We value engineers who understand the business impact of their work.
- Monitor system health extensively. Work with Grafana dashboards tracking dozens of critical metrics. Slowing of DB or API calls can cascade into serious issues.
- Perform code reviews. Suggest better, cleaner, and simpler approaches. Help the team grow by sharing knowledge.
Team and Customer:
We are a team of engineers based in Lviv working for a US-based customer. All engineers and architectural decisions are here locally—no late calls with the US, no overseas knowledge holders blocking you.
Our customer is not backed by venture capital but by reliable business revenue. We’re self-funded and don’t experience pressure to cut roles in Ukraine due to "country risks"—quite common lately.
We’re hiring due to business growth. By leveraging technology and smart people, we empower the business to grow further.
Product:
We work on a high-stakes data synchronization system handling hundreds of thousands of records in real-time. The product ensures data consistency between multiple systems while operating under strict rate limits and performance constraints.
This is a fascinating technical challenge—not a simple CRUD application, but a complex, performance-sensitive system where every optimization matters, stability is non-negotiable, and creative problem-solving is daily routine.
Technical highlights:
- Java monorepo with two main applications: a large-scale sales service (40GB RAM, 99.9%+ uptime) and a smaller purchase service. While development focus varies, you’ll need to be flexible across both
- Complex distributed architecture: Our Java apps depend on multiple Node.js microservices that serve as data providers. These Node apps are split across AWS and Hetzner, communicating via RabbitMQ
- Separate Redis instances for Java app and Node.js services
- Processes hundreds of thousands of records while respecting strict API rate limits (~700 requests/minute). Mistakes can take hours or days to fix
- Heavy reliance on Grafana dashboards with dozens of charts. Performance monitoring is critical—slowdowns cascade through the entire data pipeline
🚀 Our technology stack:
Backend:
- Java 21 & Kotlin (actively migrating towards more Kotlin)
- Spring Boot
- MongoDb, Redis
- GoRules for complex business logic
Infrastructure & DevOps:
- Kubernetes
- ArgoCD and Github Actions
- OpenSearch for logs
- Prometheus & Grafana for metrics & traces
The broader ecosystem:
- TypeScript, Node.js & Nest.js microservices
- PostgreSQL, Hasura & GraphQL
Projects you may work on:
- Modernizing the codebase: Refactoring legacy Java to Kotlin, improving architecture and maintainability
- Large-scale data migrations: Complex migrations with massive data volumes, zero downtime
- Performance optimization: Hunting tricky bottlenecks, optimizing queries, improving API response times
- Analytics improvements: Building features for transparent sales data and system metrics
- Business logic enhancements: Implementing clever mechanics using GoRules for pricing and data mapping
- System reliability: Enhancing monitoring, alerting, and recovery mechanisms
Why choose this project and team?
- Stable project running successfully for 8+ years with consistent revenue growth
- Entire R&D team in Ukraine making all architectural decisions locally
- Mission-critical production system where your decisions directly impact business outcomes
- Real engineering challenges: Performance optimization, rate limiting, data consistency, large-scale refactoring
- Opportunity to work on a quite high load production system (Monolith + microservices) and have an impact on how it is designed and shaped.
Perks and Benefits:
🏋️♂️ Gym compensation
🏝18 days of paid vacation, public holidays, and paid sick leave
💻 Modern tech gear: MacBook based on silicon CPU (M1-M3) with 32 of RAM
🇬🇧 English lessons
⏱️ Flexible working hours and no time trackers
✈️ Possible trips to USA when the war ends. Before the war, we flew there twice and we loved it :)
If you read this far please start your message with “Glory to Ukraine!”, thank you!
Required languages
| English | B2 - Upper Intermediate |
| Ukrainian | Native |