Job Title: Senior Software Engineer
Reporting to: Lead Engineer
Role Purpose:
As a Senior Software Engineer, you will enhance and support both new and existing products within the Software Engineering group. In addition to contributing to feature development, you will play a role in shaping the technology and process strategies, and occasionally lead innovation or software design initiatives.
Key Responsibilities:
- Develop new features with a strong focus on high-quality code.
- Conduct peer code reviews to ensure quality and adherence to best practices.
- Participate in daily stand-ups, change analysis sessions, and technical presentations.
- Provide guidance on tool and environment adoption where necessary.
- Continuously develop knowledge of the business domain and gain a deeper understanding of the organization's objectives.
- Work closely with tech leads, engineers, testers, and other personnel to deliver high-quality products.
- Take ownership of initiatives related to innovation or addressing technical debt.
- Design, document, and communicate system solutions with a balanced focus on time, quality, cost, and performance.
- Collaborate with colleagues across the organization to gain buy-in and feedback on proposals and designs.
Required Knowledge & Experience:
Essential:
- Strong proficiency in C# at a commercial level.
- Solid experience with .NET Core and related open-source technologies.
- Knowledge of Object Orientation, SOA, and relevant design patterns.
- Experience with modern software development practices, including agile methodologies, version control, code reviews, and continuous integration.
- Understanding of concurrency, asynchrony, and parallelism.
- Experience with Test Driven Development (TDD), unit testing frameworks, mocking frameworks, and patterns for testability.
- Proficiency in relational database concepts, Microsoft SQL Server, and SQL.
- Familiarity with front-end technologies such as HTML, CSS, and JavaScript.
- Experience in Web API design and implementation.
Desirable:
- Commercial experience with Typescript.
- Experience with containerization (e.g., Docker) and container orchestration (e.g., Kubernetes).
- Experience in SPAs and responsive web development, particularly with Angular.
- Familiarity with enterprise messaging systems (e.g., NServiceBus, Azure Service Bus)