Description:
About the role
We are seeking a Lead Software Engineer to join our Data and Platform team. This is a pivotal role, responsible for guiding both data and software engineering design. The position involves a wide variety of technical skills, from API to database, from coding to infrastructure, from data analysis to database management, and etc. The ideal candidate will have experience building enterprise solutions following the standard Software Development Life Cycle process and have extensive knowledge building robust, scalable, and efficient solutions
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
- Own complex problems having dependency across services and facilitate cross-functional team interactions to drive resolution
- Write code to build and enhance applications/services and promote code-reviews, code scanning, and other standard development practices to deliver high-quality artifacts to production.
- Define, architect, design, and develop procedures and solutions at a service level to meet the business requirements/enhancements
- Drive prioritization decisions and trade-offs in working with product partners
- Identify opportunities and build roadmaps to enhance primary service/function
- Automate and simplify all aspects of software delivery and development actively evangelizing the need to automate and simplify where needed.
- Drive seamless integration across all connected services to meet end-user expectations
- Drive blameless postmortems culture to identify root causes of incidents and implement learnings
- Introduce new technologies and architecture by following enterprise guidelines
- Advocate for engineering principles outside of current organization/platform
- Provide development and architecture guidance to team members
- Build relationships and effective partnerships across organizations
- Write and evaluate recommendations for job promotions based on an unbiased view of one's accomplishments
- Conduct technical interviews for hiring engineering staff and raising the performance bar
- Lead by example with hands-on approaches to demonstrate engineering excellence
- Encourage staff to share and seek knowledge within their Guild/Program to drive reuse of patterns/libraries/practices and enhance productivity
Experiences
- Has the ability to write secure code in three or more languages (e.g., Java, Python, PHP) and familiar with secure coding standards (e.g., OWASP, CWE, SEI CERT, Blackduck) and vulnerabilities
- Has skills in building applications using open frameworks to achieve reuse and reduce development times (e.g., Spring Boot, Angular, DXP, others)
- Has skills to document and coach team on the development practices and coding guidelines (e.g., branching, peer reviews, library use, logging, scanning rules, test-driven development, error handling)
- Experience with cloud technologies, especially AWS Redshift, AWS Glue Jobs and Crawler, Lake Formation Policies, Step Functions, S3, SQS, SNS, and Sparks technology
- Experience with code as infrastructure such as CDK or Terraform
- Experience with distributed computation engine such as Spark or Flink
- Experience with monitoring tools, such as DataDog, Splunk, AWS Cloud watch/Cloud trails
- Able to perform debugging and troubleshooting to analyze core, heap, thread dumps and remove coding errors
- Experienced with working with large data sets. You’ve implemented parallel processing and have dealt with the limitations and challenges of working with terabytes of data.
- Understands use cases for advanced design patterns (e.g., service-to-worker, MVC, API gateway, intercepting filter, dependency injection, lazy loading, all from the gang of four) to implement efficient code
- Has skills to undertake a technical review of code across applications and their dependencies to look for anti-patterns and promote continuous refactoring
- Understands and elaborates technical debt and operational issues to drive prioritization discussions with stakeholders to improve the run experience
- Understands system architecture to plan for platform and infrastructure capacity (e.g., database, compute, network, storage) and drives the dependency prioritization to reduce the delivery lead time
- Has skills to understand 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)
- Has skills to simplify deployment and eliminate software and infrastructure snowflakes using standardized platforms, ephemeral instances, and automation
- 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, Bamboo, AWS pipelines, others)
- Able to configure rules and build automation for code with vulnerability scanning and software composition analysis using standard tools (e.g., Sonar, JFrog XRay, Veracode, others)
- Has skills to define, organize, and report on test runs for major, minor, and hotfix releases (including unit, component level, system level, customer journeys, past customer issues, and regulatory controls)
- Has skills to conduct various performance tests (e.g., load, volume, spike, breakpoint, endurance) to Understands application/service limits and behaviors