How I Went From Programming on a Nokia Feature Phone to Landing a Job at an MIT Startup

Hi, my name is Michael and this is the story of my unlikely journey into the world of technology and software development. Growing up in a small rural town in Kenya, I didn‘t have much access to computers or the internet. But from a young age, I had an intense fascination with mobile phones and was determined to learn how they worked.

It started when I was 12 and got my first cell phone – a basic Nokia 3310 that my parents gave me to stay in touch with them. Rather than just using it for calling and texting, I was intrigued by the phone‘s other capabilities, especially the games. I wanted to learn how to make my own games and apps for the phone.

Learning to Code on a J2ME Feature Phone

Without a computer or internet access at home, I had to get creative. I discovered that some Nokia phones supported apps through a platform called J2ME (Java 2 Micro Edition). The apps were written in Java, so I found some online tutorials and slowly taught myself the basics of Java programming – all on my little phone.

I would painstakingly type out lines of code like this on the phone‘s numeric keypad:

public class HelloWorld extends MIDlet {
  public void startApp() {
    Display.getDisplay(this).setCurrent(new Form("Hello World"));
  }
}

Typing even simple code like this required pressing a key multiple times to cycle through letters. I used a free J2ME development environment called JBed that I installed directly on the phone. The 1 to 2-inch screen was my only preview of the app interfaces I was building.

It was crude and tedious, but I stuck with it, spending countless hours studying and practicing. The phone‘s limited memory and processing power presented many challenges. I had to keep apps below 100-200 KB in size and use memory sparingly. Often the phone would crash or run out of battery in the middle of a coding session and I‘d lose my unsaved work. But I was determined to make something.

At the time in Kenya, only about 25% of people had mobile phone subscriptions and less than 10% used the internet (source: World Bank). So my setup was not that unusual. Most people didn‘t have personal computers. Cyber cafes charged around 50 cents per hour to use a computer, which was prohibitively expensive for me.

My First Apps and Encountering the "Chicken and Egg Problem"

After months of trial and error, I completed my first J2ME app – a simple 2D side scrolling game. Players navigated a character through a landscape, jumping over obstacles. The graphics were very basic, but I was proud of figuring out the game physics and control system.

I excitedly uploaded it to some online forums and J2ME app repositories. However, with no way to monetize or advertise the game, it got little traction beyond the small community of hobbyist J2ME developers. Most people still didn‘t have internet-enabled phones or knowledge of how to find and install these games.

I faced a common "chicken and egg problem" for new developers – without an established reputation or user base, it was hard to get people to discover and download my game. But without people using it, I couldn‘t get the feedback and motivation to keep improving and promoting it.

Still, I kept at it, developing several more small games and utilities like a tip calculator and expense tracker. I released them for free, but they had at most a few hundred downloads each. I needed to find a real problem to solve that people would actually use.

My Big Break: Developing a Test Prep App for Kenyan Students

My breakthrough came when I decided to address a challenge I and many other students faced in my community. In Kenya, high school students take a high-stakes set of standardized exams called the KCSE in 12th grade. The scores determine college placements and scholarships.

Preparing for these exams is hugely important, but most test prep resources are expensive and inaccessible. Private tutoring can cost $100+ per month and books are $30-$50 each, in a country with a GDP per capita of under $2,000. Over 75% of students attend poorly resourced public schools and can‘t afford extra help (source: Kenya National Bureau of Statistics).

So I came up with the idea to put free practice tests and answer explanations on the one device most students had access to – a mobile phone. I reached out to some older friends who had gone through the KCSE and collected past exams. I spent hundreds of hours formatting questions and explanations into a simple mobile app.

The app, which I called KCSE Prep, presented a series of practice questions with multiple choice answers. After each question, it showed the correct answer and a detailed explanation with key concepts. I designed it to run smoothly even on low-end devices.

I released KCSE Prep for free on J2ME app stores and promoted it on student forums. The response was incredible. Thousands of students started downloading and using it to study. Within 6 months, it had 50,000+ downloads. I started getting hundreds of emails from students thanking me and suggesting new features.

I realized there was real potential to expand this. I added a premium version with 500+ questions for a $5 one-time fee, payable via mobile money which was growing rapidly in Kenya. To my surprise, thousands of students purchased it. The revenue allowed me to buy my first smartphone to keep improving the app.

Going Mobile: Android Development and Freelancing

Now that I had a smartphone and some savings, I could explore app development on newer platforms. Android was growing fast globally and in Kenya. I taught myself Java for Android through free online resources and began porting KCSE Prep over.

With the power of a real IDE (Android Studio) and device emulators, I could build more sophisticated features much faster than on the J2ME phone. I expanded the app to cover all 5 core KCSE subjects and added better progress tracking. In the first year, the Android version got over 100k downloads and generated $20k in revenue, a significant amount in Kenya.

Buoyed by this success, I started freelancing for local businesses and startups building Android apps. I earned $20-$30 per hour, a solid wage. I was able to buy a laptop and rent a small office space to work from. It felt amazing to be getting paid to code and have financial independence, after years of struggling to access technology.

But I also felt some imposter syndrome, being self-taught without a formal degree. On online forums and Stack Overflow, I saw developers talking about computer science concepts and algorithms I didn‘t know. I worried my lack of theory would limit me as the problems I tackled grew in complexity.

Discovering MIT OpenCourseware and Filling in Gaps

That‘s when I discovered MIT OpenCourseWare, a free online publication of virtually all MIT course content. For the first time, I could access lecture videos, assignments and exams from one of the top computer science programs in the world.

I began working through the materials for courses like:

I would watch lectures during my commute and work through coding assignments at night after my freelance projects. It was grueling, but I started seeing connections between the theory and my practical experience. Things like Big O notation, greedy algorithms, and recursion which had seemed esoteric began to make sense in the programs I was building.

