Since I was a kid, I always liked problem solving, breaking things, and putting them back together. When I got my first computer, I took it all apart and put it back together. The next day, my curiosity got the best of me and I ended up deleting my Windows OS. To feed my curiosity, I spent all my allowance on purchasing software and video games. Playing around with different software allowed me to learn a lot of different skills (editing, animating, 3D modeling, manipulating data and much more).
When I came to the US, I gained access to the internet (the only thing that could satisfy my curiosity). The teenage me went headfirst into gaming. Nonetheless, my curiosity still got the best of me. It started with modding game files to get the premium characters at first. Then I transitioned to adding my own models, customizations skins, maps, and other game files. Soon after, I started modifying memory values using Cheat Engine. That forced me to learn more about memory, assembly, and machine languages as well as the inner workings of computers in general. At that point, my curiosity could not be contained. I started scripting.
At first, I used AutoIt3 to create a script that played the game for me. Soon after, I added UI to give me analytics on how many times the script was executed and give estimated summary of rewards earned. That was when my curiosity peaked about programming. I soon created a mouse picker application with AutoIt that allowed me to get the information needed to create my bot scripts easier. It gave me the ability to capture cursor's position, sample pixel color values, and store it for later processing. After that, I downloaded visual studio and started making small apps.
My first visual studio app was an app that helped me get free energy to play on OurWorld. It started as a simple chat spammer (I would get more energy as I participated in "conversations"). Soon after, I added ability to access all the promotional codes that gave free gems (premium currency) within the app. These codes were distributed across different social media sites. I would aggregate them, add them to the app, then release an update. That required me to add auto updating functionality, using text files on a server. Playing around with a server led me to a whole new world.
My curiosity spiraled out of control. I started making websites, which forced me to learn how everything worked. I started getting extremely interested in how computers worked and what needs to happen for a website to work. I learned the differences between compiled and run-time languages, understood client-server communication, then dove deeper into networking, how TCP works. At this point, I was a freshman in the university. I joined multiple computer science and engineering student organizations ranging from robotics to mobile and game developments. That exposed me to a lot of different technologies, programing languages, and projects.
I took the knowledge I gained up to that point and applied it into my classes. In my intro to C programming class, I used an Arduino Uno for my projects instead of just a simple C program. For my first project, I wanted to control things from my phone. So, I created a Wireless Arduino LED Piano utilizing three different software.
Soon after, I realized that my classes were teaching me things that I already knew but in a more structured way. All that meant for me was that I had more free time to experiment with different things. I started making apps, ranging from simple To-Do apps to an online shopping store. I invested in a raspberry pie and created my own super server. My server turned into a hub for the tools I use. It had a Git, ownCloud (Dropbox like cloud), network file sharing, PHP web server, MySQL database, and much more. I even turned it into a gaming console, media center, and a remote admin shell. Currently, I use it as my personal streaming server (like twitch) to stream my pc to the TV.
As you can see, majority of my learning was fueled by passion for problem solving and curiosity. I created many apps over the years. Some I forgot about, some provided great value for me and others, some got me in trouble and some that just satisfied my curiosity. I made an app for Warframe that helped players spend less time researching and more time playing the game. My first app that I sold to people was Aztec Course Snatcher, which got me in trouble. It was a Chrome packaged app that monitored students' course wish list and helped them register for those courses automatically. I created YouTube Redirector, just to satisfy my curiosity on how Chrome extensions work.
This is how I transitioned from a curious gamer into a full-fledged software developer. I cannot stop writing code and creating things. Most of my previous creations were experimentations with technology and tools to expand my knowledge and satisfy my hunger for code.