As a Senior Software Engineer, you will be responsible for developing great customer-centric solutions that delight our users and enable our customers to do business more effectively in the future.
You will be a part of an agile delivery team that believes in all the software development practices as a craft.
It starts with understanding the customer’s need, designing, or adapting a solution that brings both our customers and our company business value, and ends with your team ensuring that it is meeting the needs of the user through feedback.
You will use your skills to design, develop, test, deploy, and support the team’s solutions.
The ideal candidate for this role has a curiosity for the customer and for learning to write software using best practices to create something that is extensible and adaptable for the future.
How we work:
Engage in a collaborative agile team focused on frequent delivery of valuable features to gain feedback from and an understanding of customer usage.
Apply user centric design principles and work with UX design teammates to improve our users’ experience.
RESPONSIBILITIES AND DUTIES:
Solutions Architecture
Application of technology to meet the business needs of this customers
Design and build multi-tier systems that allow for flexibility and adaptation for current and future needs
Execute and iterate to verify architectural approach for a team’s solutions
Apply secure development practices on the team
Set and apply guidance within a team and in collaboration with other developers within the shop.
Development
Translate functional requirements into code that meets the needs and quality expected by our customers
Write clean, modular, and testable code
Create user interfaces that meet accessibility and usability patterns
Build robust and efficient application programming interfaces (APIs) using various frameworks and tools
Ability to apply or set new patterns and apply these to the code you support
Quality
Understanding of quality practices that help our teams create maintainable and performant systems
An understanding of quality and how to structure our code to make it more testable and to write tests at different levels of the code based on an understanding of risk
Understanding of application security vulnerabilities and best practices to mitigate
Mentoring
Coaching and mentoring of teammates on patterns and practices that enable collaborative software craftsmanship and help improve understanding, efficiency, and quality
Requirements
Utilize stories in an agile team as conversation starters to understand the needs of an end user
Create stories that enable a team to improve a system by addressing evolving design debt or by improving the tooling for a system or developer experience
Technical Excellence
Apply judgement to incorporate key technical concerns effectively into product development including security, instrumentation, quality and monitoring, and technical debt
Integrate and respond to application monitoring and performance tooling to assist in the teams understanding of system performance, reliability, and trends in system responses that signal customer impact
KNOWLEDGE, SKILLS AND ABILITIES:
Application of design principles
Strong diagnostic, analytic, troubleshooting, and problem-solving skills
Be a learner who stays up to date on new technology, collaborates to learn and shares out to others
Knowledge of software development methodologies and practices, especially Agile/iterative development processes
Able to rapidly experiment, create proof of concepts, and learn from frequent feedback
Creation of adaptable / extensible architectures and a broad understanding of systems
Advanced Skills in working with version control tools such as GIT with a drive to incorporate automation and quality gates in the CI/CD pipeline
Previous experience working in distribution and/or working with ERP solutions is a plus