My learning process

In the 7th grade I got my first PC. I’ve immediately embraced everything I could, I was curious about all the things. I’m talking about advanced, scientific things like changing the wallpaper, running the defragmenter, formating a partition, using music applications, installing games and software for friends, knowing what RAM, ROM, HDD and others are.

And in the 9th grade I had my first encounter with programming. It was Turbo Pascal. Then, I don’t remember why and how, I ran into the web world. First, it was HTML and CSS, which I wrote in Notepad, of course. Then started with PHP and MySQL, and probably in the same period I met JavaScript.

Along the years I peeked at Visual Fox Pro, C, C#, Python, Visual Basic, Java, and maybe other languages, too. Small stuff, nothing important. I was just curious.

I guess web programming was easier to get started with and that’s why I insisted on it. And I liked it. A lot. I really wanted to learn it. Nowadays, though I’m still working in web development, I chose to focus more on back end. After some years of working on various projects (from small PSD2HTML, mobile apps with PhoneGap, jQuery, image manipulation to WordPress, Symfony, scaled apps, back end services, database design and so on) I dared to say “if it’s seen by the user, it’s not that much for me” AKA “I chose the back end”.

There are a few things that I consider major keys in all I’ve learned.

Hard work

My method was hard work. Very hard work. Read a lot. Try it. Do it. Ask myself how I can do it better. Do it better. How did others do it? Why? Learn from them.

Many nights without sleep. Countless nights. Was it worth it? Well, maybe I would have needed better balance with personal life. Would I recommend it? Maybe 60% percent of it. What’s for sure is that it got me to a point where I’m happy. Fortunately, not the happiest I can be.

I didn’t study programming at a university, everything was up to me to discover, even that small knowledge people say you get there.

Listening to others

At one of my jobs, when I saw the seniors talking, I quickly took off my headphones and listened to them. Then I went home and got deeper. This is how I started to get to know about replicated databases, load balancers, scaling, cache. When I had the interview to my next job, part of it I nailed it from what I’ve heard those guys talking about, without having any practical experience. And that next job offered me the opportunity to put my hands on those things.

Ask others

I share and question my ideas with others. Many times it helps. Like a friend told me, it helps you get out of your bubble.

I didn’t blindly followed everything others told me. Sometimes I didn’t believe them and went to search for info. Sometimes they were right, sometimes not. And this got me deeper into some aspects.

I don’t remember where I read “Listen to understand, don’t listen to reply”, but I did follow it!

And I discovered I really enjoy team work.

Read

A lot. Subscribed to newsletters. Got books. Followed tutorials. Read blogs. Anything I could, I just didn’t stop reading. Once a week was better than nothing. Once a month was still better.

Practice

I’ve built some PHP frameworks, one or two even got into production unfortunately. Building a framework is somehow bad. At least because I was just by myself and just dreaming about building one. Although, the good part is what I learned. I’ve found what a framework needs, how it works. Then, when I used it, I saw what it lacks, I saw the bugs, the horror. So for me, building a framework was good to learn. That’s how I got to know OOP.

I consider it’s great to build any app, have any pet project. Maybe it lasts a few weeks, maybe a year. I just like to DO after I READ.

New

I embrace new things. Even if at a glance. I’m curious about what’s out there in the big world. Maybe I don’t put my hands on it, but I’ll know there is a way. And Go had me at “Hello, world!”.

And not only in pure programming, but also in infrastructure and management.

Leave a Reply

Your email address will not be published. Required fields are marked *