Backend Developer (C#/.NET, tSQL/SQLServer)
Dublin City Centre
My Dublin based client is looking for a Backend Developer with skills in C#/.NET, tSQL/SQLServer to join their Backend team on a permanent basis.
The core function of this role is to design, implement(/test) and support a large range (100+) of headless services across a multi-tiered platform. The recruit will be assigned a mentor and a specific range of services, both mentors and services will change over time and as needs demand.
Our software stack is almost solely Microsoft .NET and SQLServer deployed to a Windows platform (within a private data centre). The candidate will work within a dedicated backend team highly skilled in delivering high through-out low latency trading and ancillary services. The platform(s) contain both synchronous/asynchronous servicing on both soap and tcp-ip processing channels. A large portion of business logic is maintained with SQLServer hence strong tSQL and SQLServer knowledge/expertise is required.
Currently our platform is being evolved/migrated to running within Containerised Stacks on a Kubernetes. This involves new component written on .NETCore 2.2+ and old legacy .NET 4.7+ alike. The objective being to i) provide a cost effective cloud solution and ii) migrate from Windows to Linux OS (for legacy components). All backend Developers (component owners) will be involved in platform evolution. Candidates with this experience/skills will be a good fit for the role those without can see this as an opportunity to acquire and grow them while in this role.
The software delivery pipeline is sprint/scrum based with multiple concurrent sprints covering front end, back end and tooling. Our sprints are typically three week cycles with many daily builds. The Organisation is currently on a continuous integration/delivery path with many ambitions for total automation of environment build out, configuration and deployment.
- Work with other members of Engineering to design/document holistic solutions to be delivered across our sprint delivery model. Large feature/function is typically delivered in fragments awaiting its final assembly, configuration and enabling in Production.
- Provide accurate estimates for the implementation of assigned feature/function and deliver to those estimates (within the sprint). Attend daily scrum to inform progress of assignments.
- Implement assigned aspects (formal specification) of the agreed solution within a Test Driven Development Take pro-active steps to ensure high availability/reliability and high performance/through-put of solutions. All coding is performed directly on the trunk (within a SubVersion repository) and within strict guidelines. All service configurations are managed within a well-defined configuration management process catering for multiple environments and service instances.
- Assist in the maintenance, tuning (optimum performance) and issue resolution of production services.
- Be responsible for implementation and support of function aligned with specific client(s) and will work within a vertical client team to ensure the solutions provided delivers the expected functionality to the client.
- Assist in the definition and implementation of development best practice, environments, and tooling. As well as assisting in the evaluation and recommendation of new technologies, platforms, and software.
- Work with 3rd party service providers as/when the need arises.
Strong working knowledge and experience of:
- Agile sprints-scrum based software delivery pipeline
- C#, .Net 3.5+, tSQL/SQLServer (2014+)
- .Net Core, containerization and Kubernetes
- Visual Studio 2017+ (with nunit, productivity/refactoring plugins (e.g. Resharper)
- Experienced in TDD, SOLID development principles and mocking frameowrks
- software version control tool; SubVersion (desired), Mercurial, Git, Perforce, etc.
- deployments into IIS and Windows Cluster Manager environments
- project/team collaboration tool (ticketing systems); JIRA (desired), Bugzilla, etc.
- Continuous Integration tooling such as TeamCity (desired) and/or Jenkins
Essential and Desirable Skills:
- Experience/knowledge of programming paradigms; networking, concurrency, publish/subscribe, cloud patterns, etc.
- Exposure to Cloud-ification of services, migration to cloud and maintenance/support thereafter
- Experience with messaging frameworks (ideally Kafka)
- Continuous Delivery experience/exposure; tooling such as TeamCity, WebDeploy, Octopus (desirable), etc.
- Environment configuration management tooling; PowerShell DSC, Chef, Puppet, etc.
- Work effectively, both as part of a process driven team and autonomously with minimum supervision.
- Contribute/Support Development with respect to …
- process definition, evaluation, rollout, enforcement and continuous review with respect to our software delivery pipeline
- best practice usage of tooling
- development, build and deployment standards/approaches
- delivery of continuous integration/delivery
- Strong analytical and communication skills.
- Ability to grasp complex scenarios quickly and make educated, critical judgments fast.
- Documentation of process, usage of tools, release audits and similar.
- 3rd level degree in an IT related field