Turnitin is seeking a Principal Software Engineer interested in distributed systems, data modeling, and scalability to develop and improve our award-winning educational software. As an engineer on this team, you will be a core contributor to a team supporting shared services that provide the backbone for existing and new applications. We operate at a high scale across global markets and seek individuals that enjoy solving complex problems.
Do you have the skills—and drive—to join a tech team that’s working to digitally transform the ed-tech industry? From test-driving the latest technologies to creating high performing applications, Turnitin is constantly innovating and creating industry-leading solutions that provide peace of mind for our customers worldwide.
As a Principal Software Engineer at Turnitin, you’ll apply your talents in an agile environment that has the creative energy of a start-up, a highly flexible work environment, a culture of innovation, and most importantly other talented engineers, designers, and product managers to interact with and learn from.
• Provide guidance in technical design and development activities.
• Make significant contributions implementing our shared services, as well as help maintain and upgrade existing one.
• Ensure future success and stability through code reviews and automated testing.
• Work closely with software architects and database/operations engineers on system infrastructure and design.
• Lead on technical design reviews and recommend improvements.
• Mentor engineers in software development, Java best practices, and technical decisions and emerging technologies.
• Bachelor’s or Master’s degree in Computer Science or related discipline.
• 5-10+ years experience writing robust web applications in Java with Spring Framework (Spring MVC, Hibernate).
• Experience in more modern Java technologies such as Java 8/11 and Spring Boot.
• Experience with container and clustering technologies (we use kubernetes).
• Experience working with relational databases (we use Postgres) and Caching systems (we use Redis).
• Strong knowledge of object-oriented analysis and design principles and understanding of applying those principles in RESTful API implementation.
• Extensive experience with software development best practices (e.g. design patterns, test-driven development, code profiling, debugging).
• Effective technical and cross-functional communication (product, design, operations).
• High level knowledge and experience of industry trends and technology advancements relating to distributed systems, cloud, platform as a service, and software as a service.
• Experience in building cloud-ready solutions based on microservices and multi-tenancy architecture.
• Practical experience in cloud technologies and frameworks preferably in Amazon Web Services and familiarity with native services such as RDS, SQS, SNS, S3 etc.
• Experience with authentication standards (like SAML or OpenID), and authorization frameworks (like OAuth2).
Nice to Have:
• Familiarity with Basecamp's Shape Up process.