At Upland Software, you’ll find smart, creative teams who love working together to deliver value for our customers, and a global culture of growth and possibility. Our operating model has always supported remote work—and as we keep growing and evolving our workplace, that won’t change. We’re passionate. We’re proactive. We take pride in our work, and we love a good challenge. Sound like you?
Opportunity Summary:
As a Software Developer, you will be working both across and within our agile development teams and be involved throughout the full development lifecycle with particular responsibility to ensure the development & maintenance of our software platforms. You'll be involved in all aspects of the team including the creation and elaboration of business requirements, functional/design specifications, development and maintenance of our software and driving innovation into our product suite. You will have a particular focus on backend technologies and their continued development.
Primary Responsibilities:
- Develop and maintain scalable and robust enterprise (Perl) applications
- Work as part of cross functional, passionate agile (SCRUM/Kanban) project teams ensuring high quality delivery is at the heart of the development process from requirements definition through to delivery
- Participate in scrum ceremonies and participate on development projects and implement solutions in partnership with development managers and teams.
- Resolution of performance or security issues.
- Provide relevant, honest and accurate feedback to management.
- Research, recommend and implement tools as needed with the goal of continually increasing our development productivity
- Demonstrable working knowledge of design patterns
- Proactively bringing issues and problems to the attention of the team; generating, proposing and implementing innovative solutions to solve them
- Be an advocate of automation, Test Driven Development, Continuous Integration and Continuous Delivery
- Maintain exceptionally high standards of design and code quality at all times, including but not limited to adherence to architectural, security and scalability standards and principles
- Updates job knowledge by researching new internet/intranet technologies and software products; participating in educational opportunities; reading professional publications; maintaining personal networks; participating in professional organizations.
- To be enthusiastic, fearless and boundary-less with the ability to coach and mentor
Requirements:
- Recent experience of developing Perl applications within an Agile environment
- Test driven / behavior driven (TDD/BDD) software development
- Deep understanding of Modern RDBMS, ability to debug slow queries and improve Table structure and processes.
- Understanding of the MVC Software Development pattern for Web frameworks (Catalyst)
- Good knowledge of Database ORM systems, their benefits and limitations (DBIx::Class)
- Modern Perl Object Oriented system (Moose) - Use SOLID design principles, Design patterns
- Templating System (TT)
- NoSQL databases (Redis)
- Evangelist of modern Perl programming and development practices
- Best Practices for Perl development, OO Design Patterns and Database structure
- Working within UNIX/Linux based environments.
- Working knowledge of Continuous Integration and Continuous Delivery methods and toolsets
- Working with enterprise SQL databases (preferably PostgreSQL)
- Familiarity with web based SaaS
- Comfortable with absorbing new technologies quickly; highly self-directed and able to manage and prioritize concurrent and competing/conflicting challenges
- Innovator; ability to work collaboratively and a demonstrated team player with a results-oriented track record
- Follow recommended software development methodology standards, championing evolution as appropriate
- Pro-active customer service attitude
- A technical mindset with good understanding of algorithms, data structures, design patterns.
- Solid knowledge of Agile development practices.
- A willingness and an ability to share best practice and improve processes.
- Experienced in issues of Scaling and an understanding of optimising web-based applications.
- Experience working across multiple platforms and technologies
- Solid scripting skills (e.g., shell scripts, Perl, Ruby, Python)
- Strong demonstrable experience of Object Oriented Analysis & Design and accompanying design patterns with a commitment to Software Craftsmanship and Clean Code.
- Ability to work with Distributed Version Control Systems
- Performance tuning
- Experience of web interfaces and working with databases.
- Scaling and optimising web-based applications
- Designing high availability systems
- Knowledge of Agile development practices and experience working in a cross-functional Scrum team
- Ability to work collaboratively and a demonstrated team player
- A willingness and an ability to share best practice and improve processes
Advantageous:
- Experience with NoSQL databases such MySQL / DynamoDB.
- Experience or understanding of enterprise systems deployed as micro-services through code pipelines utilizing containerization (Docker)
- Experience of working with SaaS based software architectures within a multi-tenanted cloud hosted deployment model
- Experience with systems and IT operations operating within an ISO27001 environment
Upland Software (Nasdaq: UPLD) is a leader in cloud-based tools for digital transformation. To learn more, visit www.uplandsoftware.com.
Upland Software is an Equal Employment Opportunity Employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identify, national origin, disability, veteran status or other legally protected status.