# Engineering

To create the engineering career path, we looked at the different stages in the lifecycle of a feature. We felt that this was a much better approach to outline all the responsibilities and areas of impact for our engineering team than just the company's values.

## Architect

### Idea

#### Basic

* Understand requirements shared by the team

#### Intermediate

* Work with business teams to prioritise the right features
* Refine requirements so we are building the right features for both existing and future customers

#### Senior

* Work with business teams to define feature areas
* Suggest new areas based on customer knowledge

### User experience

#### Basic

* Consider all user touch points and areas of impact
* Ask the right questions to understand what has to be built

#### Intermediate

* Improve the user experience through discussions

#### Senior

* Define the user experience flow for large feature areas and products

### Technical architecture

#### Basic

* Think about what is needed to build this capability
* Document the technical architecture
* Get feedback from other team members

#### Intermediate

* Review architecture of junior team members
* Find elegant solutions to complex problems
* Reduce complexity and promote reuse

#### Senior

* Be comfortable in architecting large systems and products
* Use the right tech stacks or SaaS solutions for a quick and future-proof solution

## Build

### Development

#### Basic

* Build features and fix bugs following standard coding practices

#### Intermediate

* Identify ways to reuse code and create components so we add only what is needed
* Build features faster with cleaner code

#### Advanced

* Take on large complex projects and build them elegantly

### Feedback

#### Basic

* Share regular progress with product and business teams
* Make changes as needed based on the feedback

#### Intermediate

* Do a demo with relevant teams for early feedback
* Share previews with customers for their feedback

#### Advanced

* Do detailed customer interactions to identify issues and opportunities before extensive development

### Testing

#### Basic

* Add or update automated tests for the feature
* Ensure feature and adjacent areas are tested thoroughly

#### Intermediate

* Create a thorough test plan for the feature

#### Advanced

* Create a testing framework that continuously tests and identifies problems before they happen

## Deploy

### Deployment

#### Basic

* Work with the team to deploy the feature on time

#### Intermediate

* Create a deployment and migration plan for complex features
* Collaborate with business teams to identify the right time and approach to deployment

#### Advanced

* Orchestrate the roll-out of complex and interconnected systems
* Ensure there is no downtime, data loss, or other negative impact from any deployment

### Communication

#### Basic

* Inform relevant teams about the changes with video and screenshots

#### Intermediate

* Work with business teams to communicate benefits to existing and potential customers
* Update documentation and public references as needed
* Update training and on-boarding material

#### Advanced

* Create a sense of excitement about new capabilities and improvements within the company and with customers
* Conduct online and offline sessions to ensure customers are aware of the features and use them the right way

### Validation

#### Basic

* Add relevant metrics and create dashboards

#### Intermediate

* Review metrics regularly to see if features are used well
* Get regular feedback from business teams about the usability and effectiveness of feature

#### Advanced

* Spot patterns of poor or excellent usability from metrics
* Interact regularly with customers to understand how our products can be improved
