As a kid in Iceland, I was always fascinated by all things technical. Be it light-switches at my grandmothers house or what is generally described as the idiot-box. I have always loved this stuff, and still do.
When I was eight years old, I discovered the delightful world of computers and in retrospect, many of my friends were handpicked, because they had interesting toys to play with. I spent all of the time I could playing and "messing" with computers. It started with computer games, but eventually I ran out of games for our Amstrad CPC 128k and had to resort to reading the computer manual to retype some of the programming examples in the back. I still remember the light-bulb-moment when I was at school and figured out what "IF" really meant through our English class. I created all sorts of simple menu programs with pixel graphics for our first family computer in BASIC, without having any idea of what I was doing was actually programming.
Then years went by, and I think the next time I did anything that I would classify as programming, was in my teens, when I discovered IRC and started making scripts for mIRC. Among my proudest creations included a little script that I installed on my cousins computer that replaced all of his cursing with cute little words like "flower", "honey" and "love". When he discovered my little program I received a message on the lines of "what the love have you done with my honeying computer?!".
Needless to say, IRC dominated my life back then and as someone who was mercilessly bullied throughout high-school - it was easier to hide behind the computer screen. I went from mIRC to creating scripts for Eggdrop, a bot that sits on IRC channels 24/7. We had a pretty large channel back then (#Iceland on IRCnet) and it was filled with immature, angry and horny teens and at times, the noise levels were too loud to handle manually. This prompted me to create "nosense.tcl", a score based system that would give you penalty points for shouting, repeating yourself and other annoying things. In time, the bot would "forgive" - so it didn't really affect normal chatting, but wrecked havoc on those poor teens. Today, I still think of systems, that might benefit for such noise control, such as MMO games.
Around the same time, I was introduced to Pascal and Delphi, but neither really interested me. The exercises were easy enough, I was just never passionate enough about creating anything with it. Then after learning HTML, some people at school were using PHP (v3 at the time) for creating a lot of dynamic things in a world that had been awfully static at the time. Around the time when PHP reached 4.0 (around 1999, as I recall), I was hired by a bunch of friends at a startup as a web developer.
This was the first time someone was actually willing to pay me to play with computers, and I was excited. My boss at the time however, was not content with me using PHP as a top-down language as I had learned with v3 and wanted to replace my function files with classes. Being extremely stubborn, and proud, I just ignored him until they finally fired me on the grounds of not having enough work for me.
After working as a network engineer for a year, I took a job as a web developer again and I created 3 custom solutions for a small company in a short time. Unfortunately, they were run by a sociopath who's idea of running a business was to hire people, never pay them and excuse himself until people gave up and left. People's salary was always "in-the-mail" or "just on the way".
At the time, I had created a small CMS for cinemas as a freelancer and our interaction ended with him selling _my_ system to a customer and never paying me for it. Being unemployed, I couldn't afford a lawyer, so I decided to to focus on IT between the years of 2000 and 2006, satisfying my other interests; computer systems and computer networks and the only programming I did was an occasional shell script or personal homepage in good-old functional PHP.
Much later, I realized that I was so hurt by someone stealing my programming work, that I had concluded that professional programming was not for me and I would just keep it as a hobby instead.
In 2006, I did something crazy. I quit my job as a sysadmin and applied for a pre-admission college course in Denmark. It helped that I knew people here who were as a second family to me and I couldn't have done it without them. The University of Aalborg has a group-based approach to learning, so most of your grade is determined by a group project, each semester. During my years in IT, I had tried multiple times to learn C, but I was never able to retain focus after a few hours. These group projects essentially helped me learn C, C++ and C#. Not because they taught us these languages, but because our groups had decided on a software project and were motivated to create a great project. Living at a dorm and not having a day-job also gave me the free time to learn new technologies.
Before graduating with a bachelor's degree, I had an internship with a software/consultancy company in Iceland. They took a chance on me, and gave me a paid internship, despite that I hadn't worked as a professional programmer before. Before this internship, I was always torn between IT and software in terms of what to do after my studies. They introduced me to the Learn and Agile way of doing things, and while these words are becoming less and less meaningful, they weren't pushing procedures or workflows on me. Instead (without going into too much detail), the work mostly consisted of much more hands-on and communication, than requirements, design and documentation.
I met with customers every week and if at any point, the customer wasn't getting what they were expecting, we talked. During this internship, I felt something awakening. My passion for programming was back. And not as it was before, as a means to an end. The ambition of making the best piece of software possible was there. Design patterns were suddenly interesting, as opposed to "I like my way better" and I could see the point of doing software testing.
During my early years, software tests were just for people who made mistakes. If my code works, why test? Right? For me, this revelation was that instead of fearing change of a large program and ending up rewriting the whole thing, tests allowed me to change fundamental things in the program with confidence. Today, I just started a job as a Java programmer and I am hoping that my ambitions will be fulfilled by creating some awesome solutions there. I still program for fun, although my focus switches a lot. I also still do IT, but on a much smaller scale. I would like to end with thanking a few people for my self-development in software development.
- Beggi & Sonja: For taking care of me in Denmark. This wouldn't have been possible without you guys.
- Árni from Firmanet: For firing me. I was angry about this for a long time, but later realized that my heart wasn't in programming at the time, and I would've just kept on doing the bare minimum and never would've learned anything new.
- Bjöggi from Stockvault: For pushing me to do a little freelance work during my studies, even after I insisted that I wasn't a programmer. It helped me realize that not only, is other people's code not better - it is often worse. That helped me set a more realistic expectations for myself.
- Sprettur: For the internship, friendship and the inspiration.
To be clear, I haven't really blogged anything for a while and I just needed to get this out. I am perfectly content with nobody reading this.