Title and Summary
Senior Software Engineer
Overview
• Responsible for the analysis, design, development and delivery of software solutions
• Defines requirements for new applications and customizations, adhering to standards, processes and best practices
Responsibilities
• Participate in team prioritization discussions with Product/Business stakeholders
• Estimate and own delivery tasks (design, dev, test, deployment, configuration, documentation) to meet the business requirements
• Automate build, operate, and run aspects of software
• Drive code/design/process trade-off discussions within their team when required
• Report status and manage risks within their primary application/service
• Drive integration of services focusing on customer journey and experience
• Perform demos/acceptance discussions in interacting with Product owners
• Understands operational and engineering experience, actively works to improve experience and metrics in ownership area
• Develop complete understanding of end-to-end technical architecture and dependency systems
• Drive adoption of technology standards and opinionated frameworks, and review coding, test, and automation work of team members
• Mentor and guide new and less-experienced team members
• Identify opportunities to improve an overall process and trim waste
• Share and seek knowledge within their Guild/Program to drive reuse of patterns/libraries/practices and enhance productivity
Experiences
• Has ability to write secure code in two or more languages (Java mandatory) and familiar with secure coding standards (e.g., OWASP, CWE, SEI CERT)
• Understands the basic engineering principles used in building and running mission critical software capabilities (security, customer experience, testing, operability, simplification, service-oriented architecture)
• Understands internals of operating systems (Windows, Linux) to write interoperable and performant code
• Able to perform debugging and troubleshooting to analyze core, heap, thread dumps and remove coding errors
• Understands and implements standard branching (e.g., Gitflow) and peer review practices
• Has skills in test driven and behavior driven development (TDD and BDD) to build just enough code and collaborate on the desired functionality
• Understands use cases for advanced design patterns to implement efficient code
• Understands and implements Application Programming Interface (API) standards and cataloging to drive API/service adoption and commercialization
• Has skills to author test code with lots of smaller tests followed by few contract tests at service level and fewer journey tests at the integration level (Test Pyramid concept)
• Apply tools (e.g., Sonar, Zally, Checkmarx ) and techniques to scan and measure code quality and anti-patterns as part of development activity
• Has skills to collaborate with team and business stakeholders to estimate requirements (e.g., story pointing) and prioritize based on business value
• Has skills to elaborate and estimate non-functional requirements, including security (e.g., data protection, authentication, authorization), regulatory, and performance (SLAs, throughput, transactions per second)
• Has skills to orchestrate release workflows and pipelines, and apply standardized pipelines via APIs to achieve CI and CD using industry standard tools (e.g., Jenkins, AWS/Azure pipelines, XL Release, others).
• Has skills to understand, report, and optimize delivery metrics to continuously improve upon them (e.g., velocity, throughput, lead time, defect leakage, burndown)
• Has skills to document and drive definition-of-done for requirements to meet both business and operational needs
• Understands how to build robust tests to minimize defect leakage by performing regression, performance, deployment verification, and release testing
• Has skills to conduct product demos and co-ordinate with product owners to drive product acceptance signoffs
• Has skills to Understands customer journeys and ensure a Mastercard good experience by continuously reducing Mean time to mitigate (MTTM) for incidents and ensuring high availability (99.95% as a starting point)