Position: Principal C++ Engineer
Company: Forte Group
Experience required: 5y
Category: C++
English level: upper
Published: 2022-03-01T00:00:00+02:00

**Role Specifics:**

● Design of best-in-class technology solutions for current and future product needs, leveraging best practices and modern tools.
● Implementation of system design with a focus on Resilience, Scalability, Security, and Telemetry 
● Design of evolutionary code architecture to support a new growing business line 
● Evaluation and recommendation for tooling and libraries, to support your plan
● Aligning with the current DevOps plan and CI/CD processes and iteratively evolving.
● Support Quality Assurance on the team and lead the team to quality-driven solutions.
● **Expectations for all Agile Team Member & Solutions Architect descriptions: **
**- Language(s) and platforms:** JavaScript/web3.js, OCaml, C, C++, Rust, Bash, Solidity, Python, TensorFlow, HTML/PHP
**- Tooling:** WebAssembly, WASI SDK, Docker container, Docker Swarm, Jupyter/Anaconda, NixOS, Emscripten
**- Infrastructure (cloud provider):** AWS, Ethereum, IPFS, Geth/Clef
**- Integrations/services:** The Kubernetes ecosystem

**You are an Agile Team Member**

You will be a part of a self-organizing team – a team that solves complex challenges and builds working software. Being a good team member means you contribute to its success by:

● Collaborating with your PO to groom backlog and break down stories into small functional slices
● Maintaining an attitude of commitment through outward display of willingness.
● Impressing responsibility on others by displaying ownership in tasks.
● Practicing positive interactions – lean on encouragement in place of judgment.
● Being open to new ideas and encouraging innovative practices amongst peers
● Actively working on broadening or adding a skill
● Asking for assistance when problems become challenging 
● Balancing best practice decisions with delivering high business value 
● Delivers stories/tasks that are “committed” within a timebox

**You are also the Principal Engineer **

The Principal Engineer is considered the premier developer on the team.  It is therefore your responsibility to engineer large-scale solutions that enable the business while supporting the strategic architectural vision of quality, scalability, performance, and function. 

**Principal Accountability/Technical Sprint Planning**

● Owns technical design for a sprint including high-level flow diagrams, ERD, service contracts
● Ensures the whole team understands the technical plan, reasons for it, and adherence to it. 
● Considers testability in design with a focus on code determinism, abstraction, and modularity
● Commands a broad awareness of dependent projects and considers them in design
● Helps team members define clear, small, and testable tasks
● Frequently thinks out loud about design with the team and a higher level design committee
● Works with Enterprise Architects to ensure a team’s direction is in line with the enterprise vision
● Defines technical acceptance criteria (where necessary) for each story
● Owns/manages the technical backlog and works with PO to schedule those efforts

**Principal Accountability/Software Development**

● Communicates important details of the solution design to everyone on the team
● Encourages collective code ownership through CI and promotes frequent code check-ins (daily)
● Practices and teaches unit test development to achieve at least 80% code coverage
● Addresses technical debt constantly - escalating when it becomes risky to time or quality
● Develops with awareness for team needs and acts as resource/mentor for junior members
● Oversees the merge up/down process 
● Carries out root cause analysis on defects to ensure fixes are happening in the right way
● Keeps an up-to-date local development environment to reduce risk

**Principal Accountability/Software Inspection**

● Ensures daily code check-ins (through spot checks) are happening by each member of the team
● Employs static code analysis to identify code readability, anti-patterns, vulnerabilities & defects
● Monitors unit level test results after code are committed and hold a team to account for quality
● Considers cyclomatic complexity of code and drives project refactors where necessary
● Enforces transparency of the inspection process via Continuous Integration and reporting
● Enforces the team’s Definition of Done
● Reviews QA test plans for technical coverage
● Conducts cross-team and inter-team code reviews

**Principal Accountability/Release Planning**

● Drives and adheres to a well-defined code promotion process
● Supports and is accountable for timely releases and adherence to release activities
● Resolves defects in a timely and effective manner
● Identifies tactical risks and raises/resolves issues effectively
● Ensures that operational teams are effective during deployment (dry-run or production)
● Follows up with infrastructure to create service accounts, permissions, access rights, etc
● Creates deployment documentation that outlines WHERE & WHAT?

**Principal Accountability/Community**

● Collaborates outside of the product team to encourage a development community
● Establishes and carries out formal and informal educational sessions (lunch & learn, etc)
● Liaises between the team and management to assure needed skills are represented on the team
● Encourages self-study by promoting best practices and bringing in external perspective