Lead Software Engineer
Full Job Description
The role of lead is not a textbook checklist, however, there are technical responsibilities that a team must fulfill, and we expect the tech lead to ensure these responsibilities are covered and can cover them themselves if needed.
We expect tech leads to taking a collaborative approach to leading their team. This is especially important when considering the amount of experience that each of our consultants brings. Given this, we expect you to:
- Respect the other members of your team and recognize you don’t always know best
- Spot gaps in team capability and figure out how to fix them as a team
- Be hands-on, able and willing to contribute to development, however, don’t expect to be coding all of the time
- Encourage the team to be pro-active, give them responsibility
- Have a clear understanding of the deployment architecture
- Have a clear understanding of the build pipeline
- Understand how you get changes in production
- Understand how all parts of the system work together
- Facilitate technical communication with other teams, both within your engagement and across other EE clients
- Actively seek to remove knowledge silos from the team
- Ensure you have a release / branching strategy in place
- Act as the primary point of contact for your team when communicating with other teams
- Ensure there is a technical vision for the team
- Liaise with environment specialists to ensure smooth deployments to production
- Encourage the team to follow good development practices
- Feedback to the delivery lead or engagement manager on the quality of your team (good and bad)
- Recognize team members that have the potential to grow into team leads
- Ensure the use of new technologies or dependencies does not block the team
- Ensure the team keeps necessary architectural documents up to date
- Keep an eye on the long-term consequences of architectural choices and remind others when necessary.
- Build good relationships with your team members. Act as a mentor when required
- Keep the client informed and engaged on the technical side of the project.
Technologies / Experience –
The successful candidate must have the following experience:
- Worked as the tech lead of a development/delivery team in a large organization
- Have worked with a variety of different technical architect roles
- Be deeply proficient in at least one programming language (Java, Scala, C#)
- Be comfortable using other languages and evidence using multiple languages
- Have hands-on experience with some form of configuration management tooling, e.g. Ansible, Chef, Puppet
- Have hands-on experience of at least one continuous integration and continuous delivery technology, e.g. Jenkins, Go, Team City or Bamboo
- Full stack development experience from user interface through to data persistence
- Strong proponent of XP practices such as TDD
- Working with a delivery team to formulate an automated test strategy.
- Worked as part of agile delivery teams and seen several different approaches to delivery.
- Good appreciation of secure coding practices and end to end system security.
The following exposure will also be looked on favorably:
- Performing an ‘architect’ role, while retaining hands-on involvement
- Working with cloud hosting platforms such as AWS, Rackspace, Azure etc.
- Infrastructure management technologies such as Cloud Formation or Terraform
Write us at firstname.lastname@example.org to get connected!