Perforce Software is a global company trusted by leading brands to deliver solutions for challenging problems. They are seeking a Senior Software Engineer to join the PE team, focusing on configuration management and software development, while collaborating with cross-functional teams to maintain high-quality software solutions.
Responsibilities:
- Collaborate with cross-functional teams to design, develop, and maintain software applications
- Utilize Git for version control, branching, and merging to enable efficient collaboration with team members
- Design and develop distributed systems, ensuring fault tolerance, scalability, and performance
- Write clean, efficient, and maintainable code using Ruby and Clojure
- Conduct thorough code reviews and provide constructive feedback to ensure code quality and adherence to best practices
- Identify and troubleshoot software defects and performance bottlenecks. Stay up-to-date with emerging technologies and industry trends, and apply them to improve software development processes and outcomes
- Contribute to the continuous improvement of development methodologies and practices within the team
Requirements:
- Strong proficiency in configuration management practices and tools
- At least 3 years experience working with a team on a production code base
- Extensive experience with Git, including branching, merging, and conflict resolution
- Solid understanding of distributed systems concepts, such as fault tolerance, scalability, and consistency
- Experience in developing and maintaining software applications in a collaborative team environment
- Knowledge of software development best practices, including code reviews, unit testing, and documentation
- Strong problem-solving and analytical skills, with the ability to quickly understand and address complex technical challenges
- Excellent communication and collaboration skills, with the ability to effectively work within a cross-functional team
- Proficiency in Postgresql, Ruby, Java and Clojure, with a strong understanding of object-oriented and functional programming principles
- Understanding of continuous integration and continuous delivery (CI/CD) principles and tools
- Experience developing configuration management solutions
- Experience doing system administration
- Knowledge of Agile development methodologies, such as Scrum or Kanban