We are looking for a .NET Product Engineer who can take ownership of a software project and deliver it based on documentation and requirements prepared by the Principal Engineer.
All seniority levels are welcome. The essential requirement is the ability to work independently; not a particular title or number of years of experience. Junior developers who can meet this expectation are encouraged to apply.
What you will do
Develop software from documented requirements through implementation, testing, and delivery. You will be responsible for planning your work, making implementation decisions within the project’s technical direction, and delivering a working solution without continuous step-by-step supervision.
Our work includes business applications, APIs, integrations, and existing-product development. The stack includes C#, .NET, ASP.NET Core, Entity Framework Core, SQL Server, PostgreSQL, Azure, and TypeScript.
You will occasionally consult directly with clients to clarify requirements or discuss technical details. Frequent client communication is not expected; the role is primarily focused on engineering and delivery.
What we expect
Practical C# and .NET development skills, the ability to understand technical documentation and translate requirements into maintainable code, and ownership of the quality and completeness of your work.
You should be able to investigate problems, test your implementation, communicate progress, and raise blockers early. Working independently does not mean avoiding questions: recognising when a requirement needs clarification or a decision needs discussion is part of the responsibility.
The distinction is straightforward: you will be given a project to deliver, not just a sequence of individual coding tasks.
Technical requirements
Frontend: Working knowledge of HTML, CSS, JavaScript/TypeScript, and frontend application development, including forms, state management, API integration, and handling loading and error states.
APIs and backend: Practical experience with C# and ASP.NET Core. Ability to implement and consume HTTP APIs, handle validation, authentication and authorisation, and integrate external services.
Business logic: Ability to translate documented requirements into application behaviour, including domain rules, workflows, data processing, and error handling. Code should be maintainable and testable.
Databases and persistence: Working knowledge of SQL and Entity Framework Core, with familiarity across common relational databases, including SQL Server, PostgreSQL, MySQL/MariaDB, and SQLite. Understand data modelling, migrations, indexing, transactions, and query performance, as well as the purposes and trade-offs of NoSQL databases and caching systems.
Cloud and on-premises deployment: Familiarity with deploying and troubleshooting applications in both Azure and self-hosted environments. Understand application hosting, configuration and secrets, networking, HTTPS, database connectivity, logging, and the operational differences between managed cloud services and infrastructure you maintain yourself.
Containerization: Familiarity with containerization and orchestration technologies, such as Docker, Docker Compose, and Kubernetes, for deploying and managing applications in cloud and on-premises environments.
End-to-end delivery: Ability to use Git, write and run tests, debug problems across application layers, and take a project from the Principal Engineer’s documentation through to a working deployment. Identify missing requirements and raise blockers or decisions that require consultation.
Depth of experience may vary by area. You do not need to be an expert in every technology or have used every database engine, but you must understand how the full stack fits together and be able to investigate unfamiliar components without continuous supervision.