We are separating a new product vertical in relativity around Search and AI in Search to revamp the way we do search in legal world. This is no small task – as it requires building systems that work with 10s of petabytes of highly sensitive data, enabling information retrieval on very complex matters in a cloud native way. The new search organization will have a big mission of redesigning and moderning our search platform (serving petabytes of data) to make it future proof (this will require replatforming from SQL-Based world to more cloud native search-dedicated world) and embed it with AI – with the new ways to search – natural language and vector search.
The Principal Engineer practices software engineering and leads an area of software system to apply software engineering best practices and principles to deliver high quality, maintainable, reusable, reliable, performant, and scalable software on schedule. The Principal Engineer serves as a technical liaison between his or her teams and other internal and external development teams to identify and resolve dependencies, to identify, improve, and apply software engineering best practices and processes, and to identify and mitigate risks to the on-time delivery of software. The Principal Engineer – thinks what to buy or what to build, designs the architecture to serve the user needs and support the system scale. Understands the trade-offs to be made and that there are no silver bullets. But ultimately builts systems that work, deliver value in time and are predictable to operate and extend. The Principal Engineer serves as a mentor to other team members to improve technical and process expertise and promotes collaboration. The Principal Engineer works under minimal direction from senior software engineering managers or directors and is given wide latitude for independent judgement. Drives department technical vision and assumptions.Job Description and Requirements
Responsibilities
- Partners with management to set and communicate team goals and vision aligned to business requirements.
- Offers coaching to ensure the team stays focused and delivers against the goals, adapting to changing business requirements.
- Specify non-functional software requirements and analyze all requirements to determine design feasibility within time and cost constraints and mentors others to do the same.
- Estimate software development timelines and be accountable to the timelines by actively managing risks and changing requirements.
- Provide input into system software architecture development by working with Advisory, Principal Engineers, and Architecture team as required.
- Display an ownership mindset; be accountable for and beyond the features your team and larger organization develops.
- Design and lead the design of software using abstraction, low coupling and high cohesion, modularization, encapsulation and information hiding, interfaces, and separation of concerns.
- Build systems that are low maintenance but not overengineered – balancing security, observability and extensibility with time-to-market and user value
- Implement (yes there will be coding) and lead the implementation of software using the practical application of algorithms, defensive programming and exception handling, fault tolerance, design patterns, and ne pragmatic – in using object oriented principles, applying SOLID principles and design patterns in a variety of languages such as SQL, Javascript, and C# (with nice to have Rust) to drive value for our users
- Be excited and deliver on cutting age systems interacting with LLMs in legal space – that requires careful management of input and output – especially in observing those systems, building RAG architectures that are extensible and having deep interest in how this provides value to our users
- Test and lead the test of software with traceability back to requirements emphasizing the practice of Test-Driven Design and the use of autonomous frameworks and Continuous Integration
- Offer solutions to improve agile software development processes and practices (SCRUM) to advance engineering efficiency to maximize resources and reduce expense.
- Provides project and professional guidance and mentoring to team members.
- Provides solutions to varied and ambiguous issues, utilizing judgment to select methods and techniques for obtaining solutions.
- Ensure the adoption and application of software development tools (IDEs, test frameworks, static analyzers, etc.) to improve engineering efficiency to maximize resources and reduce expense.
- Identify and offer solutions to reduce technical debt
Your Skills:
- 10+ years of professional software development experience on commercial-grade systems and applications with a proven track record of building and shipping successful software
- 6+ years of working with large data systems (at least 100+ TB touched), working with search related systems and systems dealing with low-latency user input
- Full knowledge of and adherence to SDLC (Software Development Life Cycle) standards and best practices
- Ability to make large technical decisions with impact and following through on them
- Ability to decompose larger problems into software development work as self-contained, minimally inter-dependent tasks for team members to implement.
- Ability to learn new concepts in depth fast. In the age of AI new techniques and paradigms arise very fast, we need to have an opinion on which will be useful and we should implement and which one might be just hype
- Experience in working with Large amounts of data and cloud native environments that supported distributed systems
- Nice to have is experience with Vector Search – in any form (Pinecone, pgVector, Elastic or others) and Rust – or willingness to learn it to serve AI-Based applications
- Nice to have experience in Python or Rust and practical understanding of Machine Learning systems
- Ability to efficiently multi-task and manage multiple concurrent tasks by identifying differing priorities relative to changing business need.
Relativity is a diverse workplace with different skills and life experiences—and we love and celebrate those differences. We believe that employees are happiest when they're empowered to be their full, authentic selves, regardless how you identify.
Benefit Highlights:
- Company Car
- Comprehensive health plan
- Flexible work arrangements
- Two, week-long company breaks per year
- Unlimited time off
- Long-term incentive program
- Training investment program