to survive startup, you need a large pool of talents, mature and verified and boring stack, easy to find tutorials, etc. The least thing you want is to spend cycles on fancy new bleeding unstable languages to build your earth shaking product.
Forgive me if I'm quoting you out of context but the article mentions receiving 4000 applicants over 8 weeks time. I've hired (primarily) for Java and DBA positions, and we would be absolutely thrilled if we got even 40 applicants.
You could just filter the CVs for Rust experience and then take the most impressive 10 or 100 to interview.
Many people are searching for Rust jobs, but few have a really strong experience with it.
Where does a language magically go from "new bleeding unstable" to something you think is suitable to use at a startup ? Rust 1.0 was in 2015, seven years ago.
Do you think a startup should also avoid the "fancy new" ES6 with "let" and arrow functions ?
They all miss their 5 million LoC mudball at the bank, because that's all they know how to do.
All three of our services are currently written in typescript with no plans to change, but I've earmarked the gateway as "maybe we'll rewrite it in Rust in three years." It's so small it's nearly trivial (so a rewrite of that specific service will be quickish) and infrequently changed (so hiring won't be as big an issue), it deals with low latency IO-heavy workloads (so we'll possibly want a language without GC pauses), and we really don't want it to break (so it's worth more effort per line).
Not sure how a hybrid approach will work.
GC pauses really become a problem when you have long-lived objects in RAM. A generational GC (which pretty much all of them are) is designed to collect short-lived objects extremely fast.
Rust definitely has its use; but in the case of a startup making an IO-heavy product, you're going to be better off spending your precious resources on a slightly faster computer instead of struggling with Rust's learning curve.
This just isn't true. Node is pretty terrible even at IO heavy workloads, especially if you have servers with many cores. Any benchmark will confirm this.
But .NET or Go are very fast for typical I/O bound workloads.
> FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal.
To further my point: .NET and Java are amazing when it comes to performance for most cases. You get a mature ecosystem, large developer pool, fast runtime and all the comfort that GC offers.
I'd argue that choosing Rust for most startups is outright irresponsible.
> I'd argue that choosing Rust for most startups is outright irresponsible.
I feel the opposite and I run a startup using Rust. If I could go back I'd use Rust in more places, not fewer.
https://github.com/grapl-security/grapl
https://github.com/grapl-security/pulumi-hcp
Whish you guys success.
Also node will only perform well if that IO is offloaded to the kernel or CPP code and behind a future via epoll etc... If it's in the actual node runtime it'll perform poorly because it'll block the thread.
The hybrid approach works great. We use typed scripting languages for business logic and Rust CLI tools for "inner loops", and this balance gives us the best of both worlds.
There is an important caveat here: If you are already comfortable in Rust, then it's a fantastic tool for all sorts of things. But if you're just learning Rust, then there's a one-time cost for getting comfortable. So for a small team with zero prior Rust experience, expect to spend 2-6 weeks getting comfortable. (The learning curve is shorter if you already know about pointers and closures, and longer if it's your first low-level language.)
Your plan sounds entirely reasonable.
Every time I read something like this, I'm reminded that pointers and closures aren't universally understood concepts in professional programmers. And I'm sad.
I would not want to work with a cofounder who loses focuses when they don't get to use the trendy technology. They should be focused on delivering value.
(I do program in Rust in my (non-trivial) hobby projects).
> On the other hand, you might attract talent that wants to use a specific language like Rust, but hasn't had the chance in their current professional environment
Maybe if you're doing something embedded? Otherwise, the learning curve is so steep that you're better off just buying a faster computer to run C#/Java/NodeJS/Python/Whatever.
Also, for me Rust's speed is one of the benefits. I would default to Rust for a lot of different things where speed doesn't matter at all.
When you go hire developers, I want a strong pool to be able to be selective in finding attitude with the right aptitude, and I want them to be productive ASAP, so that means that we might bring in GNU protects that we are extending, tooling from other sources and high level knowledge of the code… this is where maturity comes in, not the language that matters, it’s the package you get on the product you are developing.
I love rust, it will get there, but in a startup environment, it could end up been “not the best fit” all things considered.