Principal Engineer (Java)
iManage combines artificial intelligence with content and email management to free, secure, and understand information. Over 3000 companies and 1 million users worldwide rely on our market-leading software to share and protect their most valuable data. Our work is not always easy but it is ambitious and rewarding.
So we’re looking for people who love a challenge. People who are happiest when they’re solving problems and collaborating with the industry’s best and brightest. In exchange, we’ll make sure the work you do here is worth doing. That’s the iManage way. It’s how we do things that might appear impossible. How we develop our employees’ strengths and unlock their potential. It’s how we find meaning in everything we do.
Whoever you are, whatever you do, however you work. Make it mean something at iManage.
What will you be working on?
We are looking for a passionate Principal Engineer with extensive hands-on experience in building scalable distributed systems. As a team lead, you will mentor and drive a team of 4-5 committed engineers. You will be part of our server-cloud team in an agile environment supporting the flagship products that enable over 4000 clients to collaborate and manage documents efficiently and securely.
You will play a leading role in the architecture, development, and deployment of critical, large scale products. Because of our commitment to CI/CD, we are using cutting-edge technologies like RxJava, Docker, Storm, AWS, Elasticsearch, MariaDB and more. We encourage our employees to collaborate and build great relationships globally. Our leadership team cares about every individual holistically, on a personal and professional level.
- Work within cross-functional engineering teams as well as peer teams to build an integrated solution
- Collaborate with product managers to qualify new features
- Encourage software engineering best practices (e.g. unit testing, code reviews, design documentation) and related tools like GitHub, JIRA
- Communicate, document and present in front of technical and business audiences
- Strive to consistently learn and improve within the company as well as share knowledge with colleagues globally
- Bachelor's or Master’s degree in Computer Science or related field
- 10+ years of experience building software or applications with Java
- Expert proficiency in one other high-level modern programming languages like Scala, Python, etc. Exposure to full-stack development is preferred
- Proficiency with relational database and NoSQL systems
- Thought leadership and design skills in one or more key technology areas: high-transaction systems, micro-services based distributed architectures, fault-tolerant designs, data and system security.
- Experience with Linux platforms for development and production use
- Secure coding and design practices (including threat modelling) is a plus
- Working exposure to CI/CD pipelines and build management within a Cloud/SaaS environment; use of Docker as a delivery package is preferred