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.
Senior C# .NET/.NET Core Developer
A Senior 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 the ninjas that get sent to new clients to build proof of concepts, 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. They are just as comfortable jumping into an existing team and working in an established codebase without missing a beat.
Our clients lean on our senior developers’ expertise and guidance when making technical feature decisions on their projects. Our Senior Developers need to have the confidence in their skill set and experience to consult and advise our clients to make the best technical decision for their projects.
At Haefele Software, our Senior Developers mentor, coach, and share knowledge as a matter of course in their workday. Looked at by more junior team members as masters of their craft, with a seemingly bottomless well of wisdom and guidance.
They are humble; they appreciate that one person cannot know all there is to know, and no team is strong if it relies on a single person’s skillset. They seek collaboration and fiercely debate the best approach to architecting a solution, calling on the expertise of everyone on the team and often reaching out to the broader company to achieve the best results for their client and project.
They are very hard to please when it comes to quality. They are highly accountable for project quality and output, second only to the Technical Lead Developer. They are responsible for ensuring all junior team members contribute to the highest possible security and performance standards as laid out by Haefele Software and the team.
Our Senior Developers set the benchmark for software quality and accountability.
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 get to know your Technical Lead and 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, and your Tech Lead will help you set goals and track their progress on the road to professional improvement.
Your mission will be:
- Senior 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.
- Key contributor in all scrum activities.
- Facilitator and one of the primary contributors 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 companywide online workshops.
- Their primary focus is keeping the solution easy to extend, test, and understand for all the developers on the team, using the best current approaches to good software architecture.
- Hold themselves and their team to the highest quality standards set out by Haefele Software, the team, and the industry in general.
- Provides 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.
- Expert experience working in a high-pressure team environment.
- Expert experience designing and building complete software solutions from inception to delivery.
- Solid experience refactoring and enhancing existing software solutions.
- Experience and passion for implementing monitoring solutions into the software to improve software performance.
- Solid experience architecting and building best-practice security features.
- Solid experience coaching and consulting on technical solutions to complex software problems with the team and clients
- Solid experience mentoring junior and intermediate engineers.
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 on the team 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 their 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.
- Solid understanding of modern authentication paradigms and their implementations in enterprise software. (Oauth2.0, OpenID Connect)
- Comfortable being alone and responsible for the technical bootstrap on a new client and project
- Experience with AWS and Google Cloud platforms.
- Experience leading a team of engineers.
Desired Technical Skills
- Working knowledge of 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.
Senior C# .NET/.NET Core Developer
Thanks for applying