Senior Software Engineer, Java | Backup
About the Role
As a Senior Software Engineer on the NinjaOne team, you will contribute to our IT Operations product suite by designing and implementing scalable new solutions and product improvements. You’ll develop high-quality software applications that exceed our customers’ expectations, focusing on clean and optimized coding solutions. Our customers love our products, and you’ll play a key role in maintaining that trust.
About the Backup Team
The Backup Engineering team at NinjaOne solves one of IT’s hardest problems: protecting millions of endpoints, servers, and cloud-managed applications reliably, at scale, and from a single console. Our work spans three squads (Server Backup, Endpoint Backup, and SaaS Backup), covering everything from image-based bare-metal recovery to identity restore for Microsoft Entra. You’ll own software that 40,000+ customers worldwide trust to recover quickly when ransomware, hardware failures, or cloud outages strike.
NinjaOne is built on Java, Kotlin, C++, Golang, and Postgres, supporting millions of user endpoints and running as a scalable cloud service in AWS. Experience with large-scale datastore bottlenecks, asynchronous application design, and client-server architecture will be beneficial.
Responsibilities
- Java and Kotlin Software Development: Contribute to the development of large-scale software applications, ensuring quality is an invariant part of your work and helping fellow engineers meet our quality-first standards.
- Committing Code and Shipping Products: Implement design patterns and tackle enterprise-level software challenges in a startup environment, impacting product development more hands-on than at other companies.
- Debugging and Profiling: Debug and profile production Java services using tools like New Relic and structured log analysis to identify and resolve performance bottlenecks before they reach customers.
- Database Optimization: Design and optimize relational database schemas and queries for performance at scale, including index tuning, query planning, and storage efficiency improvements.
- Mentoring: Support the growth of engineers across the team through knowledge sharing, targeted feedback, and coaching to build a stronger, more aligned engineering culture.
- Code Reviews: Conduct thorough peer code reviews, providing constructive, specific feedback and contributing to architecture discussions and key technical decisions.
- Documentation: Document system architecture, design tradeoffs, and operational procedures to ensure knowledge is shared and decisions are traceable across the team.
- Cross-team Collaboration: Collaborate with engineers across backend, infrastructure, and product teams to drive system reliability, integration, and long-term platform improvements.
- Other duties as needed.
Requirements
- Bachelor’s degree in Computer Science, Computer Engineering, Information Technology, or equivalent work experience.
- 10+ years of experience in Java software development for product applications or equivalent.
- Solid expertise in Kotlin is a strong plus.
- 6+ years of experience designing and operating highly scalable software systems, with a proven ability to identify and solve scale challenges.
- Deep understanding of OOP design principles, with expertise in scaling data structures and object-oriented design for high-performance systems.
- Knowledge of API best practices and REST service development using frameworks like Jersey or Spring.
- Relational Database design, development, and performance optimization experience, including query tuning, index design, and schema optimization at scale.
- Experience with client-server development, event-driven architectures, and message brokers such as RabbitMQ, Amazon SQS, or SNS.
- Experience with caching systems (Redis a strong plus) and expert knowledge of quality testing practices.
- Excellent debugging and problem-solving skills, with the ability to diagnose complex issues across distributed systems and communicate findings clearly.
- Strong Linux and scripting fundamentals, with familiarity in containerization and orchestration tools such as Docker and Kubernetes.
- Hands-on experience using AI coding assistants and LLM-based tools in your day-to-day development is a big plus.
About Us
NinjaOne unifies IT to simplify work for more than 40,000 customers in 140+ countries. The NinjaOne Unified IT Operations Platform delivers endpoint management, autonomous patching, backup, and remote access in a single console to improve efficiency, increase resilience, and reduce spend. By automating IT and managing all endpoints, we ensure employees have a great technology experience at work. NinjaOne is obsessed with customer success and has retained a 98% customer satisfaction score for more than 5 years.
Benefits
- Comprehensive benefits package, including medical, dental, and vision insurance.
- 401(k) plan to help you prepare for your financial future.
- Unlimited PTO to prioritize your work-life balance.
- Opportunities for growth and advancement.
Pay
Starting pay for the successful applicant depends on a variety of job-related factors, including location, market demands, experience, job-related knowledge, and skills. For roles based in California, Colorado, Maryland, New Jersey, or Washington, the base salary hiring range is $140,000 - $220,000 per year. For roles based in New York, the base salary hiring range is $140,000 - $220,000 per year.
Schedule
Full-time work that is hybrid remote, honoring your flexibility needs.
Location
We are flexible on remote working from home if you are located in the USA and reside in one of the following states: CA, CO, CT, FL, GA, IL, KS, MA, MD, ME, NJ, NC, NY, OR, TN, TX, VA, or WA. We have physical offices in Austin, TX and Tampa, FL if you prefer a hybrid option.
This position is not eligible for Visa sponsorship. Due to operational policies, NinjaOne is unable to hire for this role within the city limits of Chicago. We will consider all qualified candidates who reside outside of the city proper or are willing to self-relocate.