Early Dreams
I always dreamed of making my own game, even before I had proper hardware to code on. Back then, I didn’t own a desktop, nor did I have a powerful mobile device that could handle game development software. But that didn’t stop me. My curiosity and passion for creating games pushed me to find alternative ways to learn.
I spent countless hours on YouTube, searching for ways to make games without needing a traditional computer setup. I would watch countless tutorials, often without fully understanding the technical details, yet feeling inspired by the possibilities. That’s when I stumbled upon Brackeys, a channel that introduced me to game development in a way that was both engaging and beginner-friendly.
Watching Brackeys’ videos felt like a gateway into a world I had always wanted to explore. Even though I didn’t have a proper development environment, I became obsessed with learning about Unity, C#, and game logic. I started taking notes, replaying tutorials, and imagining the kinds of games I would build one day. The dream felt closer, but the biggest challenge remained: I didn’t have a device powerful enough to start coding.
That’s when I began searching for workarounds—ways to code on the hardware I had. Eventually, I found an app that acted as a lightweight IDE, allowing me to write, compile, and run basic code online. It wasn’t ideal, but for me, it was a breakthrough. I was finally able to write and test simple C# programs, marking the very first step in my development journey.
Looking back, those early days were filled with frustration, excitement, and a lot of trial and error. But they also reinforced an important lesson: passion and resourcefulness can push you forward, even when you don’t have the best tools at hand.
Finding Creative Solutions
Despite my hardware limitations, I refused to let my dreams be put on hold. I knew I needed to find a way to start coding, even without a proper development machine. After countless hours of searching, I finally discovered a lightweight online IDE that allowed me to write, compile, and run code directly in the browser.
At first, it felt strange. I had seen videos of people working with Visual Studio and other professional tools, but this web-based IDE was all I had. It wasn’t as powerful, but it gave me something even more valuable—the ability to start. It became my gateway into programming, and with it, I took my first steps into learning C#.
I still remember the thrill of seeing my first few lines of code come to life. Simple print statements, loops, and conditionals felt like magic. The idea that I could write something and have a computer execute it was fascinating. I spent hours experimenting, tweaking small pieces of code, and running them repeatedly just to see what would happen.
Of course, the limitations of the online IDE quickly became apparent. I couldn’t build complex applications, and I often ran into frustrating roadblocks. But those early days weren’t about building something huge—they were about learning how to think like a programmer.
That period taught me an important lesson: Creativity isn’t just about what you build, but also about how you overcome challenges. Even with limited tools, I found ways to keep learning, experimenting, and pushing forward. And that persistence would shape the rest of my journey as a developer.
A Mobile Development Renaissance
About six months later, everything changed when I discovered a game-changing mobile application. This tool promised to run Java code and even build Android applications directly on my device. After years of feeling constrained by my lack of access to traditional development tools, this discovery felt like finding water in a desert. Finally, I could continue learning and creating without needing a desktop setup.
The application itself wasn't perfect - it had its quirks and limitations, like a slightly delayed code compiler and occasional interface hiccups. But these minor inconveniences paled in comparison to the possibilities it opened up. During my lunch breaks, on bus rides, and late into the evening, I found myself immersed in Java tutorials and documentation. The ability to test code snippets and see immediate results, all from my smartphone, was nothing short of revolutionary for someone in my situation.
I dove into Java development on my mobile device with unbridled enthusiasm. My first successful program was a simple calculator - nothing groundbreaking, but seeing it run on my phone filled me with an indescribable sense of accomplishment. From there, I graduated to basic games, a to-do list application, and even a rudimentary weather app that pulled data from a free API. While these applications weren't particularly complex, they represented something more significant - the beginning of a new chapter in my coding journey. Looking back, this period of exploration and discovery reignited my passion for programming in ways I couldn't have imagined. It showed me that determination and creativity could overcome seemingly insurmountable obstacles.
Web Development on Mobile
After my early experiments with mobile app development using Java, I discovered a mobile IDE that supported web development. This tool allowed me to code in HTML, CSS, and JavaScript directly on my device. The IDE's intuitive interface and smooth performance made it a game-changer for coding on the go. Despite the smaller screen size, the editor offered features like syntax highlighting, auto-completion, and even a live preview of web pages, making the development process surprisingly comfortable and efficient.
Fueled by excitement, I began learning web development fundamentals. Starting with basic HTML structure and CSS styling, I gradually progressed to creating interactive elements with JavaScript. Each new concept I mastered felt like unlocking a new superpower. The immediate feedback loop of seeing my changes reflect in real-time was incredibly motivating. I built several simple websites and eventually deployed a basic portfolio online. Though modest, these projects marked an important milestone: I had successfully developed and deployed code entirely from a mobile device. The ability to push updates and fixes from anywhere gave me a newfound sense of freedom in my development journey.
Python and Mobile Development
During this time, I also discovered a Python IDE for mobile. This discovery marked another turning point in my journey - Python quickly became my primary programming language. The simplicity of Python's syntax, combined with the mobile IDE's features, created an ideal learning environment. I found myself writing small automation scripts during my commute and building text-based games in my free moments. Python's extensive library ecosystem opened up new possibilities - from data analysis to web scraping, all achievable from my mobile device. Its ease of use and flexibility made it the perfect tool for bringing my ideas to life, regardless of location. Through Python, I learned not just programming concepts, but also the art of problem-solving and the joy of creating something from nothing, all from the palm of my hand.
What began as a necessity - coding on mobile - had transformed into a preferred way of working. The constraints of mobile development taught me valuable lessons about efficiency and resourcefulness, skills that would prove invaluable throughout my programming career.
The Laptop Era
Two years ago, I finally purchased my first laptop - a transformative moment in my development journey. After years of mobile development, having a full-sized keyboard and proper development environment felt like stepping into a new world. The laptop's processing power and larger screen opened doors to projects I'd only dreamed about attempting on mobile. With a proper development machine at my disposal, I eagerly dove into learning new technologies.
Django became my first major conquest in the world of web frameworks. What started with simple tutorial projects quickly evolved into building complex web applications. I learned about MVC architecture, routing, and the power of Python-based web development. The framework's "batteries included" philosophy meant I could focus on building features rather than reinventing the wheel, leading to my first full-fledged project - a content management system for a local community organization.
Database technologies became my next frontier. I started with SQL, learning the intricacies of relational databases through PostgreSQL. The structured nature of SQL databases fascinated me, and I spent countless hours optimizing queries and designing efficient schema structures. Later, I ventured into MongoDB, discovering the flexibility of non-relational databases. The contrast between SQL and NoSQL opened my eyes to different data modeling approaches, teaching me that each technology has its ideal use cases.
Having gained experience with both relational and non-relational databases, I found myself able to make informed decisions about data architecture in my projects. The transition from mobile-only development to having a proper laptop didn't just expand my technical capabilities - it transformed my understanding of software architecture and system design.
Tackling Data Structures & Algorithms
After three months of building projects on my new laptop, I encountered what many developers consider a major milestone: data structures and algorithms. This felt like the final boss battle in my journey to becoming a "real" developer. The abstract nature of algorithmic thinking presented a completely different challenge from the practical coding I'd been doing. While I could build functional applications, optimizing them for performance and efficiency required a deeper understanding of computational concepts.
The challenge was significant - my mathematics background wasn't strong, and my problem-solving skills needed development. Even simple problems required extensive work on paper, making the process feel overwhelming at times. I spent hours diagramming solutions, tracing through algorithm steps, and understanding why certain approaches were more efficient than others. Binary trees, graph traversal, and dynamic programming concepts that seemed straightforward in tutorials became complex puzzles when I tried to implement them myself.
Despite these obstacles, I persevered. I adopted a systematic approach to learning - starting with basic data structures like arrays and linked lists, then gradually moving to more complex topics like trees and graphs. I learned to break down problems into smaller, manageable pieces and to recognize common patterns in algorithmic solutions. While I can now solve many problems effectively, some medium-level LeetCode challenges still test my abilities. This ongoing learning process reminds me that development is a journey of continuous growth, and that even experienced developers face new challenges that push their boundaries.
The process of learning algorithms taught me more than just technical skills - it developed my ability to think abstractly about problems and approach challenges methodically. These skills proved invaluable not just in coding , but in my day-to-day work as a developer, where optimizing solutions and writing efficient code became second nature.
The Power of Mentorship
A pivotal moment came after my 10th-grade exams during a three-month break. I had the fortune of meeting a senior developer from a reputable company who became my mentor. While our initial interactions were casual chats about technology and programming, his genuine interest in my development journey led to something more structured. What started as casual conversations evolved into focused learning sessions after his workday, where we explored problem-solving strategies and tackled LeetCode challenges together. These sessions weren't just about coding - they included discussions about software architecture, industry best practices, and the realities of working in tech.
Those three months proved transformative - I progressed more during this period than in all my previous learning combined. My mentor's guidance went beyond just explaining solutions; he taught me how to approach problems systematically, breaking them down into manageable components. He showed me how to read and understand documentation effectively, a skill that would prove invaluable throughout my career. When I struggled with particularly challenging concepts, his patience and different explanations helped me grasp ideas that had previously seemed impenetrable.
This experience highlighted the invaluable impact of mentorship on a developing programmer's journey. Having someone who could not only answer questions but also point out blind spots in my knowledge made a world of difference. My mentor's real-world experience provided context that no tutorial or online course could offer. He helped me understand that becoming a skilled developer isn't just about mastering syntax or solving algorithm problems - it's about developing a problem-solving mindset and understanding how to apply technical knowledge in practical situations.
From Side Project to Startup
My journey took an unexpected turn when a side project caught the attention of a fellow developer friend. What had started as a simple tool to solve a personal problem While I had experience building applications, the prospect of turning one into a viable business venture was an entirely new challenge. While I hadn't achieved my original dream of becoming a game developer, I had evolved into something equally exciting - a developer and founder. This new role brought its own set of challenges and learning opportunities. I had to balance technical development with business considerations, user feedback, and strategic planning. The skills I had developed throughout my journey - from those early days of mobile development to tackling complex algorithms - all proved valuable in unexpected ways.
Note: This timeline represents key moments in my journey, though some details and learning experiences may be missing due to the passage of time. Each step, whether planned or serendipitous, contributed to where I am today, reminding me that sometimes the most rewarding paths are the ones we didn't initially envision.
This timeline represents key moments in my journey, though some details and learning experiences may be missing due to the passage of time.