Through OCW, I also learned software engineering best practices like version control with Git, unit testing, and object-oriented design patterns. I applied these to my freelance work, writing cleaner modular code that was easier to maintain and extend. I also started using data structures like hash maps and trees to optimize performance.

My clients and colleagues started noticing a difference in the breadth and depth of my skills. I was able to have higher level architectural conversations and anticipate issues before they arose. And I was delivering more robust, efficient apps in less time. Equipped with strong fundamentals, I felt ready to take my career to the next level.

Taking the Leap: Applying to the MIT Global Startup Labs Program

In mid-2019, a friend shared a link to the MIT Global Startup Labs program. It‘s a 3-month incubator where MIT student instructors teach mobile and web development to entrepreneurs in emerging markets. The instructors and top participants then form teams to build and launch real startups together.

The program was incredibly competitive, with thousands of applicants from across Africa for just 25 spots. I almost didn‘t apply, doubting whether I could compete with computer science graduates from top universities. But I realized my unique journey and practical experience building apps in the Kenyan market could be an asset.

I poured my heart into the application, sharing how I had taught myself to code on a basic phone, built an app used by over 100,000 students, and started a successful freelance business – all without a formal degree. I described my passion for using technology to solve problems in my community. I linked to GitHub projects that demonstrated grit and creative problem solving in resource-constrained environments.

To my shock, I made it through three rounds of interviews and coding challenges to be accepted. In June 2019, I flew to Nairobi for the start of the most intense and transformative three months of my life.

The MIT Global Startup Labs Experience

From day one, GSL was a whirlwind of learning, building and pitching. We had lectures and workshops from 8am-8pm covering full-stack web development with MERN (MongoDB, Express, React, Node.js), UI/UX design, entrepreneurship, and team dynamics. I was surrounded by brilliant engineers, designers and business students from Kenya and MIT.

In the second month, we formed cross-functional teams to prototype startup ideas. My team worked on a mobile micro-investing app for Kenya called Shika. I served as the technical lead and lead developer, architecting the infrastructure and building key features.

It was a huge leap from my freelance projects in scale and complexity. But equipped with strong computer science and software engineering foundations from MIT OCW, I was able to lead our development efforts successfully:

  • I designed a secure, scalable backend with Node.js, Express and MongoDB
  • I built an Android client in Java and React Native, integrated with mobile money APIs
  • I used data structures like linked lists and sets to efficiently process and validate transactions
  • I optimized performance through techniques like lazy loading, caching and multithreading

After hundreds of hours of coding, design iterations and user testing, we had an MVP live in the Google Play Store with over 1,000 users. We pitched Shika to a panel of venture capitalists on the final demo day.

Through GSL, I also formed deep friendships with the MIT instructors and fellow Kenyan entrepreneurs. We came from diverse backgrounds spanning village, slum and city. But we were united by a common drive to leverage our technical skills for social impact in Africa. The experience expanded my vision for my own potential as a developer and entrepreneur.

Joining an MIT-affiliated Startup

After GSL, I received a job offer from one of the host organizations – a fintech startup called Beyonic founded by MIT Sloan alums. Beyonic enables businesses to seamlessly manage and integrate mobile money payments across Africa.

As employee #10 and the 2nd Android developer, I‘ve been able to contribute to Beyonic‘s product and growth in ways I never imagined. Some highlights over the past year:

  • Launching new SDKs and payment features that are now processing millions of dollars across a dozen African countries
  • Optimizing performance for low-end devices to reduce user churn and support thousands of concurrent users
  • Migrating the app from Java to Kotlin and building a CI/CD pipeline to speed up our release cycle
  • Collaborating with distributed teammates spanning Kampala, Nairobi, Lagos and London

Every day, I‘m challenged to keep learning and leveling up my skills alongside world-class engineers and entrepreneurs. I‘ve been able to take courses in ML, UX research and product management through Beyonic‘s education stipend. I even gave a tech talk at MIT Sloan during the CEO‘s visit last fall.

Looking back, I never fathomed programming could take me from a Nokia 3310 to MIT and a buzzing African startup. But I‘m a testament that the democratization of coding education and proliferation of mobile devices is unlocking human potential in unprecedented ways.

Reflections and Advice for Aspiring Coders

Some key lessons from my journey:

  1. Start with what you have. Don‘t let a lack of resources stop you from taking the first step. If a basic phone is what you can access, start there. Focus on learning concepts and paradigms that can transfer to other platforms.

  2. Build real projects that solve problems. Applying my skills to help students prepare for exams made coding feel meaningful and opened doors. Contributing to open source and freelancing are other ways to gain practical experience and credibility without traditional credentials.

  3. Don‘t underestimate the power of online learning. Between MIT OCW, Coursera, freeCodeCamp and Stack Overflow, you can get a world-class CS education from your bedroom. Consistency is key. Set a schedule and think of it like a job.

  4. Embrace your unique story. Being self-taught or from an unconventional background can feel like a liability. But it‘s often an asset, especially in building products for underserved communities. Leverage it to stand out and share fresh perspectives.

  5. Find mentors and peer support. Isolation is the enemy. Cold email people whose work you admire. Join Twitter chats and Discord servers related to your stack. Attend local meetups and hackathons. Having a community of fellow coders to learn with makes the journey fun.

To aspiring developers in Kenya and beyond – know that a world of possibilities awaits you. Your coding skills can be a passport to engaging work, meaningful impact, and a better life for you and your family. It won‘t be easy and it will take time. But every small step matters. Just keep showing up and crushing it, no matter your starting point.

I‘m excited to continue using my skills to build a more prosperous, innovative Africa. Follow my journey on Twitter @MKiarie. Happy coding! ☮️

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *