SENIOR SOFTWARE ENGINEER
Main Responsibilities:
- Lead the design, development, and implementation of software projects, ensuring adherence to best practices and coding standards.
- Collaborate with the team to analyse, design, and implement software solutions that meet business requirements.
- Write clean, efficient, and well-documented code following coding standards and best practices that will perform consistently in specified operating environments within agreed timelines/budgets.
- Participate in code reviews and provide constructive feedback to ensure a high-quality codebase, maintainability, and scalability.
- Mentor and guide junior developers, assisting them in their professional growth and promoting best practices
- Assist in troubleshooting and debugging software issues, identifying and resolving defects and performance bottlenecks.
- Contribute to the development of software documentation, including technical specifications, user guides, and test plans.
- Stay up to date with emerging technologies and industry trends to continuously improve your skills and knowledge.
- Perform unit testing, support integration and system testing activities.
- Collaborate with cross-functional teams, including firmware engineers, designers, and product managers, to deliver high-quality software products.
- Actively participate in stand-ups, sprint planning, and retrospectives as well as team meetings, discussions, and brainstorming sessions to contribute ideas and solutions.
- Participate in architectural discussions and contribute to the continuous improvement of our software architecture.
- Professionally document all work in relevant technical environment, including advanced algorithms and design calculations, plans & estimates as well as the design performance characteristics and a summarized project cost breakdown.
- Develop procedures for testing modules/components/products and evaluate, modify/enhance and re-test products.
- Work in a professional manner consistent with the company’s commitment to excellence, and R&D’s applicable development methodologies and/or standard operating procedures.
- Standardise all designs as far as possible, using standard components; particular consideration must be given to inventory management. Always use appropriate components to ensure product excellence (exceptional reliability, high levels of functionality, excellent value, ease of manufacture and maintainability, etc.).
- Solve all but the most complex problems in core discipline. Relies on assistance from senior personnel only in the most challenging situations.
- Designs complex modules/components/products that are reliable, cost effective and that will perform consistently in specified operating environments within agreed timelines and budgets.
- Responsible for projects requiring complex judgement using high level engineering principles and techniques.
Qualifications and other Requirements:
- Bachelor's degree in Computer Science, Software Engineering, or a related field.
- Minimum of 5 years’ work experience as a Software Developer/ Engineer
- Proven experience in a Senior role with a track record of successful projects.
- Strong technical skills in C#, Maui/Xamarin, SQLite, MSSQL Server, PostgreSQL with a good understanding of Blazor, JavaScript and Flutter.
- Experience with code review processes and quality assurance practices to ensure software quality and maintainable codebase.
- Solid understanding of software development methodologies, such as Agile or Scrum, and experience with project management tools.
- Familiarity with cloud platforms (such as Azure, or Google Cloud) is a plus.
- Previous leadership or team management experience, demonstrating the ability to lead and motivate a team or individuals towards successful project delivery.
- Leadership qualities, including the ability to inspire and motivate team members, foster a positive work culture, and drive continuous improvement.
- Excellent communication and interpersonal skills, with the ability to collaborate effectively with cross-functional teams and stakeholders.
- Strong problem-solving and decision-making abilities, with a focus on finding practical solutions to complex technical challenges.
- Ability to adapt to a fast-paced, dynamic work environment and manage multiple priorities effectively.