Ask HN: Advice for (probable) final career language change
Looking for advice. I've been doing dev for decades, which makes me an old. Much of the contract biz out there is no longer using the languages or environments in which I am highly proficient, so it's time to either retire or make a change. And it ain't gonna be that first one. I figure that at my age, I have maybe one big language change left in me, so I want to get it right. My field is web dev, and it's where I fit best. I have no intention of going to work as an employee anywhere, so corporate acceptance/usage is not part of the formula. Most of my dev experience has been deeply Microsoft based.
So, for the purposes of web application development and my own SaaS development projects, where do you (based on your own experience) recommend I look?
I am thinking perhaps Go with a good web framework, or maybe Python with something like Django, for awhile was thinking Ruby/Rails but that scene seems to be waning (or maybe not?) but am seeking feedback.
Goals:
- Reasonably easy to learn and get started
- framework needs to have decent security baked-in
- should run easily on lower cost server environments (think Linux not Windows - but might be nice if it is able to run on either)
- good database interfacing/support
- must be fast/efficient and scale well
Side note: I do love C# as a language, but have grown weary of the server expense and also the seemingly endless tiny technical problems that require - what feels like - Stack-Overflowing and then tinkering and then tweaking on the server to 'fix'. I am looking for languages and environments that generally "just work."No flame wars, no evangelism. OK, go.
12 comments
[ 0.25 ms ] story [ 43.0 ms ] threadHonestly ... Windows servers aren't that expensive to run - they're not quite as lightweight as a Linux server can be, but they're not especially "expensive", either
The difference in a 4 CPU, 8 GB Windows box and a 4 CPU 8 GB Linux box is at most licensing ... but even that's minimal (commercial Linux support is basically the same cost as Windows)
Need to define all those terms :)
"fast/efficient" to ... what? Run? Write? Maintain?
What is your benchmark for determining "fast" or "efficient"? Why that standard, and not another?
"scale well" ... how? In what direction? Take advantage of more cores? Take advantage of more server instances? Take advantage of better storage speed? How "scalable" do you think your development needs to be? 1m hits per second? 1000 hits per day?
If you've been programming as long as you say you have (and I have no reason to doubt you), then basically any language/framework will check this box
Python, Rust, PHP, Hare, Go, Ruby, Swift ... they're all accomplishing the "same" thing (albeit in slightly different implementational manners)
Can't think of any more-or-less "modern" language/framework that doesn't have "good database interfacing/support". Something lower-level like C++ or Java may not have it "baked-in", but it's pretty easy to "add-on" :)
By "fast/efficient" I was mainly speaking about speed of execution, although speed of development/maintenance is always important. Fast/efficient means (generally, and in my case) be able to handle thousands to tens of thousands of simultaneous users on a single web server. Which I currently can handily do with no problem.
By saying "scale well" I realize that I am addressing a different skill set and cracking open a completely separate set of topics, but in general I was targeting the frameworks with that phrase. If a framework already has features baked-in for horizontal scaling then that would be a plus.
In my experience, Windows servers are always more expensive and often require a bit more horsepower (CPU and RAM) to get similar performance. Not only that, but (again - in my experience) I must then add additional solutions that generally cost more in a Windows server environment (WAF, firewall, monitoring, etc.), and which can often be had "for free" or low cost with a Linux solution.
As for your comment about "basically any language/framework will check this box," I would respectfully disagree. Although I am far from feeble-minded, I am - as mentioned - older. And even though I feel that I am as sharp as ever, growing older brings a certain resistance to change. It's not that I CAN'T learn new things, it's that I DON'T WANT to spend a lot of time and frustration making the change. If you are saying that all languages and dev environments have a similar learning curve (which I doubt you were saying) then I would have to disagree based on real-world experience. Learning APL and Lisp were very different from learning Databus and COBOL and Pascal. Learning C++ is very different from learning Cold Fusion. Etc.
But your points are well taken. Perhaps my questions are simply too broad. I was just hoping to open a discussion about tools and frameworks that people have found to be fast-executing, relatively easy to pick up, and which might bring a certain amount of joy back to web programming and getting things done, rather than being mired in minutiae. As an example, I've just seen a recent post here on Sveltekit/Svelte, which I am now researching. As another example, I've frequently heard people attribute a certain amount of happiness or joy to using Ruby/Rails.
That sounds nice.
I’ve seen a number of people move from .NET or Node to Ruby and Rails and thoroughly enjoy it, with little desire to go back. For reference, the last 12 years I’ve worked for a company that was traditionally .NET. In the past few years, we’ve been choosing Rails instead. Once you know its conventions, you can really fly. It’s very mature and doesn’t often change in frustrating ways. What I learned in 2014 is still very relevant today.
Especially on small teams or solo, it’s amazingly productive. The out-of-the-box experience gives your users the feeling of a modern SPA without actually being one. Instead, it’s built like a .NET MVC app with standard resource rest routes and Razor views. Significantly less boilerplate. Hard to describe, but very clever. It makes me feel powerful, and I really enjoy programming with Ruby.
But maybe it’s not what you’re looking for if you want a single final frontier to ride off to. Some people really dislike Ruby’s dynamic nature, and Rails’ mysterious-seeming clever conventions. (Though, note, it’s not magic, it’s just clever Ruby code. Everything can be traced and explained). Other languages have a larger market share and perhaps more excitement. But, your described use-case of solo web-dev moots that point.
Consider looking through https://rubyonrails.org/ to sniff it out. Watch that video to see if it jives.
https://gorails.com/guides is a great resource to learn how to set up a dev environment, with tons great modern content.
Whatever you choose, good luck. I hope you find a great fit!