Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Presentations Building Inclusive Software: Considerations and Constraints

Building Inclusive Software: Considerations and Constraints



Sitati Kituyi discusses implementation decisions that exclude millions of users, especially those in the developing world where many classic assumptions about internet users do not hold.


Sitati Kituyi is an engineering team lead based in Nairobi, Kenya. In his current role as CTO at Pula, he leads a distributed engineering team in building agricultural insurance tech infrastructure, through which over 1.3 million smallholder farmers across Africa are insured. He was CTO at FrontlineSMS and also co-founded a stock media startup, AfricanStockPhoto.

About the conference

QCon Plus is a virtual conference for senior software engineers and architects that covers the trends, best practices, and solutions leveraged by the world's most innovative software organizations.


Kituyi: My name is Sitati. I'm a software developer, and engineering lead based in Nairobi, Kenya. I've been working on software both for the local and African context, as well as global SaaS software for the last 10 years of my career. I like to think of myself as a typical internet user. Sometimes it feels like the internet disagrees. In my talk, I'll be focusing on some of the core assumptions that are built into the user personas that we use when designing internet products, and how these can sometimes exclude many of the internet users, especially in the emerging markets like Kenya.

Inclusive Software

When we talk about software inclusivity, very often what we focus on is usability by people with different disabilities, or different first languages, and so on. All of these are very important considerations, of course. I'll be focusing a bit more on some of the other slightly more mundane assumptions that are built into our user personas. How small little misplaced assumptions can lead to very big impact in terms of exclusion of users on the internet.

First, to set the context, already three-quarters of the internet today is made up by users in Africa, Asia, and Latin America. Africa represents that third little bar on the bar chart there. It's only going to move left and up, because Africa while it has the third highest internet population of any continent, it also has the lowest internet penetration, and one of the highest growth rates and highest economic growth rates. Fast forward a few years, Africa is going to be the second if not catching up with Asia in terms of the number of internet users.

The mindset that I'd like us to adopt, really, and what I'm encouraging us to think of is that your user in Starbucks with an iced coffee, and a MacBook Pro is not your typical internet user. That's an early adopter. Those are the users of the early internet, which I believe we're still contributing to, in the grand scheme of things. These are the users that the early internet could be based around, because these were the early adopters of the internet. As the internet as a technology and a distribution platform matures, this is probably more representative of what a mainstream internet user is.

Mobile First: A Decent Start

Mobile-first, that's a decent starting point. In 2016, the mobile devices overtook all other device categories as the main most likely category that an internet user would be accessing the internet through. Many companies changed their strategies in response to this, or actually, even in anticipation of this.

Facebook notably had a very strong mobile-first strategy. As a result, if you look at their products today, WhatsApp, Instagram, Facebook, all of these are built around the assumption that mobile devices are the primary category of devices that users access these services through. However, simply delivering your service through mobile doesn't necessarily make it the most inclusive service for users in these diverse developing markets. It's some of the more subtle assumptions that we are going to now.

Mobile Is Not Equivalent To Always Connected

The first one is that mobile does not mean always connected. Very often, companies tend to design software around the assumption that the main experience happens in front of a bigger screen, and mobile is the glue that keeps the user connected in between these main interactions. Let's use a mobile banking app, for example. Mobile Banking will typically allow you to have a mini statement, have a look at some of your recent transactions, sometimes maybe also transact on the go. However, some of the primary activities you need your online banking to do, for example, setting up the account in the first place, very often those experiences are optimized for desktop or bigger devices.

The key thing that I'm trying to get across is that your typical internet user today, is not using mobile as some glue between longer sessions at a primary device, the mobile is the primary device. Also, the second incorrect assumption is that mobile increases the connectivity, that the user is somehow more reachable or more online because they have this internet connected device in their pocket. Actually, very many mobile internet users are only temporarily online. In Kenya, for example, if you compare Kenya to one of the bigger economies in the West, the cost per MB as a fraction of everyone's monthly income is, of course, significantly much higher. You will have a lot of usage patterns that might not be that common in the West, like people switching off their mobile data and only switching it on at certain periods during the day when they want to check in on their Instagram or their Facebook. Or, not using mobile data at all, and only using their device with Wi-Fi, when at the office, a school, or some unexpected places.

Where the User Actually Logs On

These are two of the interesting solutions that have popped up in Africa that I'd like to talk about. On the left, what we're looking at is an irokotv booth. Irokotv is a Netflix for Africa. It's one of the leading platforms through which you can get access to all the wonderful content that comes out of Nollywood. What irokotv did is they set up a whole series of these booths in different regions of cities, like near workplaces, near people's homes and estates, and they let any of their users who are paying their monthly subscription, queue different media to download and simply turn up at these boots, hand over their phone, and have all that content downloaded onto the phone while they're there. It's free internet for a specific use case.

Similarly, on the right, we have Moja Wi-Fi. What we're looking at is a matatu in Nairobi. Matatus are the mini-buses, which are the primary mode of transport in almost every African city. Moja Wi-Fi is a Kenyan startup who distributes internet as hotspots on buses, at bus stops, at cafes, and so on. One of the interesting aspects they do is they partner with content providers to behave as a cache for that content. That distribution of music, news clips, whatever it may be, is more efficiently done through this distributed network. Really, what these two have done is they've built their own CDNs, real-world physical content delivery networks that the user can see and interact with. We can't all afford to do that, of course. Some simpler options are available to the rest of us.

Solution: Offline First

The one I would suggest is, build on the assumption of offline first. This isn't a new concept. It's been built into many apps and services over the years. In fact, it has become pretty much the norm when you look at many streaming services, for example, Spotify, Apple Music, they all allow you to log on and listen to downloaded music, offline. The user experience doesn't require you to be online at all times. However, I'd like to encourage that this is not only thought of as a solution for media streaming, this can be applied to a lot of other contexts. For example, going back to our mobile banking app, what if a user could see their cached transactions on their phone, even when they're not connected? Or, what if the user could even queue subsequent transactions to be executed when they get online, maybe with just a final step of verifying their transaction when they're internet connected? All of these would allow the user who is behaving in the way that we described, only temporarily online a few minutes or hours in a day, to experience apps in a more meaningful way throughout the day, rather than just in these little glimpses when they're online.

Offline-First Tooling

Tooling exists for this. If you're looking into tooling that supports having a rich user experience on the mobile side as well as a classic backup server infrastructure behind the scenes, syncing state between the two is one of the biggest challenges. Couchbase Lite and PouchDB are some of the best tools for solving this. They solve that problem of synchronizing the state, even given scenarios where the back-end state on the server side has changed since the last sync happened on mobile. If you're building rich, interactive applications on the phone, for example, an Uber-like app, Mapbox Mobile is a really good tool which allows you to build interactive map based applications without the requirement for constant internet access, because that tile system has downloading and caching built into it. Finally, there are a lot of really cool use cases for ML on the Edge on mobile devices. One good example is a Kenyan startup who have used mobile phones to replace the traditional stethoscope. What they do is, a doctor can use the microphone and a phone against a patient's chest to listen in on the breathing patterns and the heartbeat, and so on, and actually detect early signs of respiratory diseases using machine learning models. They do this purely offline using TensorFlow Lite.

One Device Is Not Equivalent To One User

The second assumption to debunk is that one device means one user. We are at a point now where many internet services allow you to log in using a mobile phone number instead of an email address. However, they still make the assumption that that one phone number uniquely identifies a single user. This is one of those misplaced assumptions that, unfortunately, without deliberately being designed to do this, it is very targeted in who it excludes. In much of rural Africa, and in the lower income areas of urban Africa, there are families who only have access to the internet through one single shared device that's typically controlled by the man of the house. Women and younger adults who are accessing the internet through the shared device don't have the ability to use services which require them to authenticate using a single mobile phone number because it will be the father's account that they will be logging into. It's inadvertently, but very specifically targeting women in the developing world if you bake this assumption into your mobile application.

