Disclaimer : When I say 'I searched' or 'I found' or anything like that, I accept that I might not be looking wide enough. Please correct me in comments if I'm wrong 😅
I was looking for internships recently on a certain site, and I knew that most of the web related internships there are of either Python-Django, node-express or PHP related, along with a handfull for Java and other languages.
During the search, though, I came across an unexpected Golang internship. Curious, I searched and found out that there are a couple of other Golang related internships as well (some of them outside web development). Now as I have learnt Rust, and not Go, I searched if there are any Rust related (web or other) internship on that website, and there weren't.
That made me question,in general, Even though Rust seem (to me) just as capable as Go, are there less opportunities (right now) compared to Go?
I understand that Rust has quite steep learning curve compared to other languages like JS,Python,C (Can't speak about Go, as I haven't learnt it yet 😅). It was definitely one of most feature-rich and complicated language that I have learnt, but it seems to be worth the guarantees it provides.
As far as I have explored (It may not be much), Rust seems to be just as capable as other languages, and even though it was initially aimed as System Programming Language (One of the reason I chose it over Go to learn 😄), it has quite wide spread applications, from web-servers and WASM to game engines. Then, Why does it seem have less wide spread actual use?
What do you think?
Am I looking at the wrong place, and there are , in fact, decent amount of opportunities in Rust?
Might it be because people think it is a C-like language which should be only used for low-level programming?
Is it because of its steep initial learning curve, people might not be interested in learning and adopting it?
Let me know in comment your thoughts, and please correct me if you think something I wrote is incorrect, or is a wrong perspective to have.
Thank you!
Top comments (12)
I don't think you can really justify, from a business perspective, the learning curve of Rust unless you're talking about replacing C/C++ (UB and memory safety make it worthwhile). Unfortunately the C/C++ world doesn't seem to move very quickly.
Unless you're in a tech hub its going to be very hard to find a job in Rust where you live. If you absolutely want to find a job in Rust you are probably going to have a better chance landing a remote position.
I'd agree with that. Also a couple more points.
When you are talking about the web applications, there are a few considerations that may negate any advantage Rust might have.
As I see it, three big advantages Rust has are safety, speed and correctness. Most modern languages that have a runtime with a garbage collector, and that is safe enough for most web app/service projects. Most languages run fast enough for most projects. And, to be honest, many people don't seem to care much about how helpful their programming language is at enforcing correctness.
Businesses care about other things as well. The reason there are more internships in JavaScript, PHP, Python, Java, etc. is because those languages have huge communities. Large communities mean a large talent pool. Those languages have been applied toward the web domain for a lot longer than Rust. They have a large ecosystem of libraries dedicated to solving problems in that domain. They have many many experts in that domain. Rust is just getting started (although it's picking up speed).
Look at how Go is making so much ground in the same domain, with only a small head start. Go was designed to make development easy, including concurrency. In contrast, Rust's design is focused more on providing high performance and safety.
For now, you see Rust being used where companies think they will get significant benefit out of using it.
I don't think Go is a good comparison since it has a much larger company backing it. I would attribute most of its momentum to the marketing it has had from the beginning.
Kotlin is a bit closer, but it relies on the existing ecosystem (Java) more than Rust to make adoption easier. Rust can call C/C++ but you normally want to write a wrapper, versus with Kotlin you can more or less just import the Java library.
Taylor Fraley, I can definitely understand what you're saying about the use of Rust in web. As of my knowledge, there are two "prominent" frameworks for web in Rust, Actix Web and Rocket, and out of them Rocket uses rust nightly, which can be a high risk in production (I saw a talk by creator of Rocket, saying he can't understand how some companies are actually using Rocket in production)
I'd say safe concurrency is also one of focusses of Rust, but maybe the cost of learning is high for the general use, whereas Go provides it without much difficulty, at tread off of having a GC , which , as you said, is decent fast for most applications.
If you know, can you give some examples of in which domains companies might be currently using Rust?
And thanks for sharing 😊
These are just my own observations. Some of these are from actively monitoring jobs at companies that are actively using Rust :). Some of them are companies/projects that have written about it. There are a few domains I've seen take a fair amount of interest.
Blockchain / Web3 - Parity (and anything that builds on Substrate or Polkadot), NEAR, Protocol Labs (IPFS/Filecoin/libp2p), Libra, Purestake, Chainlink
There seems to be a lot of interest in Rust in this space.
Various kinds of Distributed Systems - Kraken, Dropbox, NPM, Fastly, Cloudflare, Red Canary, Microsoft
Kraken is the one company I've seen that seems to be putting a lot of active effort behind using Rust for a lot of things, including microservices and desktop GUI development. Many are more like Dropbox or NPM, where they built/rebuilt some major system in Rust with success. Fastly has been working on webassembly based edge computing using Rust. 1Password has a project to build their core functionality into webassembly modules to make them reuseable.
There are probably plenty more that are experimenting with it in some way.
There are other domains where there is plenty of interest, just not mass adoption. Game development (Embark Studios), embedded development, and DevOps tooling (FP Complete) are good examples.
Oh, I forgot to mention this.
First, I am pretty sure Rocket no longer requires nightly. That's a pretty recent change.
Second, there are actually quite a few really good web frameworks.
But the point you made is still VERY true. Everything in the space is so early in development that it seems pretty risky to use it in production.
Yes Jonathan Boudreau, considering the business point of view I can understand what you are saying. Would it be correct to say that as Rust provides considerable benifits only when trying to replace C/C++, it is inevitably considered only in system programming related parts?
The only company who I have heard to be working majorly in Rust , is Oxide, which is aiming to create open source firmware , using Rust. Even then it is recently founded, so maybe, in general, it'll take quite some time for "large scale jobs" the be available in Rust 😌
Thanks for sharing your thoughts !
Generally speaking, I don't think there is enough benefit yet for people to switch for web development. I wouldn't limit Rust's use case to just systems programming though. It has a lot of potential in desktop development (e.g., QT development), game development, and embedded.
Indeed, embedded seems to be the use case for some of the companies here in the Netherlands. But it will take at least 5 years till rust will be as viable as Java for web / microservices I think.
It probably will ever really be used for web development with the exception of very niche, performance-sensitive use cases. This is what npm decided to do for a few of their services. In other words, Rust is already there when it comes to microservices.
Even if the ecosystem gets pretty big, Rust is a low level programming language. It makes it very obvious what is happening to the memory of the program, which is not something you care about most of the time when writing a web service.
Yes Jonathan Boudreau, even when I think of Rust in Web related works, Most advantages I can see are in type system and catching compile-time errors. There were few incidences where I called redirect on res object instead of req or incorrectly called a method on an object in python, which were only detected when I hit that route while testing. But with Typescript for JS, and introduction of type annotations for python, these advantages in Rust doesn't seem to give much benefits compared to cost.
Thank for sharing your thoughts Gerard Klijs 😄
There are a lot of misconceptions about both Rust and Go, but I think the biggest is that they're competitors. They've been complimentary since day one, because they solve different problems.
Even the major rewrite stories (cloudflare, dropbox, etc) will tell you that it's not one or the other (both serve web traffic and backend logic on different stacks) because it's still about "the best tool for the job," in the end.
When you're looking at web traffic, Go is in its element. Highly concurrent, simple grammar, fast compile, quick development. Great!
But that's not going to handle the problems encountered on dropbox's storage layer. That's not web traffic. Why would we expect the same design to handle both? We shouldn't!
When we're in the zone of low-level data/storage interaction, C++/Rust are in their element. They're going to make every bit and byte count, as fast as possible. You pay the price in extra development time, because the rewards are huge performance increases in the low-level operations.
The right tool for the job. Hammer, crowbar, or programming language: they all know when to shine.