- As part of the Client’s Customer Digital Solution organization, you will be part of a fast-paced, energetic, and high-performing team helping to develop web applications and services to enhance the Customer experience. We are a cross-functional team and some technology team members may have a focus on front-end and application development, while others may focus more deeply on back-end services. We are looking for experienced team members with the versatility and enthusiasm to work across technologies and a desire to work on an ever-evolving team.
- As a Software Engineer, you will collaborate with technology peers and business partners to design, build and deploy new software using agile/XP/test-driven development using a wide range of technologies and solutions. You will be focused on developing well-designed, efficient code that adheres to the latest industry standards and assists in coding, testing, and debugging new software or making enhancements to existing software for customers. You will be working with designers, developers, and product owners in a small team setting to integrate software components into fully functional software systems spanning multiple business areas.
Senior Software Engineer must possess:
- A breadth of experience building software solutions (through a Good mix of independent research/projects and industry expertise).
- 5-7 years’ previous experience in software development. (Either 7 years of experience specifically in software development or five years of experience in software development in combination with 2 years of alternative experience in a related field). Ideally has a portfolio of work – code samples, etc.
- Significant familiarity and comfort in using IDEs. Knows shortcuts and frequent operations that speed up development time.
- Deep and solid understanding of APIs. Have been involved in designing/building/implementing APIs.
- Significant understanding of cloud-native software engineering best practices.
- Familiarity with several frameworks. The resulting code is concise and easy to follow.
- Experience with automation and optimization. Looks for ways to create repeatable patterns that increase the efficiency of the team.
- Experience and ability to manage and optimize databases.
- Understanding of functional programming and how to apply functional concepts in any language. Quick to pick up a new language or adopt a more recent version of a language.
- Familiarity and ability to comfortably work with multiple platforms.
- Experience turning complex ideas into user stories. From that, can turn user stories into workable solutions, provide estimates to complete that work, and break down complex work into smaller components.
- Previous experience collaborating on a cross-functional team.
- Deep understanding of the development cycle.
- Ability to debug and avoid future problems by building more robust solutions.
- Ability to look at previous personal or team experience and use this to analyze mistakes/successes, draw conclusions, and design future solutions. The resulting solutions have few bugs and quick remediation times.
- Experience building solutions with the larger team in mind. Solutions have the goal of improving software engineering at the team level.
- Experience with teaching and mentoring team members at various levels.
- A deep and solid understanding of cyber security principles such as authentication, authorization, and encryption. Ability to leverage and recommend common security libraries applicable to their language stack and solid experience with secure programming best practices. Knowledgeable of common attack vectors, such as SQL injection, Denial of Service (DoS), Cross-Site Scripting, etc., and methods to limit exposure. Quickly identify and remediate potential security vulnerabilities.
- Experience working with one or more CI/CD stacks and associated best practices. Ability to set up CI/CD for new products with no guidance. Recommends and implements modifications to CI/CD processes when continuous improvement opportunities are identified.
- Turn complex ideas into manageable pieces of work to complete as part of a product team.