We are Haefele Software. We are a boutique software development firm, established in London 2006, with a growing team of 55 between London, Cape Town (primarily), Johannesburg, and Melbourne.
We are engineering-focused and build high-performance Agile teams, enjoying complex problems, serving a variety of industries and clients, generally abroad.
As a collective, we strive to be surrounded by equally personable, sharp, and growth-minded people, in a space that values relationships, people first, and pragmatic process, to foster the mentor and the mentorable.
Technical Lead Developer C# .NET/.NET Core
A Technical Lead Developer at Haefele Software is a highly-skilled technical individual taking the wealth of experience they’ve acquired over their career and applying it to solve complex problems in new and existing high-performance agile process-oriented teams.
They are often sent to new clients to build relationships and bootstrap client teams at the start of a project. They are trusted professionals armed with the necessary skills to architect and build cloud-first greenfield solutions for new and existing clients and lead high-performance development teams. They are just as comfortable taking over an existing team’s technical leadership and working in an established codebase without missing a beat.
Our Technical Leads are charismatic, adept communicators and form part of our pre-sales conversation with all our new clients. They are called upon to consult on potential client engagements and design or build a proof of concept solutions to help the sales team win new clients and projects.
They are the principal architects of their client solution. They understand that one person’s opinion may not be enough to make the best architectural decisions and call on their senior developers and the broader company’s expertise when making fundamental architectural decisions on their projects.
They are ultimately accountable for their technical team’s quality and output and take their position and responsibilities very seriously.
They are heavily involved in inter-team knowledge sharing and company-wide workshops aimed at improving our developers’ skills.
They are called upon to perform architectural reviews of client projects and other teams’ code within the company. They are involved in the interview process when hiring new developers into the company.
Our Technical Leads are thought leaders in our space and pioneers of new technology implementations, leading our company’s technical excellence.
Aside from their technical team obligations, it is a leadership role, and our Technical Leads are responsible for the career growth of the developers in their care, understanding each developer’s strengths and weaknesses through regular one on one feedback and finding opportunities to challenge their team to improve and grow technically to offer our clients the most value.
They are the mentors to the technical team, and they make sure they know what they are talking about.
Your first 6 months at Haefele Software
Everyone starts at Haefele Software by learning our processes. Our staff experience team will ensure you have all your hardware, gear, and swag on your start date. You’ll need to work through our onboarding guide to get yourself set up and comfortable on our communications platform (MS Teams and Office 365) and added to the relevant groups and channels for the project team you will be joining. You’ll meet your team, client, and the broader engineering team.
You’ll build relationships with the developers on your team, get to know your assigned Development Practice Lead, and you’ll complete our fundamentals training program using our internal learning platform. You’ll receive regular structured feedback from your team. You will regularly catch up and deliver feedback to the developers on your team, set goals and track their progress on the road to their professional improvement.
Your mission will be:
- The principal contributor to the codebase and always has the sprint goal in mind.
- Collaborate on the design and architecture of software being developed by your team and the broader company.
- Principal contributor in all scrum activities.
- Facilitator and principal contributor in technically planning and designing software features coming into a project or sprint.
- Define non-functional security, monitoring, and performance benchmarks for the project.
- On top of industry-standard practices, and is well-read and up to date on new technologies and methods to code, design, or architect complex software.
- Always learning and actively finding ways to share what they’ve learned with their team and the broader company through knowledge sharing sessions or company-wide online workshops.
- Runs regular one-on-one feedback sessions with all the developers on their team, addressing weaknesses and strengths and setting goals for each.
- Their primary focus is on the technical quality and architecture of the solution, ensuring that the other developers are building software within the architecture’s parameters and adjusting or extending the solution’s architecture as requirements change and grow.
- Hold themselves and their team to the highest quality standards set out by Haefele Software, the team, and the industry in general.
- Provide active mentorship to other developers so they can improve and be better.
- Constantly reflect on the team’s technical performance, actively looking for ways to better the team’s technical output.
- Review code from other teams and offer constructive feedback to improve the solutions of other teams.
- Complete internal training from time to time.
- Complete external professional certifications from time to time.
- Consult with the Business Analysts to align technical and business expectations.
- Primary technical contact for their team.
- Expert experience working and leading in a high-pressure team environment.
- Expert experience designing and building complete software solutions from inception to delivery.
- Expert experience refactoring and enhancing existing software solutions.
- Expert experience and passion for implementing monitoring solutions into the software to improve software performance.
- Expert experience architecting and building best-practice security features.
- Expert experience coaching and consulting on technical solutions to complex software problems with the team and clients.
- Expert experience mentoring developers of any level.
Essential Personal Skills
- Excellent coach and leader, able to hold the attention and respect of their peers.
- High EQ, can read the team’s personalities and ensure that they get the best performance from each person by utilizing their skills and strengths most effectively.
- Open-minded collaborator, always seeking the best solution, not holding onto dogmatic approaches.
- Favours teamwork and collaboration over individual delivery.
- Favours outcome over output.
- Self-motivated and expects the same from others on their team.
- Spots learning opportunities and actively shares their knowledge.
- Recognizes when team members are in a comfort zone and look for ways to challenge more junior team members.
- Uses data as evidence to back up technical decisions.
- Uses standard approaches to problem-solving where possible. Implementing novel solutions only where no solution to the problem exists in the community or other projects.
- Thrives when challenged, seemingly unstoppable in their approach to solving a challenging task.
- Reader and researcher, on top of the ever-changing technology landscape.
- Clear and professional communicator. Able to clearly articulate ideas and explanations with team members and stakeholders alike.
- Comfortable with ambiguity, an expert at digging into a vague requirement and getting clarity.
Essential Technical Skills
- Expert, demonstrable knowledge and professional experience using Object-Oriented Software development patterns.
- Expert, demonstrable knowledge and professional experience using Domain-Driven Design principles, Test-Driven Design principles, and SOLID software patterns and practices.
- Solid working knowledge and demonstrable understanding of Agile software delivery and supporting methodologies like Scrum and Kanban.
- Expert, demonstrable knowledge and professional experience in Agile Project Management tools like Azure DevOps or Atlassian Jira.
- Expert, demonstrable knowledge and professional experience using standard source control systems like Git, VSTS, SVN, and supporting tools.
- Expert, demonstrable knowledge and professional experience with typical Integrated Development Environments like Visual Studio and Visual Studio Code.
- Expert, demonstrable knowledge and professional experience building or contributing to cloud-first solutions in Azure, AWS, or Google Cloud.
Essential Technical Competencies
- Expertly competent and experienced with the C# programming language and .NET / .NET Core framework.
- Expertly competent and knowledgeable in unit testing using frameworks like NUnit, xUnit and MSTest.
- Expertly competent and experienced using Dependency Injection and Inversion of Control implementations like AutoFac, Unity or similar.
- Highly competent and experienced working with relational database technologies like MSSQL, PostgreSQL, or MySQL.
- Solid competence in designing and improving data structures in relational databases.
- Working knowledge and experience with non-relational data stores like CosmosDB, Mongo, and Azure Table Storage.
- Expertly competent and proficient using Object Relational Mapping technologies like Entity Framework (Core), NHibernate or similar.
- Highly competent and comfortable with Continuous Integration and deployment pipeline automation using YAML and Azure Resource Management templates.
- Expertly competent and experienced in designing, building, and securing RESTful APIs.
- Highly competent and experienced in building presentations in patterns like ASP.NET MVC and MVVM.
- Strong knowledge and experience using cloud resources on the Azure Platform.
- Strong experience securing cloud solutions using available services to secure PaaS, SaaS, and IaaS infrastructure in a cloud-hosted environment.
- Expert understanding of modern authentication paradigms and their implementations in enterprise software. (Oauth2.0, OpenID Connect).
- Experience with AWS and Google Cloud platforms.
Desired Technical Skills
- Working knowledge or interest in the cloud-native approach to software architecture.
- Knowledge and understanding of Cloud-Native benefits and trade-offs.
Desired Technical Competencies
- Experience with container and container orchestration technologies like Docker and Kubernetes.
- Experience with Mobile Development Technologies like Xamarin, React Native, Ionic, or Flutter.
- Experience with Indexed Search technologies like Elastic and Azure Search.
- Experience with Microsoft Power Platform, including PowerApps and Power Automate.
- A degree, diploma, accredited qualification or equivalent in Software Development, Computer Science, or Engineering.
- Certified in Azure Fundamentals.
- Certified in Azure Data Fundamentals.
- Certified in Azure Developer Associate.
- Certified in Azure Solutions Architect Expert.
Technical Lead Developer C# .NET/.NET Core
Thanks for applying