Senior Software Engineer

Senior Software Engineer – Durban
 
Our client is looking for an experienced, dynamic Software Engineer design, enhance, customize, and maintain our system designs through a variety of analysis and development tasks (see Responsibilities section below).
This individual will architect, analyze, design, build, and verify new high-performance systems for our access control products (and devices/modules included with them).
 
Duties and Responsibilities
    • Analyze and evaluate software requirements; collaborate with colleagues and customers to gather and define product requirements
    • Assist in product design and architecture development
    • Design, develop and maintain software systems to satisfy documented software requirements
    • Facilitate and assist in the task estimation process
    • Work and communicate in a cross-functional team environment comprised of software engineers, quality assurance engineers, product line managers, and customer support representatives, etc.
    • Investigate and analyze reported software defects to resolve them in a timely manner
    • Proactively provide status, raise issues, and communicate necessary information to appropriate team members on a regular basis
    • Prepare, present, and participate in technical discussions and code reviews
    • Contribute to the continued development of processes to improve the efficiency and quality of development projects; assist in formulating standards and development practices to improve the software development process
    • Work with all departments to continuously improve product, process, workflow, and customer experience
    • Make recommendations and assist in the implementation of new processes and tools
    • Consult with firmware engineers and other engineering staff to evaluate interfaces between hardware & software and operational & performance requirements of the overall system
 
Essential Skills and Experience
    • Strong understanding of the software development lifecycle, including design, architecture, and implementation
    • Common design patterns
    • Experience with databases such as SQL Server or SQLite
    • Working knowledge of the following
    • REST
    • Web Sockets
    • Source code management and configuration
    • Containerization
    • Unit testing, integration testing, regression testing
    • C#
    • Eclipse IDE
    • Jenkins
    • Linux
    • MQTT
    • React storybook
    • React (3+ years)
    • HTML/CSS (5+ years)
    • JavaScript (ECMAScript 6 and higher – at least 5 years)
    • NPM
    • OR
    • Java (5+years)
    • Maven
    • In-depth core java knowledge (Concurrency, generics, streams, lambda etc)
 
Work Requirements
Travel and fieldwork including international travel may be required, therefore employee must possess or can acquire valid travel authorization.