Hacker News new | past | comments | ask | show | jobs | submit login
Has the market spoken? Time to pick up Golang and Rust?
44 points by simplecto 29 days ago | hide | past | favorite | 63 comments
So it's been a decade-long round-trip from IC to management to senior manager back to IC.

And in the time you see some skills develop while others atrophy. And some new skills appear on the market that I'm shallow in.

In this case that could be Golang and Rust. (Lets not talk about how I feel about the Javascript ecosystem)

But, man, it is hard to let go of the cozy warm and lazy blanket Django and the python ecosystem gives us, isn't it?

The irony here is that I'm incredibly productive in the Django stack, but relative to the many jobs out there -- it seems many Rust and Golang positions go unfilled.

So, what is a guy to do? Daddy has to eat, and I am mercenary at heart.

So here we are -- back on the learning curve and ramping up on Golang and Rust.




One good thing about the Javascript ecosystem: if you don't like it, you only need to wait 6 months for it to have changed completely!


Ugh old joke but:

1. React is 11 years old. Even "modern" React with hooks and such is more than 5 years old.

2. Express has been the backend server for Node for over a decade and it hasn't had a breaking semver change in 7 or 8 years.

The front end bundler ecosystem has been a hot mess forever though.

Compare this to Android which somehow manages to break its build system ~every few hours~ at least once per year.


React is wildly different from 11 years ago, react router is wildly different and the way state is managed in react is still constantly changing


You are right, I forgot the mess that is React Router. I was so sick and tired of router churn when I was heavy into react, it is sad to see it hasn't gotten any better.

The situation with React Native back when I was doing RN was horrible. I ended up with 2 major breaking changes to the main router package, and I burned so many weeks of time trying to keep up to date with routing changes. It is super annoying that such a simple thing has so much churn. The solution doesn't have to be perfect, it just has to be good enough, with well documented warts and workarounds, and lots of sample code!


Yeah, I hear you. I get frustrated because I would like to dig again into frontend, but everything is very much in flux, so unless I am constantly developing on the frontend, I am wasting my time because I would use it only occasionally, so things will change again by the time I work on a bigger project


> The front end bundler ecosystem has been a hot mess forever though.

The bundler situation wasn't ideal for a few years, but I've been really happy with esbuild lately. It's incredibly fast, has zero dependencies (besides the Golang sys module which is a de facto part of Go's extended standard library), and is much easier to configure than Webpack. I even heard DHH praise esbuild on The Changelog podcast recently, and he's a notable anti-build evangelist.


I love the joke, but tbf React and Next.js have shown some serious sticking power so far, and show no sign of slowing. Also, JavaScript is so 2022, TypeScript is mandatory now IMO!


Going from Python to Go was very easy for me, and I do feel much more productive. I don't want to work with Python ever again.

Rust is a beast though, I tried picking it up several times, but lose interest quickly. The language is interesting, but the learning curve is a problem.


My journey has been from JVM (Java, Scala, Kotlin) -> Go -> Rust, writing web backends, APIs, integrations etc.

I don't write 'clever' code, just sticking stuff into Postgres/PostGIS/Neo4J/Clickhouse, some basic business logic and math, returning JSON etc.

I have found Rust to be super-productive and a joy to use compared with Go. I don't use the complex parts of Rust; no messing with lifetimes, a little cloning and using Arc<> to share things across threads/tasks.

GitHub Copilot in Jetbrains RustRover is very effective at generating accurate Rust CRUD code, handler methods etc. I don't bother with an ORM because it is so fast to write the SQL queries. Having said that, Copilot sucks at anything even slightly complicated and you take a risk asking it to generate code you can't validate quickly.

The whole of Rust might be a beast, but I have had a very productive couple of years just using the 'boring' bits and it took a week or two for me to be more productive than in Go writing bog-standard web backend code.


> it took a week or two for me to be more productive than in Go writing bog-standard web backend code.

am i understanding that correctly? you started learning/writing rust and it took 2 weeks to be MORE productive? if so, i'm just in awe at your ability to pick it up so fast.

I'm an jr dev so it's understandable that it's going to take me a lot longer but damn, i've been at it for over a half a year and I wouldn't say I'm anywhere near more comfortable/productive than my previous languages. Whatever you're doing, keep doing it. much respect.


Regarding Python+Django vs. Go, I have an opposite experience. Concurrency is handled much better in Go but that's about it. ORM, web framework, any library is generally worse. On top of that, I miss my exceptions.


This is exactly my experience. I would just add that I do still use Python, because all tools have their uses. I use it for small scripts, and nothing else. Just places where compilation doesn't really make sense.


