I am a senior java developer in the cloud/distributed arch/ microservice area.

I’ve touched on golang in the past, but not learnt it in any formal/extensive way.

I see it cropping up in many java/microservice positions, and I’m curious if this is at some point going to overtake java in my area.

The current benchmarks seem to suggest that if autoscaling is key to your services, golang is the way to, well, go.

I looked at the job market and it doesn’t yet seem to have taken over, but I’m curious how this is likely to play out over the next decade and if quakus for example is likely to become more competitive against golang. Interestingly, golang specific roles on average pay less than java ones in my area.

Let me know your thoughts or if you have any good articles / content on the subject.

  • mvirts@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    10 hours ago

    Are you only asking about the worthiness as a job skill or also for personal satisfaction?

  • folekaule@lemmy.world
    link
    fedilink
    arrow-up
    35
    ·
    1 day ago

    In my humble opinion, being monocultural as a developer is a path to obsolescence. Be T-shaped: know your specialty really well, but also a bunch of stuff more superficially.

    If you have a little hands on experience with Go on top of your Java expertise, you are imo more valuable to your employer. They may even be mid transition from Java to Go, where you would be very useful indeed.

    Besides, it’s just healthy to keep learning new things.

  • Shareni@programming.dev
    link
    fedilink
    arrow-up
    18
    ·
    1 day ago

    I mean it’s a language specifically designed to be easy and quick to learn. Even if you don’t work with primarily, you’ll find it useful for stuff like cli programs, advanced scripts(instead of python), small services, etc.

  • Kissaki@programming.dev
    link
    fedilink
    English
    arrow-up
    8
    ·
    1 day ago

    Do you see downsides to learning it?

    If you can, do it. It’s common enough to be [potentially] useful. If you don’t have a concrete need, then it’s not necessary, though.

  • soc@programming.dev
    link
    fedilink
    arrow-up
    5
    ·
    1 day ago

    There is not much to learn, so just do it? It’s not a relevant investment that would require much thought.

  • hallettj@leminal.space
    link
    fedilink
    English
    arrow-up
    10
    arrow-down
    1
    ·
    1 day ago

    It’s hard to predict the future, but I can point to a couple of indexes.

    TIOBE measures language popularity according to a variety of factors. It has Java on a steady downward trend over the last couple of decades, but shows it as still very relevant. TIOBE does not show comparable growth for Golang. I don’t see much growth in the top 10 for languages that are especially suited to autoscaling. C# looks to be steady as a language in a similar niche as Java.

    OTOH another survey from devjobsscanner that looks purely at job postings shows Java openings as very steady over the last couple of years. It also shows Java as more popular than Golang.

    So I don’t know exactly what conclusion to draw from that. But learning a new language can be a helpful exercise regardless to broaden your perspective, and to keep your skills sharp.

    Personally for the purpose of producing resource-efficient binaries for scaling I prefer Rust. It’s design incorporates some correct-by-construction strategies that promote high-quality code. And it’s well-suited for compiling to WASM so you can do stuff like deploy small services to Cloudflare workers for wild scaling. But I guess Rust isn’t making a big showing in the popularity charts. And Golang is popular for its lower learning curve.

    • 6nk06@sh.itjust.works
      link
      fedilink
      arrow-up
      7
      ·
      1 day ago

      I have been mostly writing C++ for more than 20 years, but TOBIE seems useless (again…) Visual Basic and Pascal have better ratings than Kotlin or Rust? I don’t believe it.

      • misterbngo@awful.systems
        link
        fedilink
        arrow-up
        10
        ·
        1 day ago

        TIOBE merely measures the number of questions asked about a particular language online, which is obviously not exactly realistic metric but people for some reason love to spout it

        • hallettj@leminal.space
          link
          fedilink
          English
          arrow-up
          3
          ·
          1 day ago

          That makes sense. I didn’t find many surveys available, so I referenced the ones I could find.

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    7
    arrow-down
    2
    ·
    1 day ago

    IMO it’s not as good a language as Rust, so I wouldn’t learn it for the purposes of making something. However it’s very easy to learn (at least to a productive level), so you may as well if you want to.

    Just work through go by example and see what you think.

    By far the best thing about Go is the tooling. Language itself is eh.

    • Orygin@sh.itjust.works
      link
      fedilink
      arrow-up
      1
      ·
      12 hours ago

      Yeah the language is not the most sexy but it does the job. The tooling is where the real benefits come to life

  • Ephera@lemmy.ml
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    23 hours ago

    My impression has been that it’s not a good language. That relatively many people try it out, because the initial learning curve is small, only to fall out of love with it hard a few months later, because the low language complexity results in high complexity of each individual codebase.
    Perhaps the most elaborate rant about that experience: https://fasterthanli.me/articles/i-want-off-mr-golangs-wild-ride

    And yeah, personally I care a lot about being able to work with good tooling, so that’s my reason to stay away from it as long as I don’t need it for employment.

    But our industry famously loves terrible languages (see JavaScript, Python, PHP etc.), so if you are just interested in employability, I do imagine that you will continue to find jobs a few years from now. I certainly also feel like it’s well established in ops tooling and cloud services, so there’s gonna be people who continue to write new software with golang in those fields.

  • karlhungus@lemmy.ca
    link
    fedilink
    arrow-up
    3
    ·
    1 day ago

    IMO it doesn’t matter, learning go from Java should not be what excludes you from an offer. Of course if the employer has a choice between two otherwise even candidates then maybe it’d help.

    I think the problem is working with both in a production environment is what is going to set you apart.

    I’d say learn a language that’s really different like a functional or a logic language.

    Otoh I’ve not been interviewing lately so maybe my take is totally off base

  • cAUzapNEAGLb@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    1 day ago

    I think java has enough momentum that it will join in the perpetual pantheon of languages with FORTRAN and C - however with that said, learning Go changed how I write Java for the better, I was able to do this within my java job after convincing the team that a small but neccisarry but not critical side project could be done in Go to test it out - I had a blast learning and writing it, even though ultimately the dynamics of my company kept us in Java

  • Spooky Mulder@twun.io
    link
    fedilink
    arrow-up
    2
    ·
    1 day ago

    RE autoscaling: effective distributed systems design isn’t really language-dependent. Java apps can scale just as well as ones written in Go. That said, I can see there being a case for Java apps not making it as easy to build that way. There’s definitely a lot of mainframe/monolith-oriented patterns in both the standard library and in enterprise Java culture.

    As for the job market and career investment, I’d say this:

    • Keep investing more deeply in what you’re good at. That’s your foundation and what sets you apart.
    • Avoid chasing the “next big thing” based on speculation and trends alone.
    • The next step in your career hinges more on your ability to think and design at higher levels than it does on lateral moves to another programming language.
    • Explore languages and technology that you think are interesting, relevant, or can provide value or elevate what you’re already doing. The main benefit of doing this is to engage your brain differently and encourage change, improvement, and growth. This will indirectly improve your work and help your career.

    I’ve written a lot of Java in my career and studied it in college, and I’ve written one app professionally and several hobby projects and utilities in Go. There’s a lot to like about it, regardless of its marketability on a resume.

    • karlhungus@lemmy.ca
      link
      fedilink
      arrow-up
      1
      ·
      13 hours ago

      I had to containerize an older java app. It sucked, java would take all the memory you gave it regardless, so it was hard to determine memory requirements/limits. It had pretty slow start although this wasn’t an issue for us, logging formatting was a pain. All this was overcome (not by upgrading), it was just a pain.

      I suspect this isn’t true of modern java though - I’d suspect with the hype kubernetes went through a few years ago that it’s just fine now a days.

      • Orygin@sh.itjust.works
        link
        fedilink
        arrow-up
        1
        ·
        12 hours ago

        Yeah I wouldn’t say a java service taking multiple seconds to boot up being scalable the same way that any other compiled language will be.
        There are also the huge “legacy” frameworks that slow down java, the auto magic and more non features that make maintaining any real world java application a pain.

  • CodeMonkey@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    1 day ago

    Not sure what distributed/micro service stack you have, but Go is used a lot for Kubernetes and Terraform utilities, so the client libraries are well supported and there is a lot of sample code. Our main application is in Java, but we have a Kubernetes operator for SaaS instances and a Terraform provider to install it, both written in GoLang.

  • bacon_pdp@lemmy.world
    link
    fedilink
    arrow-up
    3
    arrow-down
    2
    ·
    1 day ago

    Java will likely remain one of the common languages for the next 4 decades. Go is a better language which is why the pay rates are lower. But it is unlikely for Go to replace Java but it is actively competing against Rust to become the replacement for C.

      • bacon_pdp@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 day ago

        Just job posting in this area.

        For the same level of experience the pay order seems to be:

        COBOL > Java > go

        • Orygin@sh.itjust.works
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          12 hours ago

          Depends on the required experience. Most java jobs I see are for junior/medior with corresponding salaries. Go jobs tend to be more medior/senior and thus have higher range.
          Senior java jobs may pay a bit better but there are way less of them compared to go jobs