I was just thinking about things... and I came to realize a few things.
To start, I want to give you a background on me.
In the Beginning
I first used a computer when I was about 8 years old. My mom brought home a computer from work, which was DOS based. She taught me some basic commands, and suddenly I was able to navigate my way around DOS... sort of.
Then she brought home a pile of floppy disks and said something like "someone at work gave me these disks and said they have games on them. Plug them in and see what's on there." So I did... and to my disappointment, most of the disks were password protected. But that didn't stop me. I spent some time guessing passwords. They were educated guesses, but guesses. Don't ask me what my exact process was... I was 8, and I don't remember those details. Eventually I figured out one of the passwords, and was able to play the games on that disk. So I tried the password on all the other protected disks, and it worked on roughly half of them.
That day I fell in love with computers. I knew that I wanted to do something with computers "when I grew up". As time progressed I got more and more into video games, both console and PC, and wanted to be a programmer. Specifically, a game programmer (like so many other kids in my generation.)
There wasn't much in the way of Computer Science classes in my high school... we had a Visual Basic class and a C++ class, but most of the time they never happened because not enough people signed up for them. One of those years though, I took the C++ class. Unfortunately, it did nothing for me because my teacher was "learning as we were" and I spent most of my time copying code from "the smart kid".
So I went to community college and started as a CS major. I took "Introduction to Object Oriented Programming using Java" - the first programming class in the major - and I hated it. Again, a big part was my teacher. She could barely speak English, she actually spent 1 entire class writing Visual Basic code on the board, just to erase it and tell us "Oh, forget all of that, that was the wrong programming language." I failed that class and retook the class the next semester with a different teacher. That second semester, I also took Calculus 2. I still hated Java, and I got a 22 on my first calc 2 test... so I switched majors to Computer Technology - a hardware major. (The highest level math required for CT was calc 1, so I didn't have to pass that calc 2 class for the new major.)
I stuck with that major until the end of MCC, and transferred to RIT. The major there was Computer Engineering Technology - still a hardware major, but we did out fair share of software too. At RIT I finally started to grasp the concept of Object Oriented Programming, because I finally had a good teacher. It was C++ that finally got me to understand, but I was only doing command line (DOS) programs. I took some of those programs above and beyond, as I finally understood what I was doing (one project eventually turned into my tic-tac-toe game for android.)
After doing tic-tac-toe, I decided to really challenge myself and make a Euchre game. For those who don't know the game of Euchre, it's a card game with a TON of logic involved. The game was 1 human player and 3 computer players (Euchre is most often played as a 4-player game, although variations exist for anywhere from 3 to 7 players.) I got Euchre working as a playable game, and started adding more options to it - like some of the regional rules or "house rules" that exist in variations of the game.
After college, I decided to make Euchre into a Windows program instead of a DOS program. Doing my first GUI was interesting. There was definitely a learning curve, especially considering I was learning from the internet and sample code. I decided to use C# instead of C++ because it seemed to have a lot more options for GUI programming. This meant that some of my code needed to be changed slightly for the new language. Since C# is based on C++, most of the changes were minor. The hard part was converting the command line output to a GUI. I played with a few other programs for a while, nothing else really got too far.
Then I got into Android. I got my first Android phone in 2010, and got REALLY into the modding community - rooting, ROMs - and basically everything Android. I paid for Tasker, and eventually made some profiles in there for responding to text messages while my phone was in a car dock. (I was taking an hour and a half drive to Buffalo once a week for work, so it helped for that trip.) Then Tasker released App Factory, which allowed you to use "scenes", which were basically GUI elements, together with profiles to create an actual app and an apk file which other people could install on their phones. This is where the first ever version of Auto Respond came from.
After realizing the visual limitations of the "scenes" created in Tasker, I decided to learn to write actual code and recreate this "app" that I created in Tasker with my own code. About a year later, Auto Respond is what it is now. Plus I've created tic-tac-toe, started to convert Euchre to Android, started on a countdown widget app, and have begun work on a super-secret project - which is going to be HUGE when it's finally released. (I've told a few of my close friends and family about this project, and they all LOVE the idea.)
So today I was thinking about this journey... from computer enthusiast, to wanna-be game designer, to failure of a programmer, to writing basic command line programs, to learning on my own, to semi-successful Android developer, and hopefully in the future to successful entrepreneur and app developer.
And through all of this, I've been working as an IT professional for 10 years... and I'm glad. I wouldn't want to code all day every day. I enjoy it too much. A lot of people out there say that you should never turn a hobby into a job, because you'll end up not enjoying it as much - I agree with them.
I LOVE programming, but I would hate it if I did it 40 hours a week. Plus, if I did programming as a job, I wouldn't want to come home and program my own stuff later. I want to program what I decide to program, not what someone tells me to program. And that's exactly what I do right now.
Now, I know what some of you might be thinking... "Well if this idea of yours does become big, then won't you be programming for a living?" ...Yes and no. Yes, I will most likely be doing a lot of programming to keep this whole thing going. But I will still be doing what I want to do, not what someone else wants me to do. I've always dreamed of being my own boss, and I hope that one day that dream will come true.