- Position: Principal Software Engineer
- Salary: up to 49 300 PLN
- Form of employment: contract of employment
Join our client which makes software to help users organize data, discover the truth, and act on it. Their SaaS product manages large volumes of data and quickly identifies key issues during litigation and internal investigations. The AI-powered communication surveillance product proactively detects regulatory misconduct like insider trading, collusion, and other non-compliant behavior. They have over 300,000 users in 49 countries serving thousands of organizations globally.
The role:
The Principal Engineer practices software engineering and leads an area of software systems 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, identify, improve, and apply software engineering best practices and processes, and identify and mitigate risks to the on-time delivery of software. The Principal Engineer – thinks about what to buy or what to build, designs the architecture to serve the user needs, and supports the system scale. Understand the trade-offs to be made and that there are no silver bullets. But ultimately builds 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 judgment. Drives department technical vision and assumptions.
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 mentor 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 develop.
- 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-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
Qualifications:
- 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 follow through on them
- Ability to decompose larger problems into software development work as self-contained, minimally interdependent 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 a practical understanding of Machine Learning systems
- Ability to efficiently multi-task and manage multiple concurrent tasks by identifying differing priorities relative to changing business needs.
Benefits:
- 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