Senior Java Full Stack Software Developer
The Full Stack Software Engineers work as part of agile eXtreme Programming teams who own the inception, development and full life cycle of digital products. The team practices methodologies and adheres to principles put forth by the lean startup and lean enterprise movements. The team puts the system user at the center of everything they do; ensuring that users receive the most value out of the products being developed.
The Full Stack Software Engineers qualify through a screening and suitability assessment (Opportunity Assessment of Developers). They work in a highly structured paired environment. They architect and design their own systems to deliver their products using modern tools, technologies, frameworks, and systems. They develop test driven code all day and every day. They are highly focused on test driven development, continuous delivery and innovation. They own and manage running their application in production, and ultimately becomes accountable for the success of their digital products through achieving the KPIs.
The Full Stack Software Engineer Lead Consultant serves as a member of a product team. They practice and are the champions of the methodology and eXtreme Programming (XP) and a product mindset within each product team.
Full Stack Software Engineer Lead Consultant designs and implements applications following 12-factor principles to build out the product and iterative enhancements. He/she owns the full stack of software products; developing and implementing frontends (web or mobile), and Back End services. He/she leverages test driven development and continuous integration to ensure agility and quality of products. He/she actively participates in the decision making process of the team ensuring that the simplest appropriate technology and design is chosen to meet user needs. He/she coaches other team members, creating an environment of continuous learning, and constantly challenging and stretching the knowledge of the team.
- Participates in inceptions and iteration planning meetings, infusing backlogs with technical input working in close partnership with the product manager
- Leads and participates in daily site, cross-site, and product team standups
- Leads and participates in retrospectives; demonstrating and encouraging each participant to provide feedback with empathy
- Partners in collaboration and strategy alignment across product portfolios (cross-product) in partnership with product managers, other peers and key stakeholders with the customer needs and wants in mind
- Serves as an expert on one or more business domain and a lead advocate of one or more technology stacks and shares that knowledge across organizations
- Participates in the effort of shaping the architecture and design of the product; actively helps the team in choosing the right technology, solving technical problems,
- Coaches the team and leads daily practices of using paired programming and test driven development in writing software and building products
- Establishes continuous integration, continuous delivery, and continuous deployment pipelines and practices
- Provides support for software products in user environments
- Leads and participates in knowledge sharing, and contributes to the overall growth of the collective knowledge of the community.
- A college degree or equivalent experience in Computer Science or similar field, including a solid understanding of Computer Science fundamentals
- 5+ years of developing and implementing systems at scale
- Strong understanding of computer science concepts, Object Oriented Design principles
- Strong understanding of distributed systems, operating systems, networking, databases, security, and analytics
- Experience and knowledge in developing REST APIs including tooling for documentation (swagger, REST-docs, openapi spec), versioning, service discovery/registration, testing and management; experience using API gateways a plus
- Experience and knowledge in web and API security including authentication, authorization, OAuth, OWASP, OpenID, and SAML
- Experience in Back End development design and implementation; database (relational, NoSQL, caching), messaging and big data development, implementation and optimization
- Actual experience developing continuous integration, continuous delivery and continuous deployment pipelines for distributed apps
- Knowledge and experience on approaches and tools for automated testing and monitoring
- Actual experience working in an eXtreme Programming (XP) or agile environment; experienced working in a paired programming/engineering model
- Experience in Test Driven Development; including knowledge and experience in testing frameworks like junit, mockito, jasmine, protractor, cucumber, and other like technologies
- Able to learn new technologies, and teach other members of the team/s
Associated topics: .net, application developer, c, c/c++, design pattern, develop, expert, lead, matlab, senior software developer