My 100 000 hours

Last updated: 2023-09-05

Comments on Mastodon

All posts: Index

Note: I authored this article originally in 2012 but I wanted to share it again. Maybe it’s inspiring for someone.

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 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, hard. I got frustrated fast and 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 was 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 a Finnish guy originally wrote it. I started reading about it. I started evaluating it. Finally, after troubles and reading manuals, 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, Red Hat was the first distribution I used) and SUSE most of the time. Then I heard that there are 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 systems work under the hood. I learned GNU/Linux. During the next months I really learned it 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 learned linkers, compilers, makefiles and other build related tools.

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 with everything he said or wrote (I still don’t), but anyway I spent hours and hours reading articles about Free Software, community around it and so on. Then I started thinking about learning programming again.

This time my programming language of choice was Python. Python was easy to learn, but at the same time quite an advanced language. I wrote a lot of code in Python. I even submitted a patch to the music player I was using. Overall, I was writing code with Python on GNU/Linux for around 8 or 9 months. This is where I really learned programming. The first real, bigger program I ever wrote was an IRC bot. I wrote it in Python. It did probably have way too many security holes and all that, but I was proud of it. Maybe even too proud.

For a reason which I cannot remember, I started using Windows again. I learned C#, VB.NET and C++ too. I wrote freeware applications and people were using them. It was cool.

Today, I can write production quality code in C, C++, C#, Python, PHP. However, I’m mostly interested in projects where I can write C and do some low-level programming. I am learning new stuff all the time; cryptography, compilers and everything about image editing algorithms are close to my heart.

During all this time, I have been travelling, writing production quality code, and meeting great people. So, to say, I’ve had a lot of fun. It has 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 did I write this? For everyone thinking of starting 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 cannot really explain, but it took me where I am today.

If I could share 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 GNU/Linux? Fine. Using Windows? Fine. Whatever operating system you choose to use, learn it well.

Copyright © Niko Rosvall