Principal Software Engineer
Principal Software Engineer
- Location: Remote US or Canada
Our Customers Develop Software at the Speed of Ideas
CloudBees, the enterprise software delivery company, provides the industry’s leading DevOps technology platform. CloudBees enables developers to focus on what they do best: Build stuff that matters while providing peace of mind to management with powerful risk mitigation, compliance, and governance tools. Used by many of the Fortune 100, CloudBees is helping thousands of companies harness the power of continuous everything and gets them on the fastest path from a great idea, to great software, to amazing customer experiences, to being a business that changes lives.
Backed by Matrix Partners, Lightspeed Venture Partners, Verizon Ventures, Delta-v Capital, Golub Capital, and Unusual Ventures, CloudBees was founded in 2010 by former JBoss CTO Sacha Labourey and an elite team of continuous integration, continuous delivery, and DevOps professionals.
Why This Role
This person will be responsible for the design and implementation of new features for the Cloudbees CD product. Cloudbees CD is the industry leading solution for Continuous Delivery and Release Automation (CDRA) and has been recognized by industry analysts as the leader in the CDRA space for 4 years in a row. Cloudbees CD is a complex product spanning technologies ranging from distributed systems, clustering, databases, multi-thread processing, complex scheduling and much more. The ideal candidate should have proven experience of developing and maintaining multi-threaded Java application with an emphasis on performance and scalability.
The Cloudbees CD team places high value on quality with a rigorous unit test framework, code reviews and a CI build system that helps to find problems fast. The ideal candidate for this job will think of programming as a craft, as well as a job.
What You’ll Do
- Work as an independent contributor collaborating with a team of developers and test engineers
- Collaborate with product management, support and engineering teams in order to establish priorities
- Mentoring & code reviewing for a remote team – setting best practices and policies, writing specs, wiki pages, knowledge base articles and other internal documentation
- Work closely with the support team, and communicate with customer sysadmins, DBAs and developers for troubleshooting
- Provide technology recommendations and strategy to support CloudBees product requirements
What the Role Requires
- 5+ years of experience working on distributed multi threaded Java applications
- Experience with developing Enterprise Java applications
- Deep knowledge of Java Core / Java 7 & 8
- Solid experience with Spring and Hibernate frameworks
- Excellent debugging and problem solving skills along with a desire to dive into existing Java stack and fix such system
- Familiarity with HTTP, REST, HTML, JSON, and similar web-based development technologies, and with building complex multi-tier parallel distributed systems that communicate via them (such as the backend of complex websites)
- Experience with analyzing thread safety and race conditions, parallelism, synchronization, and locking, including between threads, between machines in a cluster, and in the database, including optimistic and pessimistic locking.
- SQL, object-relational mapping (e.g. using Hibernate), and basic DBA skills in Oracle and writing transactional code
- Test-driven development, including writing reflection-based/class-hierarchy-searching/abstract tests to enforce best practices on other engineers by proactively anticipating places people might fail to observe them and writing tests to catch that
- Excellent oral and written communication skills. Ability to effectively collaborate with team members is required.
- Good judgment, logical thinker and detail oriented
- Bachelor’s or Master’s degree in computer science is highly preferred
Nice to have
- Design and architectural skills both as lead and cooperating with others
- Handling situations involving high levels of abstraction, multiple threads, and message passing via queues and/or the database, and into security code
- Performance testing, including best practices, hands-on experience both directly and supervising Quality Engineers doing this
What You’ll Get
- Highly competitive benefits and vacation package
- Ability to work for one of the fastest growing companies with some of the most talented people in the industry
- Team outings
- Fun, Hardworking, and Casual Environment
- Endless Growth Opportunities