Skip to main content


I really wanted to make a new post today. It took me a while to think of a good thing to post about, but I finally came up with something. I'm going to tell you how I got into programming.

I've always been an introvert. When I was a kid, I had only one or two friends, and I would always play videogames after school. I remember the first console I owned was a Nintendo GameCube. Anyway, there was a computer in the house. I don't even remember how I learned to use it, but I'm pretty sure the first operating system I used was Windows XP. I remember having used some Linux too, but I don't remember what distro it was. It was on my sister's laptop.

Anyway, when I finally got Internet access at home, I used it a lot. I don't even remember what I first did, but eventually, I joined a big community that had a forum.

I really liked the idea of being able to interact with people all over the world. I made some Internet friends, and eventually we formed some sort of micro-community of our own. There was a guy that had bought some web hosting, so I asked him if he could set up a forum for our community. He set us up with a PHP forum software called Acmlmboard.

The software wasn't very stable, had plenty of bugs, and was also insecure. Nonetheless, it worked, and my little community thrived. It was around this time that I started to tinker around with very basic HTML, since the Acmlmboard forum software allows users to customize their posts. The feature was similar to the "signature" that some forum software allows. The cool thing was that you could also add a post "header", which was like the signature, but it got prepended to the post content instead. So you could wrap HTML around your posts in order to make it look however you wanted.

Eventually, I decided to learn some PHP in order to add more features to the forum software. Yes, my first language is PHP. And I still use it to this day, despite all the hate it gets. I really like it, and I will probably continue to use it as long as I can. However, I believe in using the right tool for the job, so I've invested time in learning other languages and learning which would be more appropiate in what situation.

Anyway, the forum software's source code was a mess. HTML, structured PHP, JavaScript, MySQL queries, all mixed up in a bunch of files, global variables everywhere, commented out code without any indications of why, unused functions, all the bad PHP don'ts you can name, the forum had them.

Compared to what I program today, that forum was complete shit. But hey, we all start somewhere. Anyway, the forum software continued to evolve since my small community wanted more features, bugs fixed, etc. So I sort of learned programming by doing all that.

Some of the people in the community also knew how to program, so sometimes we would all fix bugs and touch the code at the same time. We were all homebrew programmers so we did not know of version control, or even about developing locally and then deploying the changes to the server. In short, we all modified the code that was "on production". Many times we fucked up and the site went down for a few hours, but we never really learned our lesson. By the way, this was around 2009.

Anyway, about two years before finishing high school, I already knew I wanted to be a software developer. So when I got to college (2011) I really aced through the first introductory classes since I already knew how to program. Then I learned some more professional stuff like version control, and other programming paradigms like OOP or functional programming. Around this time I also decided to switch to Linux as my main operating system.

I installed Arch Linux on the computer I had at the time (an old Pentium 4 with about 500MB of ram). The computer came with Windows XP, and the performance improvement I got from installing Linux on it really amazed me. I also learned a lot in the process, so I am glad I chose Arch Linux as my first distro.

Nowadays, I use Arch Linux on my main computer (a Intel Core i5 with 4GB ram). However, I installed Xubuntu on all the other computers, since I didn't have much time to configure them and I like XFCE. I will probably keep on using Ubuntu derivatives from now on, since it's a lot faster to get a system up and running, and I don't really care about being bleeding edge.

Back to my story, after a year or so of college, I decided to try and get a web developer position at a company so I applied for a part-time position to a place that needed PHP devs. I put a link to my Github account on my resume, and I think they liked it. I got an interview pretty quickly, and one of their developers interviewed me after the HR lady did. I felt at home there, and he noticed that I knew all that was needed for the job, so I got the job pretty easily.

Now it's been about a year after I got that job. It's been great so far, I get to work from home 8 hours a week (I work 20/h a week). If I were working full-time I would get three days of work from home.

I think being part-time has sort of affected which projects I've been assigned to. Right now, the project I am involved in has become kind of boring for me. There have been plenty of different features to build and problems to be solved, but lately, most of the work I have done is changing the application since the client keeps changing his mind. And it's sort of boring.

I know for sure I don't want to work as PHP developer forever, but I've thought about it and I'm not sure what I should work on. In the place where I work, they also need Ruby on Rails, and Android/iOS developers, so I could do either of those. However, I would prefer to work with Python or NodeJS instead, and I don't think they need that kind of developers right now. So I might apply for job elswhere next year or so, after I have graduated from college.

I'm also thinking about studying either Business Administration or something else related to business, but I'll wait until I have my Bachelor's degree in software development to decide what else to study.

And that's my post for the month. Thanks for reading!