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.
Top comments (22)
At the moment I'm mostly in the same boat as you - PHP w/Laravel, Vuejs for front-end magic. I've also got quite a bit of Python kicking around and some golang & nodejs.
Most of the stuff I do is web apps for back-office functions and PHP (esp with Laravel) makes it really straightforward to get a lot of the boring CRUD stuff done in very few lines.
It's also nice to be consistent across apps w/regards frameworks so I'm not spending half a day thinking 'where the eff is that coming from?' when I have to fix/add a feature to something I haven't touched in months. So we tend to default to the same setup unless there's a very, very strong reason not to. That's a big part of the reason we settled on a 'full-fat' framework so that we limit the 'well, this project uses package-x, but this one pulled in package-y' to do the same thing.
I've also got a pretty big 'science' app that is mostly PHP plus about 10,000+ lines of Python, 5,000 lines of JS/node with some C & some TCL. That's a bundle of fun.... o_O
We're also looking to move to a Docker/Swarm/K8s setup for all the code to save the increasing hassles of keeping php/pyhton/whatever/code/libraries updated inside 'regular' VMs. But that's a whole other journey :-/
Wow. May I ask what this "science" project is?
And I'm also going to learn how to use Docker in the near future. I actually have a project that may require it now.
The science project is the control system for a nanotechnology fabrication plant. It sounds way, way more exciting than it actually is ;-)
I've been using Docker with CI/testing (using Gitlab) for a while now - it's been pretty nice. Just taking the plunge to production is a bit more scary!
What's scary about using it in production?
It's just a very different way of working. Having to think a lot more about storage, containers/apps appearing and disappearing, handling 'split brain' network issues etc. Compared with 'I have a VM with my app and DB' :-)
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 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.
I've also used Laravel and Vue, but I'd rather use Nodejs and Vue. I like the idea of using the same language in both client side and server side. JavaScript is also my favourite language so it wasn't a hard decision to make.
So now I'm focusing on Nodejs, Express and all the good stuff related.
Overall, JS is still my favorite language. I wish I had a reason to justify spending time on Node currently. Will see if I can find something.
I did actually try to contribute to a project (Habitica, if you've heard of it). Getting set up took a lot longer than I expected though. And then it threw an error that I didn't know how to fix (after seemingly following the steps), so I ended up giving up on it for the time being.
Sad times. :/
No, never heard of it. I just had a look over it and it seems to a be a pretty complex thing. I’ve never contributed to a serious project. I can’t wait for the moment when this will happen.
Anyway, I don’t think you should call it “giving up”, but rather “postponing”.
My process of learning is pretty slow, but every time I approach a problem, I fell confident.
If I were you, I would read some articles about best practices when using node, express, etc.., and then start looking for projects. It also depends on the span of your knowledge.
That’s just my opinion. I hope you’ll manage one day to submit that PR to that project ;).
Good luck!
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.
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.
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.
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.
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.
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.