Software Engineer (Back End)
Software Engineer (Back End)
Kopo Kopo is transforming the way merchants and their customers interact in emerging markets. Kopo Kopo is leveraging the wildly successful mobile money systems in emerging markets like East Africa to build a merchant services platform that includes payments acceptance, cash advances (loans) and many other business tools that power today’s businesses.
About the Role
We are looking for a software engineer who can come in and work on various projects that Kopo Kopo is currently undertaking to build software to power business tools that businesses need. This is a hands-on software development role. It will encompass all aspects of the software development life-cycle working with a small engineering team and demands a high understanding of application design and architecture.
Roles and Responsibilities
- Work with the Engineering team in developing the whole suite of Kopo Kopo products (Web, Mobile, USSD) to produce ‘clean’ code based on specifications
- Be a major contributor to the Agile Software Methodology which we use at Kopo Kopo
- Work with 3rd party partners on integrations that will require involvement in all aspects of the software development cycle from requirement analysis to implementation
- Develop software using technologies such as Ruby on Rails, PostgreSQL, Flutter, Apache, Nginx, Ubuntu Linux, Microservices architecture on AWS, React, Bootstrap and use tools such as JIRA, GitHub, Jenkins, Redis, Docker, New Relic among others
- Document proposed solutions by developing documentation, flowcharts, layouts, diagrams etc.
Desired Skills and Experience
- You should be comfortable with system architecture and component design and be able to use design patterns
- Develop features across multiple subsystems within our application by collaboration during requirements definition, designing, coding, testing and deployment
- Participate with engineering, operations and business teams to define plans for scaling, enhancing and standardising our products
- Have the ability to leverage asynchronous programming, queueing, caching, logging security and persistence when appropriate
- Have experience in building data-driven applications using significant relational database engines as part of the application architecture
- Experience in working with systems with complex security models/implementations
- Understand how our applications (Rails, Mobile, USSD) operate, are structured, interact with external systems and how our customers use them
- Be able to operate in an agile, fluid and uncertain environment wearing ‘multiple technological hats’
- Demonstrate success at having been able to ‘ship’ products individually or as part of a team. You need to be able to get things done.
- Experience with at least one database engine and ORM frameworks
- Great communication skills