Same. Python has a certain elegance when writing it, but the lack of static typing, a nightmare for dependency management (recently had to do a change in Python and spend about 80% of my time getting the dev env en dependencies right) and runtime compilation (slow and you'll error in production) have put me firmly on the Go train.

I do want to do Rust in production too. I'm dreaming of moving data engineers to a staticly typed language (crazy to transform data with dynamic typing) and Rust with Polars seems like a great match. The learning curve is steep though.


My advice would be to learn Rust only if you feel you would enjoy working in Rust and/or enjoy solving the types of problems that Rust is good at. I love working in Rust, but it's not for everybody and without intrinsic motivation you're probably going to bounce off of it.


That's my general attitude about programming, but the invisible hand supplies many bitter and uninterested software developers to meet the industry's demand.


OTOH I know many that are not enthusiastic about programming but are massive assets to their company even though their job partially involves programming. Many of them make more than I do.

examples: SRE, devrel, management, front-end/design, support, sales support, ...

Most of these are pretty good Python or Javascript or sh programmers. None of them are good at C, C++, assembly or Rust.


Rust is a very ungrateful language if you're not trying to solve Rust-like problems.

Go has the quality, like Python, of being passable even if you're indifferent.

Go is a "less spicy Java", and Java isn't even spicy.

(Also, I code Rust for a living, and I absolutely love it, but I understand why others might not.)


very pedantic point: the programmer in your example is uninterested in programming, as they don't like enjoy learning software development, but not disinterested in programming, as they do have a financial interest in software development


Thanks, I love the English language.

Edit: you know, I don't think you're being merely pedantic, as this precise difference is the exact crux of the issue, isn't it?


Well I’d encourage you to follow your dreams/preferences and adjust your spending accordingly, especially now that the recent mini-shock reminded us that absurd salaries can’t always be the norm, but;

IEEE puts out an incredible report on this stuff every year: https://spectrum.ieee.org/top-programming-languages-2024

The boring answer based on current demand is that the old languages are still dominant. Of the new languages Rust and Go are indeed at the top, but they’re still ~below C++/C, Java, and C#. OTOH, they are definitely near the top of growing languages, which is probably where your sense of them being “chosen” comes from; if you’re cynically trying to maximize long term career earnings, IMO either would be worth some investment.

The elephant in the room is, as you briefly mentioned, Python and its relation to the AI boom. There’s lots of fantastic shovels being made in other languages (eg llama-cpp), but the huge majority of new libraries are written with python APIs in mind (eg VLLM, Langchain, BentoML, and ofc the classics like PyTorch/Keras, SciKit, and numpy/pandas). Again, speaking cynically, I think there’s a lot of money flying around the python space right now.

Finally, I think it’s worth mentioning my take on the old refrain: languages aren’t really that different so don’t stress about it, but it can be worth it to invest in new paradigms/spaces/application types. It sounds like you’re not a fan of webdev, but instead of hyper focusing on picking a language, maybe consider picking new spaces to explore! I mentioned LLM shovels (aka quantizers, inference platforms) above, but there’s also some other booming spaces such as CRDTs/LocalFirst and spatial computing, to name my two faves.

Best of luck! Exciting time to be a member of the puzzle-solving class :)


Anecdotal, but I spent 4 hours learning Go and then started on a fairly large non-trivial project later that day.

That kinda sold me on Go.


If you roughly understand *nix and can think about things in terms of the unix philosophy it takes no time at all to grok Go.

It's basically C if it were repackaged for writing http-aware services.


In my spare time I started to learn Rust, and it has been great for me. While I think the language is great for many things, the largest problem is the learning curve.

So that means it's very hard to introduce in a company where the focus is on getting code out there as cheap as possible. Especially when the majority of work is done by contractors which in general aren't hired to learn new stuff, but more to execute work with existing skills.

Personally, once I became proficient enough in Rust my way of programming changed, and this actually became an issue when having to write other languages. Learning to write Rust actually increased my cognitive load when writing other languages, as I am constantly worried about not having my safety net.


> very hard to introduce in a company

My experience as well. The lack of experienced Rust developers on staff, plus the need for build systems that compile to all target architectures, represents a real cost. That often doesn't surpass the benefits. Cheaper overall to just run the same old interpreted Python code, even if it's slower and uses more resources.


You have management experience. Your competitive advantage isn't your stack: it's your ability to understand context. There will be plenty of jobs in anything in the top 10: apply to all of them and if you get a bite, learn enough of that language to pass basic problems.


