Position: Software Engineering Manager
Location: Charlotte, NC
Type: Permanent - FTE
As a Systems Engineer Software Engineering Manager you will lead a technical product contributing to developer innovation for the company. This extends from improving the experience of existing products to developing new products with a strategic product vision. The Software Engineer Manager selects, leads, counsels, motivates, sets expectations and evaluates medium to large teams. This person also assists in defining, implementing and prioritizing IT policies, procedures, and best practices. The Software Engineer Manager influences team and business results. This role will require 50% or more of an individual’s time dedicated to hands-on software engineering tasks with the remainder of time spent in team management and oversight.
• Builds long-term relationships within team and amongst peers by creating an environment of safety and innovation
o Champions open and honest communication
o Respects confidentiality
o Leads by example with integrity
o Welcomes new ideas, learns from successes and failures
• Models and creates an environment of accountability for direct reports and peers
o Establishes vision, direction, and specific objectives for team efforts; allows freedom to accomplish objectives
o Collects staff performance data against desired outcomes and service level agreements
• Executes HR-related processes and develops staff through coaching and mentoring and providing specific, timely, open, honest, and constructive performance feedback.
• Leads employees and influences peers through change by using one’s self as an example.
General Management & Decision Making
• Sets and executes team strategy, including objectives, plans and policies for area of responsibility to develop and deliver innovative solutions and systems in support of Enterprise goals. Communicates strategy to the team so they understand their role in achieving the established goals.
• Participate in product scoping, discovery and framing, and inceptions providing technical input and helps translate user features into system design
• Leads and 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
• Leads the effort of shaping the architecture and design of the product
• Leads collaboration and strategy alignment across product portfolios (cross-product) in partnership with product managers, other peers and key stakeholders
• Serves as an expert on multiple business domain and a distinguished advocate of multiple technology stacks and shares that knowledge across organizations
• Serves as the anchor of the team and practices technical leadership; helping guide the team in choosing the right technology, solving technical problems, and resolving any technical conflicts within the team
• 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
• Leads and participates in knowledge sharing and contributes to the overall growth of the collective knowledge of the CompoZed Labs community.
• A college degree or equivalent experience in Computer Science or similar field, including a solid understanding of Computer Science fundamentals
• 7+ years of developing and implementing systems at scale
• 5+ years people or technical leadership or equivalent experience leading a team
• Strong understanding of computer science concepts, object-oriented design principles
• Strong understanding of distributed systems, operating systems, networking, databases, security, and analytics
• Hands on experience and accountability architecting, designing, implementing and delivering large scale distributed systems and/or applications for the cloud, including microservices architectures and 12-factor principles
• 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 backend 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 advanced experience using distributed version control systems (git), artifact management systems, build and packaging systems (maven, gradle, npm, artifactory, etc…) and continuous integration tools (Jenkins, TravisCI, Concourse, Bamboo, GoCD).
• 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 lead agile teams and lead collaboration across teams; serving as an anchor or technical lead for complex distributed systems spanning multiple apps, services, APIs, and datastores
• Actual experience and familiarity with open source software
• Able to learn new technologies, and teach other members of the team/s
• Able to work effectively across organizational and geographical boundaries