Where I am currently 🗺
When it comes to web development, I can't say I'm intermediate. I'm not that new to the industry either. But when it comes to what I should use, I sometimes flip between different things.
Currently, I'm a Laravel + Vue user. I started with PHP, tried Meteor🌠 due to a fantasy of using a single language on both front- and back-end, and ended up back with PHP on Laravel (but with Vue added in). Honestly, I may yet end up back in Node, depending on what I find to use it with.
But I'm wondering what stacks others use, and why they tend to stick with them.
Preempting a flame war 🔥
I intentionally am not asking why you wouldn't use a different language or stack. I've come across plenty of arguments (that I tend to shy away from) over PHP vs. Rails vs. .NET w/ C#, and dynamic vs. strongly-typed languages. I'm of the belief that they not only all have their place, but that different languages and paradigms click better with different people. Personality and mentality always play a part in these kinds of decisions.
Regardless, I'm still curious about what draws others to their toolsets, and what types of projects they tend to work on with them.
Latest comments (22)
Honestly I choose tools and languages by their popularity :) I started PHP about 10 years ago and at that time PHP was more popular in my country. Also after some years I started using Angular(AngularJS) at that time. I use Python in some other works for example working with big datasets (I do not prefer to use PHP in this cases :) I don't know).
Theses days I'm trying to learn Golang because it seems that it is more robust it synchronous tasks.
I use Python because it has been my go to language for long and it still makes sense after all these years.
I started using Ruby because of Rails, I can say honestly that I don't think I would have picked it up without Rails. Now I like it and can't wait for Ruby 3x3.
I picked up Go because it made sense at the time due to its selling points (easy readable language, relatively easy concurrency model, single file deploy). I like it but I'm not 100% in love with it.
I use JavaScript only on the frontend (unless you count "yarn run this tool" as using JS on the server :D). Always liked JS, even when it was spaghetti prone.
I'm more in flux on what constitutes my favorite stack though. Learning new things and then bringing them back to "boring technologies" is probably my favorite stack :D
I think it's a wonderful time. More languages and frameworks are popping up than I can count, WebAssembly is truly a game changer allowing people to write hybrid apps on the frontend (especially those ones that don't like JS :D), people are starting to backtrack a little bit from creating SPAs for everything, static websites are back, tools like Phoenix LiveView will allow people to write fast server side web apps.
It's an exciting time to be a web developer, whatever language you use :D
Heh. I guess we're a little bit opposite. For me, the number of languages out there and trends that come and go are a little overwhelming. Of course, I also don't get to do true web development as often as I'd like.
Also, as much as I like the idea of SPAs (being one who likes JS), it really is true that there are client-side issues with the idea of everything being an SPA.
Since you went from Python to Ruby on Rails, I'm curious about what you think of Django. I haven't attempted plain Python or Ruby, or their web frameworks.
I agree, the amount is overwhelming, but experimentation leads to innovation sometimes :D One thing that has truly changed is the death of the Moore's Law and the migration to cloud computing. There's no going back there.
As with everything, they have their uses, it's just that because lots of JS framework are SPA-first, many don't stop to think if they actually need a SPA or not.
I'm going to be crucified for saying this but there's not much difference between Rails and Django in terms of cognitive load. Ultimately they are both "batteries included" MVC based frameworks with a huge ecosystem. The biggest advantage is that Django has authentication and admin builtin, Rails doesn't. But you'll be fine with both, it's very easy to add auth and an admin panel to Rails.
My favorite Python framework is Flask, which is a pluggable microframework which starts from little beyond the handling of request and response and can be augmented with different libraries. The opposite direction of Django and Rails, whose default libraries can mostly be replaced by other options but it usually less common.
Because it solves the problems I care about and want to specialize in, more exactly real time web services, big data and heavy duty processing.
I like it for many reasons: pragmatic, clean, simple, strong typed, easy to test, cloud native.
After many years of PHP and JS hell, some C# and Java, played around with other languages I wish to "retire" in my current stack: Go.
Cassandra, ELK and Redis to have my back, and containers as a fundation.
I'm using Elm and Erlang backed by DynamoDB. The application is deployed on containers in Amazon's ECS.
I've been going with functional languages because it makes tracking down bugs much easier. Immutables, mostly pure functions, and explicit behavior takes a lot of the mystery out of why something happened.
Elm's type system makes rewriting code for new features much easier. Erlang's process model handles problems gracefully.
I'm much more of a "tinkerer" regarding full-stack development. I'm primarily an Android developer, but I like to poke around at various tech stacks for fun, though I really haven't built anything substantial.
I really like the Laravel/Vue stack, mostly because they are both really well-designed frameworks with great documentation. I'm not a huge fan of either PHP or JS, but these two tools definitely make it easy to get past that. I've never really felt like I understood Angular, and I haven't tried React, so I don't have much to compare to.
More recently, I've been playing with full-stack Kotlin, trying to see if I can make it work. Ktor seems like a really great server-side Kotlin framework, and I'm also trying to set up a good reusable build process to use Kotlin in Node, for serverless functions. And then, of course, if I can get it working in Node its should work just as well in the browser. There are Kotlin bindings for React, but I'd really be interested to know if anyone has gotten Vue working with Kotlin.
In general, I see a really bright future for full-stack development with Kotlin as the "one language to rule them all". Setup is currently a bit painful when using it outside of the JVM realm, but it works really well once you've finally gotten out all the kinks and can just start developing.
To be fair, I tried learning Angular also when CodeSchool was still CodeSchool. As interesting as the SPA concept was even back then, I couldn't get past how Angular would turn my stomach.
That's fair.
Honestly, I did at least give a thought to switching to Java recently. Does Java bring that much bloat with it?
Lately it is F# front and back. On the server side, something like Giraffe for API request routing. On the front Fable to turn F# into JS, and Elmish to structure the UI in a way that is maximally testable and easy to reason about. My preferred approach is libraries, no frameworks. It's functional programming, but I don't use much weird/fancy FP things. Just types and functions as much as possible. So nice to write and maintain.
For web apps and web services, nowadays I use mostly nodejs + express in the backend and Hyperapp in the frontend. I like working with Javascript because, despite all its faults, (1) it's really easy to start a new project and get something up and running, and (2) a lot of people are trying to stir the language in different directions and it's becoming more and more of a chimera language, which I don't like per se, but that means that it's easy to write code in my preferred style.
For most other things I use Python. I guess I mostly choose Python because it's readily available in all major Linux distros, which means that I can run my stuff anywhere I need to without any prior set up. Besides, I find that it's a nice language and it's pleasant to write code in it.
For when I need to get things done fast I use what I am most comfortable with, unless there is a very strong argument for something else. That is Ruby on Rails. The fastest way to get something off the ground and I'm surely not saying that just because I'm a Rails dev in the daytime.
I like to learn something when I create side projects though and since I work with Ruby on Rails in my day job then I'm quite good at it. For my current side project I use Elixir+Phoenix because that is something I'd like to learn. So far I'm quite happy with it.
I've heard the same from someone local (sans Ember). Will have to give it another go when I have a few hours.