This is easy to verify: go to Indeed.com and see how many Rust vs Django vs Golang jobs are posted. Do the same on LinkedIn or Stack Overflow jobs. Django + React with solid SQL skills is the best most marketable skillset in the US. Rust is out there but its mostly small startups ... growing companies shouldn't pick stacks that aren't popular if they want to hire alot of devs.


I tired the same with CEO vs software developer and found far fewer CEO positions. Maybe you should give up on software entirely and just work with CEOs?


Its nothing personal homie. There aren't many Rust jobs. By all means learn whatever you want, but if your goal is a job, your time is best spent learning Python/JS.


Seems my time would be better spent becoming CEO. Why become a poor programmer? I may as well flip burgers at McDonalds if pay is of no concern.


I guess it depends on the area, but I thought Rust jobs were still hard to come by even today?

For jobs, ecosystem and general productivity my go-to is always Java/C#/Go, if you learn one of those I think you'll be set, so Go in your case. The learning curve for Rust is similar to C++, much steeper.


I found it pretty easy to go from Python to Golang. I'm still learning Rust, and finding it to be much more sophisticated that Python and Golang.


I love Rust and I’ve watching the market for years too. Whenever I look, it seems to me that most Rust jobs are still in the crypto area, with a few more systems programming popping up recently if that’s your area.

Even though I’m already very productive in Rust for typical microservice backend scenarios, none of those jobs are close to my areas of expertise.

So I wonder if Rust jobs go unfulfilled not because of lack of rust developers but because the job market doesn’t match the reasons why some developers learn Rust in the first instance.


> none of those jobs are close to my areas of expertise.

Only in the same way that a cook that has spent his career in an Italian restaurant doesn't have expertise in cooking Chinese food. An employer on the hunt isn't going to care about such trivial differences (HR box tickers might, but crypto startups probably don't have that).

Granted, I can understand why you'd be leery about working at such places.


Python has recently taken over as the top language on Github.


We’ve been a pretty solid TS, C#, C and C# shop which was in the process of moving some TS and all of our C# to Go to make our language package smaller. Go was a good choice for us, it’s not better than C# in any way. Then we had some organisation wise changes in strategy, and now Python is our strategy. (Still with C (sometimes Zig), and TS in our single frontend. Anyway this meant I recently had to do my first work with Django and boy was that… well I guess it was my Ruby on Rails moment? It’s so productive… Sure, it’s setup like a Go project more than a Django project, we use Django apps more like Go modules and we’ve opted for ninja-Django for the API, so it’s not exactly Django. It’s still really easy to be productive with, however, and now I’m not sure why I haven’t crossed paths with it before.

That being said, it’s very easy to get into Go if you know Python. Especially coming from an opinionated framework like Django. In my experience the people who have the hardest time getting into go are Java/C# developers who don’t appreciate the core Go focus on simplicity and having absolutely no “magic”. Which is understandable. Getting into Go from Python is different because Python is terrible, so a lot of the opinionated simplicity will most likely make you wish Python had parts of it.

We did some PoCs with Rust to see if it was worth adopting instead of C. We found it wasn’t for us. I mentioned Zig, that is because of the interoperability with C, it’s not something we plan on fully adopting any time soon.

As far as “future proofing” goes, does it really matter? If you’ve been a developer for years you’ll easily be capable of picking up Go and Rust. Of the two I personally found Go a little more challenging to be effective with. It’s easier to get into, but getting concurrency right (not being a memory hog) wasn’t trivial for us in the beginning. You should also look at your local job market. I think PHP would be the best fit for a “mercenary” in my city. By comparison I don’t think there has been a single Rust job posting for a couple of years.


Another language that I have categorized as a peer of Go and Rust is Swift. Aside from being Apple-centric, and having a bit of mismanagement/bloat in its recent technical history, can be a very productive, safe, and ergonomic language. It can be run outside of Apple OSes, though YMMV, since many libraries assume that Apple frameworks are available.


Not sure why people focus on their stack still. Just build stuff with what you know (and like). Everything is fast enough, scales enough. Just maybe you cannot find people if you grow for some choices, however, if you don't grow enough (chances are you won't anyway), it can be an example; we don't interview js stack or python stack people because everyone is that, so there is mostly terrible quality. If someone applies for Haskell or Common Lisp, it's generally just automatically good and often excellent even.


You started by saying that you don’t understand why people focus on stack choice and ended by saying that you never interview people if they have chosen the wrong stack. Do you not see the contradiction?


As you know from management, it depends on what you are optimizing for.

