I can still remember the first touchscreen phone I ever properly used.
I grew up in Soweto, South Africa. Both of my parents worked as security guards, so we did not have much. The phones I knew growing up were the old brick-style Nokia phones — devices for calls, SMSes and maybe a simple game if you were lucky.
Then one day my father came home with a smartphone from work.
Touchscreen phones were still new in South Africa, and to me it looked like something from another world. My father let me download a few games and play around with it. I had never experienced technology like that before.
I became obsessed.
But I was not only interested in playing the games. I wanted to understand them. Who made this? How did they make the pictures move when I touched the screen? How did somebody turn an idea into software that could live inside this little device?
Eventually I started asking the question that changed the direction of my life: Could I learn how to make something like this myself?
So I researched it. And almost immediately, the dream started to feel impossible.
Everything I found seemed to assume that I already had things my family could not afford: a decent computer, reliable internet access, development software and enough connectivity to spend years practising.
My father had mobile data, but it was a limited allowance provided by his employer for work. There was a library where we could get free Wi-Fi, but it was far from home. There was no chance my father was going to let a child walk that distance carrying his brand-new work smartphone just so I could experiment with programming.
So I did what a lot of young people probably do. I kept loving technology, but I stopped believing that building technology was something available to me.
The device was not the problem. The assumptions were.
Years passed and eventually I got my own budget touchscreen phone. My interest in software only grew. I could access more information than I could before, but there was still a difference between being able to use the internet and having the equipment required to seriously learn software development.
That difference is still relevant in South Africa today.
Statistics South Africa has shown how uneven access to devices can be. In its analysis of households with children and young people, cellphone ownership was extremely common while computer ownership was far lower. In 2020, 91.3% of households with people aged 5–24 had a cellphone, while only 24.7% owned a computer. Smartphones were also the dominant route to the internet for those households. [1]
More recent Stats SA data still shows mobile internet as the dominant form of household internet access. In the 2024 General Household Survey, internet access using mobile devices remained far more common than access from home, work or educational institutions. [2]
South Africa’s communications regulator continues to describe broadband expansion and reducing the digital divide as national priorities. [3]
Those statistics put numbers behind something I experienced personally. For many people, particularly young people from lower-income households, a smartphone may arrive years before a laptop does.
But most pathways into software development are designed in the opposite order. We often assume the computer comes first. Then the internet connection. Then the development environment. Then the learner.
For me, the learner came first. The phone came second. Everything else was missing.
The opportunity that changed my life
My life changed considerably before I eventually got another opportunity to pursue technology.
I lost my mother. My father and I later separated, and after finishing high school I had to start supporting myself. I got my first proper job at Ackermans.
Having a stable job mattered enormously. I had income. I could survive on my own. But the old dream had not disappeared. I still wanted to build software.
Then I discovered WeThinkCode_.
What they were offering almost did not sound real to me: an opportunity to study software development without the traditional financial barriers, with access to computers, internet, a place to learn and support that could make full-time study possible. WeThinkCode_ describes its programme as tuition-free software-development training with pathways into work opportunities. [4]
At the time I discovered it, what mattered to me was simpler. They were offering almost everything that younger me had concluded I needed before I could ever become a developer. And they were offering me a chance to access it.
I made one of the biggest decisions of my life. I left my stable sales job. I chose software engineering.
It was not easy. A lot of the people around me seemed far ahead. Some could continue learning and experimenting after class. I still did not have a laptop and dependable internet waiting for me at home.
So I compensated in the way I knew how. I went to campus. Then I went again. I would come in even on weekends because if the equipment and connectivity I needed were at school, then that was where I needed to be.
Eventually, I finished. For the first time since touching my father’s smartphone as a child, I could answer that question I had once searched online: Yes. I could build software too.
Then I started thinking about the phone again
Becoming a developer did not make me forget the problem that almost stopped me from becoming one. It made the problem more obvious.
The smartphone that inspired me to become a developer was powerful enough to introduce me to software, connect me to information and make me curious about how technology worked. But when I wanted to move from consuming software to creating software, the phone suddenly was not treated as a serious device anymore.
That bothered me.
I started thinking about what younger Mkhokheli actually needed. Not an online course telling him what Python was. Not another video explaining programming. Not a website saying, ‘Come back when you have a laptop.’
I needed somewhere I could actually write code, run it, break it, see the error, fix it and try again. And ideally, I needed to be able to do those things without consuming my father’s limited mobile data.
That idea eventually became PocketCoded Py.

