Startups are about cost, time to market, and a high level of efficiency to deliver on a promises ( product ) to sell or get to market. A language selection should consider two things, talent pool and maturity of the tools.

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.

I'm doing some work on a friend's startup, and we have a pretty stark divide between our hot path gateway service and our lower traffic services.

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.

FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal. Something like NodeJS (or Async .Net) will have great performance; even with garbage collection. (IO-heavy is the specific use case that NodeJS was designed to handle.)

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.

> FYI: If you're primarily IO-heavy, the GC pauses aren't going to be a big deal. Something like NodeJS (or Async .Net) will have great performance; even with garbage collection. (IO-heavy is the specific use case that NodeJS was designed to handle.)

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.

Their point is that GC is fine. Your're focusing on one of the suggestions: nodejs.

But .NET or Go are very fast for typical I/O bound workloads.

Yes, that's why I quoted one specific part and responded to that specific part.
No you included the GC part too:

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

Yeah fair, in my mind I was just responding to the bit about node, but whatever.

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

Rust, Python and Go. Props to you for being sensible with technology choice.

https://github.com/grapl-security/grapl

https://github.com/grapl-security/pulumi-hcp

Whish you guys success.