Solution: Sub Accounts

Thankfully, this is one that has a simple solution. We've all seen it every time we launch Netflix, who's watching? We make the safe assumption when dealing with bigger screens, and streaming devices, and play consoles, and so on, that the console or the experience is not necessarily tied to a single user. It may be a shared device between one group of users who probably know one another, but may all want their own personalized experience in the app. Consider use cases like if this was a shopkeeping app, where you might have multiple different shopkeepers sharing a single phone to log in and record their sales. Why not allow them to have sub accounts on the same map? Similarly, it might be a family in the scenario that I gave, all logging into some entertainment or social media app. It might be a classroom of students all using internet content through one shared device. In all these cases, the user experience is more easily tailored if we allow for sub accounts under the single master account.


I'd like to dive into ecommerce because this is one where there's actually a whole category of misplaced assumptions or misplaced user personas that exclude a lot of users on the internet. Ecommerce has of course matured over the years in the Western world. You have big dominant companies who've been running that scene for decades now. If you go to the Far East, similar patterns have emerged. You have giants of the ecommerce space out there like Alibaba. In Africa, it hasn't quite matured to that extent. We had some startups like Jumia, who are basically like the Amazon for Africa who've given it a really good shot. By and large, it has not quite caught on as a proportion of the number of internet connected people.

I'd like to look at how the ecommerce landscape looks in Kenya. We have a population of 51 million people, and only 250,000 credit cards in that population. Ten million debit cards, but these 10 million issued debit cards are in many cases, ATM-only cards. These are cards which allow you to withdraw cash from a cash machine, but you can't use them for online transactions. The big win in Kenya for ecommerce is we have M-PESA. This is one of the biggest, most successful mobile money networks in the world. Virtually, every adult in Kenya is connected to a mobile money account. This has allowed for a different ecommerce model to emerge.

Ecommerce Is Booming In Africa

I like to call it the Nairobian Amazon Prime. Jiji is a free classified site, which allows people to post Ad listings showing what they have on sale or different services they may have on sale. You get the contact details of the person, very much like what existed before people really integrated the purchasing experience into the same advertising websites. WhatsApp is the predominant way of communicating. As everyone knows, this has become a global phenomenon over the last few years. M-PESA mobile money allows you to settle the payment once you've agreed with the seller how much you need to pay for the product you're interested in. Then Sendy is a door-to-door logistics company, all of which is ordered online and paid through M-PESA.

Using this setup, I do most of my shopping online and same-day delivery is the norm. You don't pay any extra for this. You'll get your product to your doorstep within a couple of hours typically. There's no credit card involved. It's also a much more socially heavy experience. People still talk to the person selling the product. The scalability of this, of course, if we think like engineers, if you have to talk to someone for every transaction, this is not a very scalable setup. However, ecommerce is really booming in Africa based on this model. WhatsApp are responding by looking into integrating both the product advertisement and placement as well as the payment integration, to try to create a bit more automation around this. The point being that ecommerce is not something that is far off from maturing in Africa. Instead, it's just maturing under different models from what the rest of the world is used to.

Ecommerce in Africa: Not Just Consumption

One aspect that I'm personally quite passionate about is the assumption of Africa's role in global ecommerce. I started a startup a few years ago, which tries to help African photographers to sell their content online. One of the big struggles we had was that it is literally impossible to send money to someone through PayPal in Nigeria. PayPal is still one of the dominant ways you can reach people across the world for distribution of money outbound. In Nigeria, it's not allowed to receive money into a PayPal account. Similarly, Google Play for almost a decade has had local payment options in Kenya, allowing you to buy apps with M-PESA, and local currency cards. They only allowed Kenyan developers to start selling apps about 18 months ago. What this means is, it's a self-perpetuating assumption, if we design our ecommerce platforms to only treat people in emerging markets as consumers of content and products and services on the internet. If you think of all the success stories we had over the years on new and growing platforms, say the Flappy Birds of this world, why don't we hear that many stories coming out of Africa? It's not because we don't have talented software developers on the continent. It's because, very often, some of these user assumptions have blocked people from being front of the queue in the early stages in terms of being able to publish to these platforms.

