At Discover, be part of a culture where diversity, teamwork and collaboration reign. Join a company that is just as employee-focused as it is on its customers and is consistently awarded for both. We’re all about people, and our employees are why Discover is a great place to work. Be the reason we help millions of consumers build a brighter financial future and achieve yours along the way with a rewarding career.
Join our team as a Principal Software Developer, leading our next generation of the Payment Services Reporting solution. We’re looking for passionate, collaborative individuals that can help shape the evolution of payments and position Discover Financial Services as the leading direct bank and payments partner.
The Prinicipal Software Developer is primarily responsible with partnering with the Payment Services Architecture team to design and oversee end-to-end solutions for the Reporting Platform. The reporting application will stream in data from a Kafka broker into a Spark cluster. The Spark cluster will perform report data preparation including filtering, enrichment, aggregations and reconciliation, save to an HDFS cluster and present the data to report renderers. We are looking for someone with in depth Spark development experience with the ability to provide technical direction to more junior developers as well as assist with planning and design of components.
From a design standpoint, you will be expected to lead the Reporting Development teams in logically and physically architecting secure and efficient solutions to often complex problems. On the software engineering side, you’ll take the lead in ensuring that our software engineers are developing solutions that are in line with our architectural patterns and coding/security standards.
At the same time, you’ll be constantly working with product owners, architects, PMO and others to identify technical and functional system needs/estimates while helping the Reporting teams continuously improve deployed solutions to achieve software excellence. To that end, you must thrive in a fast-pace, constantly evolving environment and be capable of demonstrating thought and results leadership with a view supporting the vision and mission of our Department/Company.
- Partner with the Business and Technology teams to estimate, plan and execute projects, ensuring that your team has appropriate design and technical specifications to deliver high quality products.
- Mentor all aspects of software development from initial conception/delivery through continuous improvement of deployed solutions via an Agile/Scrum environment.
- Support, evangelize and contribute to the continual evolution of the Product vision and overall road map.
- Be reliable, self-motivated, and focused on high quality delivery of work products and willing to accept responsibility and accountability.
- Assist staff in resolving highly complex technical problems.
- Conduct research on new technologies and evolve existing applications and architecture accordingly in alignment with our Payment Services Architecture team.
- Oversee the roll out and consumption of new technologies. Provide technical guidance to software team members. Work closely with management to ensure a smooth delivery/transition process.
- Demonstrate an extreme willingness to stay highly hands on in design and implementation of Spark/Java/J2EE based solutions.
- Increase overall code, product, design and quality in the Reporting team.
- Integrate our Security first and proactive audit/compliance mindset into the team.
- Delivers technology solutions that support our business goals. Partners with management, architects, and product owners to understand requirements, evaluating the features to prepare applications specifications into workable technical solutions.
- Enhances Operating Model by demonstrating a high level of initiative, ability to work with all levels of management and within a Scrum team as a senior technical leader/developer. Assists with the growth of others on the team within a challenging environment while promoting DFS cultural behaviors and technical proficiencies based on our latest standards and strategies.
- Actively contributes to the department’s developer community to support technical initiatives and provides input into best practices.
- Maintains highly available systems. Ensures all projects and releases are appropriately tested and risks are mitigated.
At a minimum, here’s what we need from you:
- Bachelor’s Degree in Information Technology or related technical field
- 8+ years of experience in relevant technical expertise
- In lieu of education, 10+ years of experience in Software Development or related field
- 7+ years of overall technology experience in Core Java/J2EE development domain and Agile/Scrum environment.
- 3+ years of overall technology experience in Spark, Spark Streaming, GiT, HDFS, YARN, Continuous integration with Jenkins or similar.
- Proven experience of being involved in the delivery and implementation of business critical projects of large scope and technical complexity.
- Expected to be technically strong in the following general areas: Spark Streaming, HDFS, Java J2EE (Java 1.7/Java 1.8), Spring, MQ, RESTful services. Continuous Integration (with Jenkins, Nexus), Gradle, and Github.
- Experience with Scrum methodology and Agile development practices.
- Understanding of testing frameworks and software quality assurance methods.
- Understanding of PAAS and cloud based architecture.
- Be passionate about delivering quality, world-class solutions for your business partners and stakeholders/customers of our Company.
- Possess a proven history of innovation in a fast paced environment and the ability to thrive in an environment of constant change.
- Experience in the payments ecosystem a plus.
- Experience in supporting and working within virtual or remote teams.
- Ability to travel as needed (domestically and internationally). Less than 10% annually.
Our Tech Stack:
Core Java, Spark, Spark Streaming, HDFS, YARN, Continuous integration with Jenkins or similar, Git, Hortonworks platform, Zookeeper, Kafka, Spring Core and other Spring APIs, Spring Boot and Spring Integration, Micro service development, Cloud deployments, RabbitMQ, RESTful web services, Kerberos.