I’ve been programming approximately for 11 years. It all started when I was around 18 years old. I don’t really know why I started, I just wanted to be able to write my own software and what I remember I wanted to write my own game. Starting was hard, there was so much information about programming in general, tools and a lot of stuff I didn’t have any clue what they were.
I started reading some tutorials I found scattered around the web. Then I found some visual game programming tools and after a while I managed to create my own game. As you might except it was horrible, too easy and ugly. I wasn’t very pleased because I knew I was using some graphical tool to do the work and I did not learn any real programming. Anyway, I was hooked.
The next thing I remember I started learning C because everyone was saying “it’s the programming language professionals are using.”. It was hard, it was really, really hard. I frustrated really fast and basically stopped programming for six months or something like that.
Then I was reading one Finnish computer magazine and found out that there was a programming language made for writing games. I started looking into it and it was easy to learn, I managed to do a space shooter in a weekend. Then I did another project and another with the same language. However, something was still saying inside me that “this is not very useful, learn something harder”. Again, I started learning C with a great passion and I managed to learn the basics, but I frustrated again because I did not understand pointers very well or the basic concept behind them. Guess what, I stopped programming for another year.
Then something happened that changed my life. I heard that there was something called “Linux” kernel and that it was originally written by a Finnish guy. I started reading about it. I started testing it. Finally, after some troubles and a lot of reading I managed to install it on my computer. It was cool, it was different and I felt that I’m the biggest guru of all time. Well…
For the next 6 months I didn’t even think about any programming, I was just playing with different GNU/Linux distributions I found. I was using Mandrake,Red Hat (Actually, I think Red Hat was the first distribution I ever used) and SUSE most of the time. Then I heard that there are some distributions which are harder to use and install. They were Slackware and Debian. I managed to install Slackware (I did not manage to make Debian work on my machine at all) and man that was cool. I really started to learn how operating system works under the hood. I learned GNU/Linux. During the next months I really learned GNU/Linux inside out. I was compiling my own kernel, libraries and software. All this was extremely useful. I didn’t do or learn any programming, but I did learn how the tools were working. I did learn linkers, compilers, makefiles and so on.
After some time I started reading about Free Software. I was hooked. Richard Stallman was my personal god in many ways. I did not agree everything he said or wrote ( I still don’t), but anyway I spend hours and hours reading articles about Free Software, community around it and so on. Then I started thinking learning programming again.
This time my programming language of choice was Python. Python was fairly easy to learn, but at the same time quite advanced language. I did learn it well, I wrote some code. I even submitted a patch to some music player I was using. Overall, I was writing code with Python on GNU/Linux maybe around 8 or 9 months. This is where I really learned programming. First real, a fairly big program I ever wrote was an IRC bot. I wrote it in Python. It did probably have way too much security holes and all that, but I was proud of it. Maybe even too proud.
For some reason I can’t remember I started using Windows again. I learned C#, VB.NET and some C++ too. I wrote freeware applications and people were actually using them. It was cool.
Today, I can write production quality code in C, C++, C#, Python, PHP and many more. However, I’m mostly interested in projects where I can write C and do some low level programming. I’m learning new stuff all the time; cryptography, compilers and everything about image editing algorithms are close to my heart.
During all this time, I’ve been travelling, writing production quality code and meeting great people. So to say, I’ve had a lot of fun. It’s been quite a ride. However, learning will not stop. Everyday there is something new to learn and that’s what’s keeping me doing what I do.
Why I wrote this? For everyone thinking to start programming. This is my story and my experiences, I hope that you can learn something from them. For me it was pure passion and something I can’t really explain, but it took me where I am today.
If I could share some tips for new programmers, they would be: Learn and use GNU/Linux, learn Python, read and read some more. Don’t give up. However, in the end it does not really matter what operating system you are using. Using GNULinux? Fine. Using Windows? Fine. Whatever operating you choose to use, learn it well.