Ask HN: Advice for (probable) final career language change

3 points by code_Whisperer 2 years ago | 13 comments
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.

  • ignurant 2 years ago
    I would suggest that the Rails scene is at least worth checking out.

    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!

    • code_Whisperer 2 years ago
      Thanks for the thoughtful feedback. I have a feeling I'd probably find a little joy again by using Ruby/Rails. The only thing that gives me pause is performance. From what I recall, anyway, but maybe it's improved since a investigated a few years ago. Will give it a shot, thanks!
    • warrenm 2 years ago
      > - good database interfacing/support

      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" :)

      • code_Whisperer 2 years ago
        Thanks, Warrenm, for your comments and questions. In the past have used far too many languages to list. What I'm currently using is mostly .Net/C#, but as explained, I grow weary of the constant tweaking, the constant confusing releases and naming conventions, etc. Yes, I will stay in webdev, and location matters not, as I work for myself and have managed to service clients all over the world, often without ever even meeting face to face. My clients range in size from single employee startups to over a dozen multinational corporations.

        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.

        • PaulHoule 2 years ago
          Java is a choice which isn't too different from .NET in many ways except it more cross-platform. Every company I've worked for in the past decade that is running production servers has been using JVM languages for back end services.
      • warrenm 2 years ago
        You didn't say what language(s)/framework(s) you're currently using ... so it seems likely someone's going to suggest something you're already doing

        What have you used in the past?

        What are you using now?

        Do you "have" to stay in webdev?

        Where do you want to work (what's wanted/needed in Reno might be pretty different from Marrakesh or Bangkok)?

        What size customers do you want to keep (suggestions for maintaining a rotating billet of 20 companies with fewer than 20 employees each will likely be [somewhat] different from wanting 1-2 "big" customers that'll keep you billing more-or-less half-to-full-time each on their own)?

        • warrenm 2 years ago
          > - should run easily on lower cost server environments (think Linux not Windows - but might be nice if it is able to run on either)

          Honestly ... 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)

          • warrenm 2 years ago
            > - must be fast/efficient and scale well

            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?

            • PaulHoule 2 years ago
              For personal projects I love writing servers with aiohttp in Python. I'm not so sure how these would handle heavy load though.
              • code_Whisperer 2 years ago
                Thanks for the feedback. I will check it out.
              • warrenm 2 years ago
                > - Reasonably easy to learn and get started

                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)

                • pestatije 2 years ago
                  Any reason why Node, php are not mentioned?