DEV Community

CompileThis!
CompileThis!

Posted on • Originally published at compilethis.dev on

Developing Proficiency in Multiple Programming Languages: Part 1 - My Story

Ive always been a curious mind and I always wanted to explore new things related to programming. I already explored a couple of programming languages but I'm always curious to learn more.

This blog post will be split into two parts. In the first part called "My Story" I will write about how I started with programming, how I moved from one programming language to another and how I'm still doing it. In the second part (separate post) I will share my opinion about why it's beneficial to be proficient in multiple programming languages and why you should not limit yourself to one language and become an "X programming language developer". This will be a little bit longer post, but it will give you my perspective as a developer with 15+ years of experience in the industry. It all started when I was just 13 years old. Heres my story.

Early beginnings

I got my first PC when I was 13 years old. I didn't know anything about it. My sister, who had subject IT in her elementary school, showed me how to press a button to turn on the PC. That was it. I didn't even know that the Internet existed. Even the PC without it was so interesting to me. I had no clue. As I was curious, naturally I would click on anything so I could learn what any icon does when you click it, and obviously, I broke something on my Windows 98.

Windows 98 - still feeling nostalgic about it

My parents asked one of their friends if he could come and fix my PC. Then he told us about the Internet and set it up for me. My interest in development started at the age of 14 when I first received a random HTML tutorial in my email inbox from a news portal. Back then I didnt know what HTML was but they said that you can build your own website with it. Just the thought of me being able to build my own website got my heart beating faster. I was so excited to see how its done and I started to read about it.

I was too dumb

A few weeks later when I already knew how to make a basic website, I was digging deeper on the internet and the word programming started to appear in search results. I found a tutorial about the C programming language and I wanted to try it out. It was very interesting to me but being that young I was too dumb to find how to deal with the errors shown by the compiler. I decided I would stick to web development as I found it way easier and more interesting because it was visual and not something that you would put in a command line input.

After I made a couple of pages in HTML, I discovered that if I used something called PHP , I could actually have only one page and just use include() to change the content depending on what is in the URL. That was life-changing for me at that moment.

Hello World file opened in text editor

After that, I checked a couple of PHP tutorials and even though classes and objects never made any sense to me (I didn't know why would I ever use them), I found out that I could store things in a database so I don't need to include files with content but I could actually fetch it dynamically from a database.

First money

At around the age of 15, I decided that, since I already knew how to make a dynamic website, I could share that knowledge with other people. I decided that I would build a website where I would teach other people as I was learning. Little did I know that is once the famous technique for efficient learning called the Feynman Technique. I never thought I would earn any money with that, it was all fun for me and I genuinely and unselfishly wanted to share my knowledge. I was a kid, and I didn't speak English that much back then and I wanted to help people who didn't speak English at all to have access to the knowledge in Croatian, which is my native language. After the website got some traction, I found out that I could earn some money by placing Google ads on it. At the age of 15, I started earning almost half of my parent's salary. Coincidentally, that was the time they stopped discouraging me from spending that much time on my PC :) Parallel to that, I was also offering my services to other people to build websites and various scripts/tools for them and I earned decent money.

As I had a website with tutorials, it was natural for me to start exploring other programming languages (and also other IT-related things, but my focus was mostly on programming) so I learned about ASP .NET, Visual Basic, a bit of C++ and so on. It was all very shallow exploration but at least I was familiar with the very basics of a few languages.

Exploring other languages post PHP period

After a couple of years of PHP, I realized that I was doing the same things over and over, and it started to be a little bit boring for me so I decided I was gonna try something new.

C++

At that time I had an online friend who was also exploring C++ and we found out that you can easily build cool stuff with UI in C++ using Qt framework. That was actually the first time where I realized the use of pointers and some other concepts that were earlier so unclear to me when I was learning about them in college and from tutorials. I can't say that I was proficient in C++ but I built a couple of smaller apps just to brag to my friend. In the end, I never felt like going the route of developing desktop apps so I go back to developing websites in PHP for the next couple of years.

Javascript/Typescript & NodeJS

It was my ultimate career goal to become a developer but it was tough to find the first job, so when I got my first job I wasn't hired as a developer but development was always in my heart and I always had a developer mindset. In a department where I worked they were doing a lot of things on the PCs manually, and as many other developers, I was too lazy to do that. So I built a tool for the whole department which automatized the process. Initially, I built it in PHP as that was the language which I was the most comfortable with. The problem was, I needed that app to be real-time and by that time I would just do a loop that would fetch data every couple of seconds. That was all nice and all until I needed to add multiple processes like that and more and more users started to use my app. It was unsustainable. Then I researched a little bit about it and I found out that the solution for my problem was NodeJS with sockets. After I refactored that app to use NodeJS I had something to show and that project got me my first job as a software engineer. Up until this day I still use JS/TS, Node and React as my primary technology.

Python

When I got my first job as a junior software engineer, my team lead suggested I take a course by MIT, Introduction to Computer Science and Programming Using Python to improve my fundamental knowledge of computer science. The course duration was 9 weeks and I learned a lot of theory about programming and picked up Python syntax. I liked the course and especially the exercises that were presented there. At that time I also discovered an amazing website called Exercism. I thought since I became familiar with the Python syntax and knew how to build simple apps, maybe it would be nice to explore some AI-related stuff. But after playing around with it I realized AI is really not for me. I'm not into analyzing data and everything that goes with it. I was more of an engineering and problem-solving type of developer.

Go

After many years of being in the industry working mostly only within JS ecosystem, I experienced something known as "Javascript fatigue". I simply needed something new in my development career, at least as a side thing. Up until this point in my career, except for C++ I mostly worked with interpreted languages. It was time for me to try something that I could compile my code to. I was reading about the Go programming language, its simplicity and how good it can be for developing microservices. Since I was coming from the web development industry, choosing Go made sense. While learning it, I did 2 projects for my personal needs. One was a memory management app that would kill specific processes once my memory went above a certain threshold, and the other one was just something that would analyze the content of markdown files. However, I can't say that I fell in love with Go. I don't quite like the syntax and error handling. I'm sure it makes sense but it just wasn't to my liking. I still like that I've tried it though

Next steps

Just recently I again started feeling the need to explore something new. Just out of curiosity. But I felt that this time I needed something a little bit different. I wanted to explore something that is a little bit less similar to what I tried so far. Now I found what I want, and that is what I will be exploring next. Those two technologies will be the main content of CompileThis! blog and will share with you my process of learning those two technologies.

Elixir

When I said I wanted to try something different, Elixir was the first thing that came to my mind. So far I have mostly worked with Object Oriented Programming languages, but Elixir is a functional programming language. Yes, I know there is no high demand for Elixir programmers at the moment, however, I was never learning anything to find a job but rather out of curiosity. Some people who tried it, swear that this language is so beautiful that they never want to go back to something else.

Kotlin / Android SDK

There was always a tiny sparkle in me telling me that I want to develop mobile apps but I never pursued it. It always felt a bit complicated for me to learn development processes in a completely different industry. I did try developing mobile apps using React Native but it never felt right for me. Also, I already tried to write some Kotlin code and so far I like it, but the whole Android ecosystem is still pretty new to me and I feel there will be a lot to learn. Nevertheless, I will try to learn it in parallel with Elixir but Elixir will be my primary goal, and Kotlin / Android will go along depending on how much time I will have.


Stay tuned for the next part of this blog post where I will write about why I think it's important not to limit yourself to one technology and what did I learn by switching from one programming language to another.

Top comments (0)