Role Overview
The Associate Engineer (AE) will support the technical delivery abilities of the development teams across all disciplines from development, testing, dev-ops and business analysis, ultimately assisting in the delivery of production systems. The Associate Engineer will be proactive in seeking opportunities to learn and extend their knowledge in the engineering disciplines through supervised contribution supported by more senior team members.
The Associate Engineer will be passionate about software development, a self-learner, and keen to grow their technical skills to help their development team to be successful. They should be comfortable working in agile teams, foster transparent communication, have a commitment to quality, and a focus on getting things done.
Role Responsibilities
1. Act as a technical contributor on a team, demonstrating good technical competencies and a desire to improve those competencies to become a valued and independent contributor to the team
2. With support from more senior team members participate in the elicitation, design, development and testing of software changes or features and support their successful deployment into a production setting
3. With support from more senior team members be contribute to the elicitation and capturing of business requirements using techniques such as user stories and use cases
4. With support from more senior team members be contribute to the development and execution of test cases and associated tasks to assess completion and quality of delivered user stories and use cases
5. With support from more senior team members be capable of contributing to the delivery of complex systems
6. Be able to communicate the architecture and principles behind a system to other members of the team
7. Support the use of preferred planning and prioritisation tooling to capture and track deliveries, identify issues and help with iteration planning and prioritisation
8. Support the team through active participation in estimation of work to be done by discussing requirements and potential solutions with other team members
9. Learn to recognise patterns in the software systems so that it is possible to have meaningful conversations about wider system architecture with more senior team members
10. Gain an appreciation of how to evolve systems towards target state architecture through the use of directed refactoring and prioritisation of deliveries
Experience / Competences
Essential
11. Recent experience of hands-on Back-End Software Engineering primarily with Microsoft c#.net
12. Experience of Application Lifecycle Management Tools and technologies such as Source Code Management; git, DevOps platforms; gitlabs, TeamCity
13. Experience of utilising DevOps to automate and minimise delivery times from Development to Production e.g. utilising CI\CD
14. Experience of and understanding of the importance of maintaining code quality using Unit/Integration/e2e testing tools such as N\XUnit, Moq. Utilising Quality Assurance expertise to automate regression.
15. Collaborate on Solution Technical Architecture with Enterprise Technical Architects to follow Enterprise standards. Enjoy and understand new technology and be able to influence technical direction.
Desired
16. Low latency event driven architectures. Messaging using AMQP.
17. Knowledge and use of Cloud Technologies and concepts preferably on AWS or Azure/GCP etc.
18. Experience of OO design principals such SOLID / DRY / YAGNI to create maintainable, self-documenting and high quality code.
19. Experience of Architectural Patterns and practices such as Backend for Frontend, Micro Frontends, Microservices, MediatR
20. Experience of Domain Driven Design (DDD) and implementing patterns like CQRS to facilitate polyglot persistence.
21. Use of and working with Containerization to aid deployability, testing and loose coupling.
22. Agile exponent to speed up delivery, reduce risk and provide maximum value to the end users