Software Developer

Job description
The Software Developer will be part of a team of software developers responsible for creating applications for data collection, entry and management as well as other applications for the various research units alongside providing innovative solutions to various research problems. This team creates desktop apps, web-enabled platforms as well as cloud based solutions using the latest technologies and frameworks, combined with traditional Microsoft technology. The team will follow agile principles and use DevOps tools to move ideas to production quickly. Candidate must be an innovative self-starter as well as a team player.
Key Responsibilities

Prepare and document program requirements, specifications and data dictionaries for various databases
Consistently create and maintain software programs and applications according to specifications
Assist in the development and maintenance of user manuals and guidelines
Train Field Interviewer(s) or Data Entry staff in the use of data collection applications
Design and implement data quality algorithms to check data quality and to monitor data in the early stages of data collection
Liaise with Data Analysts and other Software Developers to resolve problems with software products or data issues
Write views to retrieve data for analysis and conversion of the data to format required by researchers
Design software programs to generate double entry reports and other quality checks, where necessary
Be accountable for proper app and data backups, disaster recovery procedures such as use of version control systems, and automated backups

Technical Skills

Core C#,vb.net, ASP.Net MVC, LINQ, NHibernate or Entity Framework, Spring.Net, Continuous Integration, JQuery, CSS, AJAX
Knowledge and experience in the use of DBMS e.g. MSSQL Server, MySQL, Postgres and writing complex queries and views to retrieve or transform data
Knowledge and experience in developing web apps using modern web frameworks e.g. Laravel, Django, Zend
Knowledge and experience in developing both Hybrid and Native mobile apps is an added advantage
Clear understanding of Object Oriented Programming, Data Structures and Software Design Patterns
DevOps/Automation Tools
Preferred/desirable: experience with design and development of any of the following: mobile-based (USSD/SMS) apps, geospatial apps, web apps, and/or other innovative tools.

Qualifications And Experience

Bachelor’s degree in Software Engineering, Computer Science or equivalent in relevant area;
Five (5) years post-qualification experience;
Excellent writing and presentation skills; and
Experience managing longitudinal data management systems is desirable.