Programming languages: my story
Introduction
Previously I loved to learn and use different programming languages. In this post I will just describe my thoughts about them. This will be just a fun post.
My story will be bound to dates, because this is important to understand why I chose one or another language.
How I learned programming languages?
C programming language - Autumn 2015
A classic language in the software engineering. I started a my journey in programming from this language on first course of university. I worked with it only at the home when developed console games and in an university.
Python - Spring 2016
After learning C in an university I decided that I want to be a programmer. I studied a radio engineering, not programming, while I had some subjects related to programming, them almost were focused on an embedded programming which required a big background in an electronics, but I was young, I didn’t had money to live and I didn’t like to wait, so I decided to become a programmer as fast as possible and started to learn Python. I learned some base constructs and next an exam session begins in my university, so I should hold on with learning Python until I will not pass exams. In fact Python waited for my attention during next 2 years.
Java - Summer 2016
After finishing first course of an university I went to parents home on summer holidays and I had a strict decision to use free months to learn some programming languages. I chose Java, because I already know a little bit Python, but I want to start programming Android devices. I spent 2 weeks of learning Java (experience with C and Python helped me a lot) and next I had fortuitously acquaintance with one programming manager from Seattle who completely teach me Java and some frameworks. In fact that human gave me my first job as Java programmer in October 2016. I will use Java during next 6 years in a commercial programming.
JavaScript - Summer 2017
During a work at first job and develop web applications I had some tasks not only at a back-end, but also at front-end, so I learned JavaScript to solve them. Then this language will be very helpful for me to work on freelance. Also I like it syntax, especially lambdas.
Android development - Autumn 2017
I want to describe Android development as a separate topic, because it was my start in a freelance development and learning new technologies. As far as I worked at a startup I can work on my self too, so I decided that I can earn more money by learning Android development and develop an application for my friend who worked as a freelance embedded developer and need a mobile application for brewery factory automatization. So I developed Android application for him and this was my start in freelance development.
Python (again) - Winter 2018
After a first successful project at freelance, I recognized that I can make additional money and decided to learn Python for use it in fast development of small applications. So I did it and I liked Python very much. It’s the best tool for fast development. After that I use Python at my work very often.
C++ - Spring 2018
Used to learn an object oriented programming in university. I don’t understand why we used it and not Java which is significantly easily to understand. I used it only in an university and never return to C++ after.
Rust - Summer 2018
I played with Rust in a summer, but I didn’t found how to use it in commercial development at my current position or freelance, so I successfully forgot it.
Kotlin - Spring 2020
During an epidemic of COVID-19 I decided to change a job and start a my new work at Ajax Systems (this is an awesome company). The main programming language for a backend was Kotlin and after start my work here I learned Kotlin. It’s my favorite programming language right now for JVM world.
Clojure - Spring 2021
I played with Clojure in Spring 2021, because I listened a lot of podcasts with good words about this language. Unfortunately I didn’t get an idea of this language, because it’s complex, it’s solves the same problems which I can solve in Kotlin, Java, Python, JavaScript and a market of jobs is not so big for Clojure. After playing with it I just truncated it, because for me another languages are more viable.
Go - Autumn 2022
In fact I start learn Go in 2020 year, but I always hadn’t time to complete learning of it, because I had some ideas of projects or something else. In Autumn 2022 I finally finished learning Go and found a job in Form3 with Go, it’s an awesome language.
Programming languages comparison
OK, I explained a my history of different programming languages, but let me explain differences between them. I will speak only about mainly used commercial programming languages: Java/Kotlin, Python, JavaScript, Go.
Java/Kotlin
Use case: a project of any size and any complexity.
Important note: usage of this languages make sense only with an awesome framework Spring Framework. If Spring Framework is not an option, it will be better to choose something else.
Hiring availability: a lot of engineers know this languages (if somebody knows only Java, it will be easy to learn Kotlin), so there is no problems with hire new engineers. I think that it’s easy to find middle engineers, but for find really good engineers in Java it may be challenge task, due to big amount engineers available on market.
Python
Use case: develop proof of concept, prototype or small application.
Important note: Python is an awesome tool for small projects, but for big projects it will be better to use Java due to type checks and more structured source code.
Hiring availability: a lot of new engineers finishes Python getting started courses and there are a lot of middle engineers. Probably find rock star engineer will be hard.
JavaScript
Use case: front-end, simple back-end applications, team of full stack engineers for simple back-end, new technologies.
Important note: JavaScript is only an one available choice for front-end applications, so there is no reasons to discuss front-end part of software, but at a back-end the situation is completely different. JavaScript (Node.js) can be used for develop simple CRUD applications in case if team of full-stack engineers exists in a company or develop back-end applications with the most fresh technologies. But due to non stable nature of Node.js, no types, no concurrency I don’t recommend to use this technology at all. If need new technologies - use Go.
Hiring availability: a lot of engineers with low level skills and requests for high salary, so probably this is my subjective thoughts, but I think it will be hard to find really good engineer in JavaScript, at least in Node.js.
Go
Use case: small applications, new technologies.
Important note: this is an awesome technology, but due to no analogues for Spring Framework it still can’t be used for develop big and complex applications. It can be used only for microservices where code base is relatively small.
Hiring availability: to be a good Go lang engineer, you should be at least senior level engineer in another technology, for example in Java. So engineers with Go lang knowledge are usually senior level and curious about new technologies, so right now this technology proposes relatively high skill of engineers available at market, while companies can pay not top salary for this engineers due to “possibility for work with latest technologies”.
Summary
In this post I described my story with different programming languages and what I think about them. Next post will be about choosing a programming language for a next project.