Solution: Diverse 2-way Payment Options

What are the solutions around ecommerce? I would say supporting diverse 2-way payment options is one of the key ones. This may sound like a daunting task given that there are so many different local mobile payment wallets and so on. However, there are some really good gateways that reach millions of paying users through single integrations. Africa's Talking is a big one on the continent here, based here in Nairobi, Kenya. Not only do they offer payment options, they also have local telephony integration, so you can set up. It's both a Twilio, as well as a Stripe for Africa. Flutterwave and Paystack are similarly successful companies from Nigeria. Paystack made the news a couple of weeks ago, it was just acquired by Stripe. There's also similar options in Asia like Alipay and AsiaPay. It might just be a case of adding a second and third integration, maybe even third and fourth. Many websites have Stripe and PayPal already. Why not add two more which allow you to start to collect mobile money payments and include more of our mainstream internet users?

Lightning Round

I'll move on into the lightning round, a few quick-fire ones and some actions that can be taken to correct for them. Number one is the assumption of street addresses, like a standardized street address system and ZIP codes, and so on. In Kenya, we don't really have anything like that. Streets have names, but we don't really have formalized numbering systems on most streets. Only if you live in a closed apartment complex, would you have a house number. In general, people don't really have fixed ZIP codes or street numbers to address by. Yet many websites require me on signup, or at least during checkout of an online transaction, to specify a street address that must meet these requirements. Also, when it comes to physical delivery of goods, collection is often preferable in some parts of the world. It's really difficult to just leave a parcel on a porch in Kenya and find it there later. There are delivery services who allow the customer to pick up from centralized delivery points.

The second one is in the mainstream, mobile means Android. That doesn't necessarily mean you can't build your shiny iOS apps, it just means if you're building with this user persona in mind, you probably want to pay more attention to these hybrid app development platforms that can target both Android and iOS. They've matured pretty well over the last few years. It used to be pretty poor, performance-wise, compared to native code. At Pula, we have great success using Flutter. React Native and Ionic are also really popular. The technology is maturing in a way that means it is quite easy and the benefit way outweighs the complexity to target both platforms.

Thirdly, there is fast internet in many African cities, like I'm on home broadband connection right now. Fast internet here means high bandwidth, but typically still high latency. I'm about as far as I can get on the globe from Amazon's U.S. West data centers. Some of the classic internet optimization strategies apply here, like bundling web resources to minimize round trips. To save me waiting 30 seconds for a webpage to load, it is much more convenient if I get a single larger JavaScript file or a single larger CSS file, instead of multiple little fragmented ones. There's also good and maturing CDN support. Cloudflare, for example, has 16 Edge locations in Africa, just make sure you're opting into using these.

Finally, smartphone owners and their behaviors around apps. We've heard talks in the past few years around the fact that app installations are slowing down globally. People are tending not to install as many apps on their phones as they used to. It's interesting, the extreme edge of that behavior is in Africa. You get a lot of people who buy Android smartphones that come with Instagram, WhatsApp, Facebook pre-installed, and they never even use the Google Play app and never go to the store and ever install additional apps. In fact, many of these users don't have a Google account or any email address, and actually never will. Their experience of the internet is purely based on the apps that came pre-installed on their phone. To reach this user, you have to have a pretty well designed mobile web experience, or rely on some of these more old school technologies like USSD and SMS. I say old school, but I've spent a huge part of my career building automations and tooling around USSD and SMS. It is still one of the most reliable ways to reach users, not only in Africa, but actually globally. SMS is still one of the most reliable and widespread supported communication protocols.


See more presentations with transcripts


Recorded at:

Mar 11, 2021