Possibility of remote work: Hybrid working Office in Milton Keynes
Contract duration: Long term 1+ year (Quarterly extensions)
Location: Milton Keynes
---------------------------------------
JOB DETAILS
Role Title: Lead Developer
Required Core Skills:
Minimum years of experience required: 10+ (working with senior architects) or less if proven good technical skillset
Essential
• Modern JavaScript (ES6+)
• HTML
• CSS
• Visual Studio Code
• Git
• Azure DevOps
• React / extensive experience of reactive front-end framework(s)
• Gatsby / experience of static site generators
Desirable:
• GraphQL
• Understanding of the headless CMS approach
• Kentico 12
• Understanding of design systems, including web components (shadow DOM, custom elements)
FULL ROLE DESCRIPTION:
TECHNICAL SKILLS:
1. Strong test-driven development experience, ability to lead on automated testing, coach and upskill other team members
2. Strong ability to model data at conceptual and physical levels and communicate to other team members
3. Demonstrate and champion best use of developer tools and libraries
4. Facilitate agreement on development process with the team and adhere to it, upskilling other team members where necessary
5. Participate in regular reviews of progress, helping identify process improvements and implement them
6. Guide and encourage less experienced developers in improving their skills by pair programming, code reviews, mob programming, walkthroughs, proofs-of-concept, etc.
7. Facilitate design discussion and decision as a team and determine best way forward
8. Help the whole team understand the situation and agree the way forward so everyone's work remains aligned
9. Know how to encourage effective teamwork and collaboration
10. Understand and be able to identify sources of inefficiency, surface, challenge and overcome them
11. Maintain awareness of other team members' work and know where to offer help and/or spot check their work for alignment with user stories, design decisions and security principles
12. Awareness of different branching strategies including trunk-based development, branch-per-story and ability to guide the team on best choice for the situation and standard working practise
13. Ability to develop other team members to become full-stack developers
14. Ability to learn new and updated skills from other team members
15. Solid object-oriented, domain-driven and functional design and programming skills and ability to help other team members develop their skills
16. Strong ability to unpack user stories, suggest ways to break down or refine large stories, identify ambiguities and help ensure developers and testers understand the need, scope and acceptable criteria of each story
17. Partner with solution architects on technology selection for the project, feed back on issues found, be able to select alternatives
18. Be able to identify areas of technology risk and lead on proofs-of-concept, research and/or change of tack to address the risk early
19. Collaborate with other team leads on problem solving, lessons learned, new approaches, potentially reusable assets
20. Identify inadequate organisational support for and facilitation of technology delivery and escalate
21. Lead on defining documentation the project needs and ensuring it is maintained as a "living document", ensuring documentation is as lightweight as possible and remains relevant over time
22. Have a good track record of identifying other good developers and testers, be able to build a strong team around them
23. Develop other team members’ skills
24. Continue to learn and improve their own skills
25. Be unafraid to admit a lack of knowledge and ask for help, leading by example in showing less senior team members that it is safe for them to do the same
26. Share innovations with other teams who could benefit
27. Understanding of key accessibility issues, related web technologies, ability to engage with Accessibility team early to develop accessible software
28. Understand when to engage with data protection team, awareness of what information is personal data and implications for managing it
29. Ability to assign (and reassign) tasks to team members to best utilise their skills, maintaining a balance between short term delivery progress and long term need to upskill and develop team members
30. Ability to translate ideas in both directions between technology and business worldviews
Tech lead transferable technical skills:
1. Make sense of existing code, be able to refactor it to improve its design, prepare it for enhancement and add automated tests
2. Ability to read and make sense of legacy code in other programming languages in order to interface with it
3. Strong understanding of secure design and implementation of software
4. Standard data formats: working knowledge of JSON and XML
5. Good understanding of Git version control, branches, merges, resolving conflicts, difference between rebasing and merging, squashing, tags
6. Solid understanding and experience of operationalising and operating a system in production, including identifying what to monitor, failure modes and mitigations, designing for robustness and self-recovery
7. Awareness of modern cloud services landscape including application hosting, managed relational database, edge content caches, Web Application Firewall, DDoS protection, message topics and queues, email sending, service authentication, blob and file/block storage, data caches (e.g. Redis, Memcached)
8. Ability to create responsive web interfaces that work well on different screen sizes, devices and browsers
9. Understanding of common authentication flows (ideally with SAML and OpenId Connect) and integrating authentication and authorisation concerns within an application
10. Understanding of the best ways to use common developer tools and libraries and the features that can save time and promote efficiency (including Jetbrains Resharper or Rider, Visual Studio, VS Code, Git)
11. Strong ability to sequence releases to form a clean, risk-free upgrade path
12. Ability to work across the full stack, which typically includes:
a. web development (HTML, modern CSS including media queries, flexbox, calc() and custom properties, modern ES6 Javascript including modules, classes, let, const, destructuring assignment, template literals, arrow and async functions, promises, a packaging tool and a bundling tool, ideally able to use Typescript),
b. database (including relational, ideally SQL Server),
c. build pipeline (Azure DevOps, static code analysis tools)
d. cloud deployment (relevant Azure and AWS services, Bicep, CloudFormation)