My Long Road To Programming
People some times ask me how I got started programming. I could say that I’ve been programming for decades, but that’s not entirely true. I spent years programming as a hobbyist and nothing more. It wasn’t until very recently that I started programming professionally.
Here’s my long road to programming and how I became a programmer…
My journey into the world of programming began at a very young age, fortunately, but it was only very recently that I started programming professionally. My first experience with a computer was at the young age of 6 when I discovered the Commodore 64, purchased from a garage sale for the mere price of $20 USD. Even back then that was a bargain. I had no idea, however, that the Commodore 64 was a computer. At the time I just thought it was a video game console. I really didn’t even know what a computer was, at that age. A few years later I had my first programming experience when I wrote my first Batch script in MS-DOS. That was the first time I had even come across the term programming. A few years after that I decided to take up programming as a hobby. I found it very exciting that I could control something at such a young age. Being a programmer was like being a dictator, except you were controlling machines and not people. I found it tantalizing that I could tell a computer exactly what to do and it would do it!
At first I started learning BASIC, particularly using MS-QBASIC writing and compiling programs for MS-DOS. I later came across Borland’s Turbo BASIC and even Windows Visual Basic in the years to come. After years of playing around with BASIC I was able to teach myself a lot of things just by reading the manual, and eventually learning from others. Soon after I discovered IRC and Web Forums I had a lot more access to help from other hobbyists and professionals willing to share their knowledge. I never took a formal class or did any formal training in school during that time so my only method of learning was through reading every bit of documentation I could get my hands on and good-old trial and error. Of course, I learned very very slowly this way and it took me years just to get the basics down. I still knew very little. When I started developing in Visual Basic on Windows things got a lot more interesting and I spent the next 5 or 6 years learning a lot about libraries and compilers and how a programming language actually works. I co-authored a complete application (it was a photo gallery viewer for Windows written in Visual Basic) and its first public release was around the Fall of 2000. It was published in the free CD that came along with CNET’s monthly PC-Magazine and didn’t do as horribly as I had thought. A few years latter, I then stopped programming as a hobby for a couple of years trying to focus on college at the time. I wasn’t going for a computer science degree so I figured I’d not dedicate as much time to it anymore.
It was around 2005 when I needed to build a web site for a personal project I was working on when I got sucked back into programming, once again. I had a very simple and basic need. I learned a tiny bit of HTML and needed a way to put up a contact form on my web site where people could leave me a message. I didn’t want to leave my email on the website seeing the amount of spam I had already dealt with from doing so previously. The problem was I knew nothing about the web other than how to surf it just like everyone else. I had an idea of what I needed I just had no clue as to how I would implement it. So I discovered Perl. It’s a popular scripting language and a lot of people seemed to recommend it for this type of thing. So I picked up a book and started learning. Right away I felt annoyed and void of progress. So, I went online and started looking for communities involved in web development and low-and-behold I discovered PHP!
Right from start I could tell PHP was going to help me do exactly what I wanted and very quickly. I saw progress almost immediately. It took minutes, as opposed to hours, to get something implemented. Finding the Apache httpd modules and getting PHP setup on the server was so much easier. Getting the web page up and running seemed like a breeze. It just somehow came together nicely. So from that moment I decided to abandon Perl and stick with PHP. A few months down the road I needed to add some more features to my website. I started learning about interfacing with databases in PHP, building extensions, working with email, and so much more. Then I got really interested in learning more about this language as I realized how many other people were out there in the PHP community that were using or contributing to PHP.
When I started with PHP I was using PHP 4, because that’s what was available from the repository I installed it from. PHP 5 was still new and had probably only been out for a year at that point. I quickly moved to PHP 5 and spent a good two or three years dabbling in it as a hobby before I got really serious about PHP. I learned mostly online and much like my experience with BASIC through a lot of trial and error. The problem with learning that way is it takes a really long time. So I decided to take programming seriously and learned about Java, C, and C++ and read a lot of books to become a professional programmer and do it for a living. On the side I learned about a lot of PHP frameworks, CMSs, and wrote a lot of PHP. I also learned a lot about MySQL and discovered PostgreSQL and MS SQL. I even ventured into C# and Objective C recently. I also picked up some Python, Ruby and Javascript.
In the end I saw a huge jump in the level of knowledge one had to acquire between programming as a hobby and as a professional. When you’re working on personal projects for fun it’s only frustrating for you when something breaks or doesn’t work. When you’re working on projects for work it can be frustrating for everyone. The level of knowledge you need to acquire to become a skilled programmer or software engineer is several orders of magnitude removed from what I was used to getting away with as a hobbyist. Back then I could get away with writing really bad code and still accomplish my goal. Today, I fear the preying eyes that may be eyeballing every line of code I write and so the pressure is high. There are so many inconspicuous mistakes one might make and that needs great attention to detail and relentless efforts to read, learn, and apply as a reiterative process. Most importantly, however, I learned that one needs to be tolerant of failure in order to get anywhere as a software engineer. It’s not a question of if you will make a mistake, but when. You’re bound to make more than just one too.