Building the tool I wish I had
PocketCoded Py is an offline-first Python development environment for Android.
The simplest way I describe it is this: I wanted to see how much of the basic software-development experience I could put inside the device that many learners already have.
The core workflow happens locally. Users can create projects, write and execute Python code on the phone, manage files, work in an integrated terminal and inspect program output. Online features are optional rather than a requirement for the core edit-run-debug loop. [5]
As I have continued developing it, I have tried to push that idea further. I do not want the phone to feel like a toy coding interface. I want learners to experience concepts that resemble an actual developer workflow: projects, files, packages, terminal commands, databases, Git, local execution and more advanced Python development.
PocketCoded Py is publicly available on Google Play. The listing currently shows more than 500 downloads. [5]
Five hundred downloads is not a revolution. But to me, it proves that the idea has moved beyond the childhood question that started it. The tool exists.
And now the bigger question is whether tools like this can help people whose circumstances resemble mine.
Mobile-first does not mean mobile-only
I do not believe smartphones should replace computers.
Once I became a professional developer, I understood exactly why laptops and desktops remain important. Bigger displays, physical keyboards, more memory, more processing power and mature development tooling matter.
The argument I am making is different: a laptop should not necessarily be the entrance ticket to programming.
There is a huge difference between saying, ‘You will eventually benefit from a computer,’ and saying, ‘You cannot meaningfully begin until you own one.’ The second statement is where talent gets lost.
A learner who can begin writing actual programs today can start developing problem-solving skills today. They can discover whether they enjoy programming. They can build confidence. They can make mistakes. They can create small projects.
And when they eventually reach a computer lab, a university, a bootcamp or their first laptop, they do not necessarily arrive as somebody encountering programming for the first time. They arrive as somebody who has already been practising.
Digital inclusion should include creation
South Africa has made major progress in connectivity, and national programmes continue working to extend broadband access to households, schools, libraries and other public facilities. Government communications on SA Connect describe the programme as part of the effort to expand broadband and reduce the digital divide. [6]
That progress matters. But I think we also need to ask what people are able to do after they get connected.
Digital inclusion cannot only mean being able to use WhatsApp, search Google, watch YouTube, use digital banking or apply for a job. Those things are valuable.
But somewhere in Soweto right now there may be another child holding a smartphone and wondering: Who built this? Could I build something too?
Our technology ecosystem should have an answer for that child that does not begin with the price of a computer.
That means educators, funders and technology companies should think beyond online learning platforms alone. When we design digital-skills programmes, we should ask: Can the learner practise when the data runs out? Can the learner continue when the Wi-Fi goes down? Can they create something instead of only watching somebody explain how it is created? Can the device already in their pocket become part of the development environment?
These questions do not remove the need for laptops, broadband or computer laboratories. They reduce the amount of time a young person has to wait before those resources become available.
What I wish my younger self had found
Sometimes I think back to myself sitting with my father’s phone.
I remember the excitement of discovering that software existed and the disappointment of learning what I thought was required to build it.
If PocketCoded Py had existed then, I do not know exactly where my journey would have gone. I still would have needed teachers. I still would have needed opportunities like WeThinkCode_. I still would have needed computers eventually.
But maybe I would not have spent years believing software development belonged to somebody else.
Maybe I could have written my first lines of Python on the same phone that made me curious about software in the first place.
That is why I built PocketCoded Py.
Not because a phone is better than a laptop.
But because for some young people, the phone is what they have now.
And sometimes the difference between a dream surviving and disappearing is simply being able to start.
- Mkhokheli Ndebele | Creator of PocketCoded Py.
Sources for fact-checking
These are the primary or official sources supporting the statistical and product claims in this draft. They should be re-checked before submission.
[2] Statistics South Africa — General Household Survey 2024 / household internet access reporting
[3] ICASA — Draft IMT Roadmap and implementation plans, 2026
[4] WeThinkCode_ — programme/enrolment information
