This post's goal is to share experience, telling a bit of your story and helping people who are in doubt.
What made you switch your main programming language?
This post's goal is to share experience, telling a bit of your story and helping people who are in doubt.
What made you switch your main programming language?
For further actions, you may consider blocking this person and/or reporting abuse
Oldest comments (21)
Here's my example :)
I've been programming for 10 years, and I began with Java. After 2 and a half years of it, I've made the switch to Ruby. At the time, I've thought on the following points:
Beginning
I was curious about the web. I wanted to know how the internet really worked out and was built, so I began studying HTML, CSS, JS and PHP. After a while, I got an opportunity on professionally working with web Java as a company intern.
At the time, I only knew a bit of "Wordpress", and didn't like PHP at all (syntax and local community). It simply didn't attract me.
Working with Java
When I got the job as an intern, I started working with a web framework they came up with, but was happy with it as I could see how the server-side really behaved, applications got deployed and learned a lot with their devops.
After a while...
Almost two years after I got in the company, my interest faded away, as I saw new technologies popping up and solving problems in a easier way. I've met Ruby on Rails through a college friend and it was wonderful.
The Java IDE (Eclipse) we used was irritating me more and more. (Note: the company required that all devs used the same IDE).
Lastly, I wasn't happy at all with its ecosystem. IDEs were clunky, libraries didn't have a pattern and everybody I've met wanted to reinvent the wheel.
Switching to Ruby
After some thought, I've decided to seriously focus on Ruby. Got some books, tutorials (Railscasts was incredible at the time!), started some basic Rails projects, and ended up using it to build my college's final project.
The problem was, I couldn't use it professionally. If I was going to use it, I had to quit my job and search for a company that used Ruby.
I ended up quitting the Java job, since at the time, I could do it. I had the wonderful opportunity on being jobless for a couple of months until I found something else.
Nowadays
Ever since, Ruby has been my main programming language (quick scripts, life automation, professionally, etc).
Nowadays, the web is a very different world! :) and I've been thinking on seriously studying Elixir.
I'm also a Java -> Ruby convert. My story was learning Java in university, but I dropped out of CS after 1.5 years and feeling like it wasn't for me. A couple years later, still with an interest in technology and a few failed attempts at scrapping things together with help and still feeling helpless, I wanted to get back into code for real. I had an idea in mind and someone recommended Ruby on Rails as a good approach. He didn't know all that much more than me, but he knew where to look.
So when I got into Ruby I felt a lot more comfortable. The friendly syntax and flexible standard library really make coding a breeze. Ruby can be frustrating when you write a bug that Java's compiler would have caught, but it's an environment that lets me go from concept to execution without losing my train of thought.
I still mostly write in Ruby, but consider myself someone who'd "pick the right tool for the job". It just so happens that the right tool has remained Ruby. I was working on a node project for a while and was way less happy.
My current project, dev.to is a Rails app, but I am prepared to evolve it into a multi-language project via services and/or interop, like with Rust but for now, that's overthinking the problem at the present. For now it's just a basic Rails 5.1 app.
Beginning
I started with C# .NET on my university but I didn't like to develop only for windows environment. Also I was interested on building applications on the web. So I met PHP and I didn't like the syntax and also the available frameworks.
Switched to Ruby
A year after that I met Ruby on Treehouse website and I loved it, I was so clear and easy to use that I started to build applications really fast because of its simplicity and also the huge quantity of open source projects. So I have been working with ruby since that time, building bigger and bigger platforms.
Trying languages and frameworks
Two years ago I saw how node.js grew up and when I tried I had to install too much dependencies to build simply things also node.js uses a lot of memory and processor. Couple of months after that i met elixir and using it I understood that its too different of ruby because it's a functional language but i still liked.
The new way
On the last six months i met Crystal and i really liked, it's pretty fast, as clear to write as Ruby, concurrency and parallelism(on development) are simply to use and uses low memory and processor. Nevertheless, the problem is that Crystal nowadays is on alpha and the are only few open source projects.
So i think im going to contribute to Crystal and Crystal open source projects.
I will still be writing JavaScript on the frontend, but I switched over to Go on the backend. The reason was Node; all APIs still using callbacks while all the people are using promises. And now the .mjs extension thing... 🙄
That, sumed to the fact that I wanted to try Go.
I heard a lot about the h2 implementation of Go and how speedy it was, so I gave it a try and I love the language now 😍 So much nicer to work with.
The short answer is: At first, because the job required it. After that, it was to searching for something which would help me to stop making spaghetti messes. Unfortunately, language alone can't accomplish this, but it can help.
I'm old
The first language I did professional work in was PHP 3 or 4. (Not counting Pascal, C, C++ projects in college.) The very first one was because I didn't have enough to do as IT support, and I expressed an interest. I think I picked PHP because it was easy to get into and considered a beginner-friendly language for web programming. At least half of the PHP apps I wrote during this period are still in use today. (Oh the horror!)
Paying the Bills
Then I got some contract work to integrate with a VB6 system, so after some research, VB and C# on .NET seemed like the obvious choices. So I learned them for the job. For a while after that, most of my career was in C#, eventually wandering into Javascript front-ends as JS became powerful enough to make that happen. (And because it's the only choice for apps that run in browser.)
Learning FP
I still was not happy with the maintainability of the solutions I was coming up with. So I started searching for other languages, tools, patterns, ...anything. I played with F# briefly, but found it weird and put it back on the shelf. Eventually I came back and started doing some coding in it... sortof awkward hybrids of procedural code and functional trappings. But eventually, I got attuned to the functional paradigm and I love it. I feel like F# is the hidden jewel of the .NET framework. I have trouble finding a similarly well-balanced language as F# on other platforms. I use Elm on the front-end, which is similar but is not a general purpose language. I'm interested to learn Rust for a low-level project as it seems to be in the same vein as well.
But in the end...
I think if I had learned "pure OO", I might have also been happy with C#. But as it was, I thought I already knew OO programming and was disappointed with it. Turns out that just following patterns of a language doesn't work nearly as well as following the philosophy of the paradigm you're writing in. That's one of the reasons I love this post.
Mostly what made me switch was driven by what my employer wanted me to do.
So over time my main programming language went through (ignoring recidivism duplicates)...
For fun, I've also significantly used Python, Swift, F#, D, Lua.
Also for fun and/or job related, I've worked with many different languages at least a little bit. Pascal, Object Pascal / Delphi, Perl, LISP, Scheme, FORTRAN, SmallTalk, Squeak, REXX, Rust, Ruby, JavaScript ES6, CoffeeScript, Elm, GorillaScript, MATLAB, Transact-SQL, Awk, Prolog, and probably a lot more that I've forgotten about.
Usually a critical factor is that certain languages are the premier language for a given platform. So if I am working on the JVM platform, Java is a likely "must learn" language even if the project were Clojure or Scala based (I haven't learned those yet, but they're in my queue). Or if my platform is iOS, then Objective-C and now Swift are the "must learn" languages.
All the love for Basic. My first as well =)
Rust replaced all of them pragmatically. I used to be split between C, OCaml, and Python for different projects. Now I just use Rust and sometimes Python for small scripts.
I work with the web for more than 22 years and my first server-side language was Perl. Sadly Perl lost a lot of market shares and job offers started to dwindle.
At the time PHP was starting to rise in popularity and it brought a lot of perl-like syntax and concepts along, so I've naturally switched to it. Been working with PHP for more than 17 years now and I personally love it.
How I started
I started coding in High-School. Back-then, LAMP stack was the easiest to get started, and also really famous. I ran PHP with no framework, then I discovered the micro-framework atomik then Code-Igniter.
University
In my first couple of years of university, we learnt C and C++ to work on low-level programming, I did few internships in PHP afterwards. In 2014 I heard about Node.JS and got really excited about it, back then it was hard to find good resources to get started with. It got easier and I was really comfortable with it, as I already knew Javascript fairly well.
Python time
At the end of my bachelor (2016), I had the chance to do an internship in a Dutch start-up (which I'm still working as employee now). I worked on a project built with Django framework, which was somewhat challenging to learn because the existing codebase was kind of messy. I really love Python and Django and wish I discovered earlier. It's has a perfect readability, a great community, and it's a very mature language/framework. I realized that working on a project in Node.Js was really hard to maintain and scale, and it always seems hacky.
I made the switch from PHP to Node.js recently due to a few reasons.
When I started with PHP it felt amazing, I could code on my server and the changes would be applied instantly (ikr, really great idea, editing prod code). I owe my love of coding to PHP because the barrier to entry is so low and it really got me hooked. I wrote my first small-scale app in PHP and I had no idea what a framework was back then, so I wrote classes for the database 'entities' (now we call them models). The app became a pain to maintain and I had zero test coverage.
It was around this time that someone introduced me to Node.js. I thought it was a bit of a toy really, for the cool kids. I kept going with PHP for a bit longer and then out of the blue I discovered Mongoose (an ORM for Node & MongoDB). Wow. That was cool. I could define all these methods and validations and all sorts of funky things on models and I thought this was super awesome. No dirty data in my database! The idea of an ORM was something I had never come across before and so I was absolutely hooked on it. Remember that PHP app I was developing? I threw it out and rebuilt it with Node and Mongoose. I'm still developing it now and I've learnt a lot along the way about CI/CD, testing, all that kind of stuff. And I love it.
Recently though, I've been doing some Rails for a client project. It was really comforting to come to an MVC-based framework because it meant I had a good understanding of how it all fitted together. Then it was just a matter of learning Ruby (basically, just write plain English). I've been blown away by how well thought-out Rails is and things like rspec, capybara etc are things I've come to love. I'm still very much a novice on the Rails front, but I know the basics.
When I come back to my Node app, I really miss having a well-designed test suite (mocha is okay, but it pales into comparison compared to rspec). What I do not miss though, is migrations. Urgh. Rails does an excellent job of dealing with that for you, but I still don't like having to restructure the DB now and then. It's not fair to blame that on Rails though, that's just how structured/relational databases work. Another thing I love about Rails is being able to do very advanced model associations like HABTM, which with mongoose is a pain to implement. All those
.populate()s! I'm not going to go on a callback rant because, well, I'd probably fail silently.So, I'm now at the point where I know Express & Mongoose inside out and back to front, but Rails is coming up fast behind them. I'm not entirely sure what to focus more time on, getting Rails up to speed or bashing out more JS. Rails is far more adopted, but I've got this feeling that Node is going to start to become more widespread, even if it's got some serious design problems to overcome first (yeah I'm talking about you, promises/callbacks/ORMs).
Another lang on my radar is Go, so maybe I'll give that a serious try at some point.
To fit in. JS be hot!