Progress Software is a trusted provider of software that enables customers to develop and manage AI-powered applications. They are seeking a Software Engineer II to contribute to the MarkLogic Database Engineering team, focusing on core systems development, distributed systems, and ensuring high-performance capabilities for their enterprise multi-model database.
Responsibilities:
- Design, implement, test, and maintain C++ components within the MarkLogic Server
- Contribute to core subsystems such as transactions, journaling, security, encryption, backup and restore, logging, storage abstractions, and server‑side execution engines
- Write correct, efficient, and maintainable code with attention to performance, durability, and security
- Develop and maintain software components that operate in distributed, multi-threaded environments
- Contribute to features and fixes related to availability, scalability, data durability, and fault tolerance
- Ensure server components operate reliably across Linux, Windows, and cloud environments
- Collaborate with Quality Assurance engineers to define and implement effective testing strategies
- Debug and resolve complex server-side issues using tools such as GDB
- Address defects identified through testing, internal validation, or customer-reported issues
- Participate in code and design reviews, learning established patterns and best practices for systems and database development
- Work with senior engineers, product management, and support teams to understand requirements and production usage
- Assist Support Engineers in diagnosing and resolving complex customer issues related to MarkLogic Server. Provide technical analysis and fixes for customer-impacting problems
- Use Git‑based workflows and follow established development and engineering standards
Requirements:
- Bachelor's or Master's degree in Computer Science, Software Engineering, or a related field (or equivalent practical experience)
- Approximately 3+ years of professional software development experience, preferably in systems or backend development
- Strong programming experience in C++, particularly in server-side or systems software
- Solid understanding of: Data structures and algorithms, Object-oriented programming principles, Linux/Unix operating systems, Multi-threaded and concurrent programming concepts
- Experience using Git or similar version control systems
- Strong problem-solving and debugging skills
- Good written and verbal communication skills
- Experience working on database systems, distributed systems, or large-scale backend platforms
- Familiarity with transactions, write‑ahead logging, replication, or consistency models
- Exposure to security concepts such as authentication, authorization, TLS/SSL, or encryption
- Exposure to additional languages such as JavaScript or XQuery used in server‑side runtimes
- Exposure to cloud platforms such as AWS or Azure