Job Description
We are looking for an experienced C++ software engineer with a passion for building a innovative software solutions in a fast-paced agile environment. The solutions range from desktop applications, through server components to native mobile applications. The ideal candidate will share our great pride in developing robust and user-friendly solutions and will join an engineering team that strongly believes in leveraging the latest technologies to build high quality, next generation software products.
Duties and Responsibilities
- Analyse / Refine requirements with software architects and product leads for end user mobile, desktop and web applications.
- Work with and project managers and product leads to scope and plan engineering efforts and dependencies.
- Collaborate with software architects and the other members of the development team in developing innovative products and solutions.
- Develop reusable components to enable other teams to easily implement rich applications delivering high performance in a scalable manner.
- Create rapid prototypes to validate ideas.
- Help maintain code quality, unit test components and apply automation.
- Troubleshoot customer issues as required.
Qualifications
Bachelor’s degree in Computer Science, Information System, Computer Engineering, or another related field.5+ years of professional experience developing applications and components in C++ on Windows and Mobile platforms.Strong proficiency in C++, with good knowledge of the latest language specifications.Familiarity with Microsoft Visual Studio and Windows COM (Component Object Model).Thorough understanding of memory management, multi-threading, templates, and containers.Understanding of interoperability of C++ components with other languages on respective platforms such as Android and iOS.Strong analytical and problem-solving and skills.Desirable Skills & Experience
High levels of initiative, along with the ability to work with minimal oversight, and capability to multitask.A team player, with willingness to assist other team members through brainstorming, review, mentorship, or knowledge-sharing to improve the performance of the team.Ability to understand and articulate good architectural and design principles.Strong written and verbal communication skills, including the ability to present complex information in a succinct and easy to understand manner.Exposure to other languages in the C family such as C# and Java.Experience working in an agile development environment.Drive for continuous learning and self-improvement.Familiarity with continuous integration and deployment.