My first encounter with computer programs was when I was 10 years old. All I could do on a computer before that was use Microsoft Office, MS Paint and play computer games (like Prince of Persia, Dangerous Dave, etc.). My brother had just joined a C++ crash course during the summer vacations. Though I dint really learn to code, I did find something cool about how he could write programs to do stuff - no matter how simple they were.
I did my 11th and 12th in Coimbatore. The last two chapters of our 11th standard Computer Science text book were on C and HTML. I found those chapters so interesting that I would read them over and over again. But I dint have access to a computer in Coimbatore to actually code on. And I figured I wouldn't learn much without writing any code. So I wrote my programs in a notebook and would imagine them getting compiled and executed. 👍 to my imaginations 😎. Towards the end of the year, when I got back home I tried the programs I had written down and most of them wouldn't even run.
The next year, one of the 12th standard Computer Science text books was on C++ (which you could download from here, though I wouldn't really recommend it). And to make things even better, I was also gifted a not-so-smart-phone through which I could access the internet. So I'd learn more of C++ from sites like cprogramming.com.
This was when I wanted to make an Operating System. From scratch. And all alone. Something that I imagined would be a lot better than Windows and Mac. I got started from Broken Thorn Entertainment's OS Development series by Mike. And since I dint have a computer at Coimbatore, I continued writing my programs on a notebook.
After a point, understanding Operating System Concepts got really difficult. And someone suggested in a public forum that it'd be better to start by making games first. So I decided to learn to make games. Though DirectX and OpenGL were too complex for me, I was still left with a lot of options to choose from. I started with Allegro. And then switched to SDL because I liked the tutorials at lazyfoo.net better. By the time I finished enough of SDL, I got done with my 12th boards and was back in Mumbai.
The first thing I did after I was back was to try and make a simple game. I made tic-tac-toe in a few days and that was a great achievement for me. Soon, I added simple AI as well.
And then I wanted to make a top-down RPG. This was a terrible failure. That's when my brother introduced me to XNA and I liked how the XNA framework could simplify things. So I started working on my own Framework over SDL 1.2 and called it GameBase. I admit that GameBase wasn't the best framework out there, but I learnt a lot of things while making it. (EDIT: Gamebase is open sourced here.)
I used GameBase to create a Game called The Maze. Though The Maze was never complete, I was quite happy with it. By this time I was half-way through my first year at St. Xavier's College and I got to exhibit it at a college festival.
I reused GameBase for a Computer Graphics animation project too:
The next year things changed - I realized how unfeasible making an entire Operating System was - and I started to embrace the .NET platform and web technologies.
However, it was the desire to make an Operating System that helped me become a better at writing good code than anything else. It wasn't the code, the language, or the tools but the goal that helped me motivate myself.
Even today, it's the desire to make an impact (on the projects I work on) that motivates me to keep doing my best.