Richmond upon Thames, London
2 months ago
Senior Software Engineer
Salary: £60,000-£90,000 (dependent on experience)
Remote working: some available
This position performs complex research, design, and software development assignments within a software functional area or product line, and provides direct input to project plans, schedules, and methodology in the development of cross-functional software products. This position performs software design - typically across multiple systems; mentors more-junior members of the team; and talks to users/customers and translates their requests into solutions.
- BS Engineering/Computer Science or equivalent experience required
- Experience working within three or more globally distributed Agile development teams.
- Experience working on three or more high-reliability, high-availability microservices architecture platforms.
TECHNICAL SKILLS: experience or willing to learn the following:
- APIs: REST, GraphQL
- Languages: C# / .NET Core, ReactJS/Typescript, CSS, SQL
- Testing: Pair Programming, TDD, BDD, vulnerability, security and performance testing tools
- Instrumentation: Logging, monitoring, dashboards, alerting
- Database: DynamoDb, PostgreSQL
- Security: OWASP Top 10
- CI/CD: Git, pipeline management tools, green-blue deployments, canary releases
- Cloud: AWS, Lambda, S3, SNS, SQS, Cloudformation, Containerisation, Serverless
- Useful: PowerShell, Python, PowerBI
- Senior Developer experience in a multi-team, distributed Agile environment (Scrum and/or Kanban). Involved in the full end-to-end lifecycle from design to deployment.
- Able to build customer and team confidence through deep knowledge and being collaborative and customer focused.
- A polyglot, expert in C#, confident developing the full stack through multiple application tiers with a passion for learning new skills.
- Strong technical design skills and fluent in the application of SOLID Principles, design patterns, domain modelling, event-driven architectures, micro-services and message queues.
- Able to take a test-first approach to development and skilled in TDD, BDD, integration testing, logging and monitoring.
- Experienced in software performance optimization and knowledgeable in concurrent programming.
- Strong experience developing global multi-lingual and multi-tenant systems.
- Skilled in maintaining and improving CI/CD workflow processes and tools.
- Exposure to Cloud technologies and at ease with troubleshooting in complex environments.
- Exposure to data science, machine learning and Big Data principles.