As a Software Engineer at Safaricom, you are at the heart of East Africa’s most transformative technology ecosystem. You are not just writing code; you are building the digital infrastructure that powers M-PESA, connects millions to the internet, and enables the next generation of financial and telecommunications services. This role is critical because your work directly influences the daily lives of millions, requiring a unique blend of technical precision, massive-scale thinking, and a deep understanding of the local and regional market. You will operate in a complex, high-stakes environment where reliability and performance are non-negotiable. Whether you are optimizing backend systems for high-frequency transactions, developing front-end interfaces that prioritize accessibility and user experience, or working on network-level integrations, your contributions will have a tangible impact. The work is challenging, intellectually stimulating, and offers the chance to solve unique problems at a scale few other organizations in the region can match. ##### Tip Safaricom values candidates who understand the business impact of their code. When preparing, focus not just on the 'how' of your technical solution, but the 'why'—how does this feature improve the user experience or business efficiency?
Online Assessment
reportedCandidates complete an online assessment on platforms like Codility to evaluate coding skills and algorithmic proficiency.
What to demonstrate
- Candidates complete an online assessment on platforms like Codility to evaluate coding skills and algorithmic proficiency
- Depth in Telecommunications fundamentals
How to prepare
- Answer aloud and timed: Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.
- Answer aloud and timed: How would you implement and manage an infinite scroll feature in a web application, including performance optimization and loading states?
Virtual Panel Interviews
reportedCandidates participate in a series of virtual panel interviews with senior developers, line managers, and HR representatives.
What to demonstrate
- Candidates participate in a series of virtual panel interviews with senior developers, line managers, and HR representatives
- Depth in Telecommunications fundamentals
How to prepare
- Answer aloud and timed: What are the key differences between SQL and NoSQL databases, and how do you decide which to use for a high-transaction system?
- Answer aloud and timed: Explain the OSI model and how you would troubleshoot a connectivity issue at the application layer.
Background Checks
reportedThe company conducts thorough background checks for candidates who successfully pass the interviews.
What to demonstrate
- The company conducts thorough background checks for candidates who successfully pass the interviews
- Depth in Telecommunications fundamentals
How to prepare
- Answer aloud and timed: How do you handle data fetching, pagination, and caching when consuming a GraphQL endpoint?
- Answer aloud and timed: Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).
PracHub editorial advice for the preparation topics above.
Practice with a timer
Since many assessments are timed, practice solving coding problems in a constrained environment to build speed and accuracy.
Know the company
Research Safaricom products like M-PESA and understand the scale at which they operate. Being able to relate your technical experience to the company's business model is a major advantage.
Be ready for 'whiteboard' scenarios
Even in virtual interviews, you may be asked to explain your design on a virtual whiteboard. Practice drawing diagrams and explaining your thought process clearly.
Review your resume
Be prepared to talk in detail about every project you have listed. Interviewers will ask for specifics about your role and the technical challenges you faced.
Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.
Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).
Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Implement a function to perform a specific data transformation or search algorithm.
Implement a function to perform a specific data transformation or search algorithm.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Write a snippet of code to demonstrate your proficiency in your primary language (e.g., Java, React, or Python
Write a snippet of code to demonstrate your proficiency in your primary language (e.g., Java, React, or Python).
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
How would you optimize an existing algorithm that is currently performing poorly under high load?
How would you optimize an existing algorithm that is currently performing poorly under high load?
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Given a specific wireframe, how would you implement the frontend logic using React or a similar framework?
Given a specific wireframe, how would you implement the frontend logic using React or a similar framework?
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
What are the key differences between SQL and NoSQL databases, and how do you decide which to use for a high-tr
What are the key differences between SQL and NoSQL databases, and how do you decide which to use for a high-transaction system?
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- Handle the rows that do not match: that is usually the actual question.
Follow-up
- How does the query change if that join becomes one-to-many?
- What happens to this when the table is ten times larger?
Why do you want to join Safaricom, and how do your values align with our mission?
Why do you want to join Safaricom, and how do your values align with our mission?
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- Handle the rows that do not match: that is usually the actual question.
Follow-up
- How does the query change if that join becomes one-to-many?
- What happens to this when the table is ten times larger?
Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.
Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
How would you implement and manage an infinite scroll feature in a web application, including performance opti
How would you implement and manage an infinite scroll feature in a web application, including performance optimization and loading states?
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
How do you handle data fetching, pagination, and caching when consuming a GraphQL endpoint?
How do you handle data fetching, pagination, and caching when consuming a GraphQL endpoint?
Approach
- Say who the caller is and what they do when the call fails halfway.
- Define the identity of a request so a retry cannot double-apply it.
- Separate accepted, pending, failed and confirmed; they are different facts.
- Design the error taxonomy before the success shape; callers branch on it.
Follow-up
- What happens if the caller retries after a timeout?
- How does a client discover it is on an old version of this contract?
Explain the OSI model and how you would troubleshoot a connectivity issue at the application layer.
Explain the OSI model and how you would troubleshoot a connectivity issue at the application layer.
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
Built from the rounds and topics Safaricom candidates report.
Prepare, practise & reflect
One practical outcome each day. Spend longer where you need it.
0 / 7 done01Map the Safaricom loop
- Write out the reported sequence: Online Assessment, Virtual Panel Interviews, Background Checks.
- For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.
Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.
02Work Telecommunications fundamentals
- Spend the session on Telecommunications fundamentals, which Safaricom candidates report being tested on.
- Write one worked example in Telecommunications fundamentals and time yourself on it.
Deliverable: One timed worked example in Telecommunications fundamentals.
03Work GSM (Global System for Mobile Communications)
- Spend the session on GSM (Global System for Mobile Communications), which Safaricom candidates report being tested on.
- Write one worked example in GSM (Global System for Mobile Communications) and time yourself on it.
Deliverable: One timed worked example in GSM (Global System for Mobile Communications).
04Work Networking fundamentals
- Spend the session on Networking fundamentals, which Safaricom candidates report being tested on.
- Write one worked example in Networking fundamentals and time yourself on it.
Deliverable: One timed worked example in Networking fundamentals.
05Answer out loud: Technical and Domain Knowledge
- Answer aloud, timed: Explain the difference between TCP and UDP and provide a use case for each in a telecommunications context.
- Answer aloud, timed: How would you implement and manage an infinite scroll feature in a web application, including performance optimization and loading states?
Deliverable: Spoken answers to 2 reported Technical and Domain Knowledge question(s), under time.
06Answer out loud: Coding and Algorithms
- Answer aloud, timed: Solve a problem involving Data Structures (e.g., Arrays, Linked Lists, or Trees).
- Answer aloud, timed: Implement a function to perform a specific data transformation or search algorithm.
Deliverable: Spoken answers to 2 reported Coding and Algorithms question(s), under time.
07Answer out loud: Behavioral and Culture Fit
- Answer aloud, timed: Tell me about a time you had to explain a complex technical problem to a non-technical stakeholder.
- Answer aloud, timed: Describe a situation where you had to work under pressure to meet a tight deadline.
Deliverable: Spoken answers to 2 reported Behavioral and Culture Fit question(s), under time.
Expand any day for tasks and deliverables. Your progress is saved on this device.
Behavioural rounds judge the decision you made and what it cost.
Tell me about a time you had to explain a complex technical problem to a non-technical stakeholder.
Tell me about a time you had to explain a complex technical problem to a non-technical stakeholder.
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Describe a situation where you had to work under pressure to meet a tight deadline.
Describe a situation where you had to work under pressure to meet a tight deadline.
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
How do you handle disagreements with team members regarding technical architecture or code implementation?
How do you handle disagreements with team members regarding technical architecture or code implementation?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Tell me about a time you failed in a project. What did you learn, and how did you apply that lesson later?
Tell me about a time you failed in a project. What did you learn, and how did you apply that lesson later?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
- 01
Tell me about a time you had to explain a complex technical problem to a non-technical stakeholder.
- 02
Describe a situation where you had to work under pressure to meet a tight deadline.
- 03
How do you handle disagreements with team members regarding technical architecture or code implementation?
- 04
Tell me about a time you failed in a project. What did you learn, and how did you apply that lesson later?
How long does the interview process typically take?
The process can range from a few weeks to two months, depending on the role and internal scheduling. The thoroughness of the background checks and panel coordination is often the reason for the longer duration.
Safaricom Software Engineer candidate reports ↗What is the pass mark for the Codility tests?
While the exact threshold is not public, aiming for a high score (above 85-90%) is recommended to ensure you move to the next stage. Focus on both accuracy and time efficiency.
Safaricom Software Engineer candidate reports ↗Are the interviews remote or in-person?
The process is increasingly hybrid, with many technical assessments conducted online and initial interviews held via video conferencing. Some final-round interviews may be held in-person at Safaricom offices in Nairobi.
Safaricom Software Engineer candidate reports ↗What is the most common reason candidates do not proceed?
Often, it is either an inability to complete the technical assessment within the time limit or a lack of clarity when explaining the 'why' behind their technical choices during the oral interview.
Safaricom Software Engineer candidate reports ↗What topics does Safaricom test in interviews?
Safaricom interviews most often cover Python, SQL, Communication Skills, Problem Solving, and Problem Solving (Technical). The exact emphasis depends on the specific role you apply for.
Safaricom Software Engineer candidate reports ↗Sources & methodology 3 sources ↗
No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.
- 01Safaricom Software Engineer candidate reports ↗
Company-reported rounds, questions and FAQ.
Candidate reports · Accessed 2026-09-22 - 02PracHub Software Engineer practice ↗
PracHub practice material, not company-reported.
PracHub page · Accessed 2026-09-22 - 03PracHub preparation framework ↗
PracHub preparation guidance.
PracHub page · Accessed 2026-09-22