Are you looking for the programming language with the greatest number of available jobs?

Are you looking for employment at a language-fluent organization like FANNG?

Are you trying to prematurely optimize for future relevance?

Are you looking for the highest paid programming roles with niche specialization in a specific language?

Are you trying to develop for a particular platform (iOS/Desktop/Browser/Server)?


"it seems many Rust and Golang positions go unfilled."

I was under the impression that everyone wanted a job writing Rust, but had to settle for making React components. Point me to these unfulfilled Go jobs please. :)


Both might be true. I've looked at what is out there for Rust and Go and it seems there is a lot of the activity is in foreign countries with jurisdictional (and maybe even cultural) barriers to working there. They can't fill the jobs and we can't fill them.


I am curious as well as someone exploring switching back to an IC role.


Pick them up for what? Web development? I'd pick up PHP instead if you need a job.


Rust definitely is harder to pick up. I’ve been working on my rust, and on paper I’d like to use rust for everything, but I can move 10x faster in go for far less than 10x the runtime overhead


Learning something just to get a job takes the fun away and what is it worth then?

I'd recommend to maybe start with something fun, like doing some game development maybe with wasm...


Why is game development fun? I mean not that it can’t be, but why it specifically. Past some experience that OP definitely is, there’s fun in much more areas and in programming in general (I say much more, but gamedev may not even be included into the set). Personally, a game is probably the last thing I’d program if given lots of free time and a PC.

Edit: I realize it’s an example, just babbling here


Most of the time games are for fun. Thats only partly true for many other thing


A lot? The fun is in solving a problem.

Maybe you have a good problem of your own to solve, but in my experience the most interesting problems are usually those that other people have.

Solving someone else's problem is what a job is.


I think you misunderstood... Maybe it's because I'm not a native speaker.

I meant it should not be a pain to learn a new language just because you are desperately trying to get a job with it. Do something fun, regardless whose problem you are solving and the learning experience will probably be much better.


usually when you ask people "golang vs rust" they would say "it depends..." so let me ask you golang vs rust for a very specific use case "building a trading terminal that displays orderbooks, bids, asks, spread etc from multiple exchanges" what kinda backend would you choose for this? golang or rust? and especially if this has to work in a web server environment?


It depends...

But the first followup question is: For each choice, what are your risks if you were to find out you chose wrong?


well i guess it ll affect the customer in some unintended way if I go with the wrong choice


In what way, though?

If you choose Rust, and it turns out to be the wrong choice, how will the customer be impacted?

If you choose Go, and it turns out to be the wrong choice, how will the customer be impacted?


since i am not familiar with both languages, i have to ask. What makes one of them a right choice over wrong? How "well" do they handle concurrency each? What limitations do either of them have when scaling?


> What makes one of them a right choice over wrong?

Realistically, there is no such thing as a wrong choice, only different tradeoffs. I assume "wrong" here means wishing you made different tradeoffs later on. But will you feel real consequences if that happens, or just a casual feeling of "I wish I'd have done it differently, but oh well" in passing?

> What limitations do either of them have when scaling?

What, specifically, are you trying to scale? What scale-related problems do your customers have?

Do you even have a product yet? If no, perhaps the best tradeoff you can make right now is the one that compels you to get started instead of worrying about it? Ask yourself: Will you be more apt to actually build it if you choose Go, Rust, or perhaps with another tool entirely? It doesn't matter if X is the unquestionably best choice if you never get around to using it.

You might still want to be mindful of what risk there may be. I expect you can tell me what risks there are if you chose Brainfuck, and I expect you would tell me that is a risk too great. But, without understanding your problem in depth to know what nuance needs to be considered, there is probably no meaningful risk difference between Rust and Go.


Java has finally gotten pretty good and it will get even better when Valhalla / value types gets out of preview.

Still demand.


If all you care about is income, focus on C, C++ and COBOL. Those jobs are probably never going away.


You write well :)


In Golang, you have to learn to be dumb, because that's explicitly and deliberately what the designer said about the intended users of the language and how it's designed.


Deal. Trying to pretend to be smart to get along with the Javascript people is tiring.


not a fan of the JS or its community either, but there you have objectively better languages and communities like TypeScript

likewise for embedded and backend Rust and Kotlin are objectively better languages and communities than Go


If I were actually smart I'd use something like Idris or Coq. But it's just software development, not rocket surgery. I'm good with being dumb.


I see a lot of Rust projects in the market, a lot of projects done and integrated in other languages (pydantic, ruff, etc...)

From Go I only saw a promotion in Google ? now is finally abandoned?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: