What Language
What programming language should my company use?
This feels like a silly question in some ways - I’m sure there’s a Paul Graham essay on how what language you choose doesn’t matter.
I don’t buy it though. The right language and framework -
- Makes work fun and enjoyable - functional programming is almost like playing a videogame
- Helps you hire talented engineers - hiring pool for Java is going to be very different than Rust
- Helps you ship faster - I can write complex streaming applications in Akka Streams or ZIO incredibly quickly
So what language do I use? I want something strongly typed, and ideally functional. There’s a couple contenders:
Scala
I would likely use Scala with ZIO. Pros:
- I know it well
- Incredibly productive
- Strong ecosystem and frameworks
Cons:
- Build tooling is insufferably bad
- Slowly dying
- Steep learning curve for others
Typescript
Pros:
- Strong typing
- Unified codebase with frontend
Cons:
- Node/Deno runtimes suck
Rust
Pros:
- Strong typing
- Fast as all hell
- Great tooling
- Strong ecosystem
Cons:
- Not functional
- Possibly too low level - concerned that it won’t be as productive as Scala
- I don’t know it well yet
Roc
Pros:
- Functional
- Strongly Typed
- No GC
Cons:
- Super early language, too early to use in production
- There will be compiler bugs
Summary
Here’s the heuristic we’re going to use:
- Scala with ZIO - Cloud software, helps you iterate quickly.
- Rust - embedded code, anything that needs to be fast.
- Typescript - any web UI obviously (Unsure if I’ll use React or something like Svelte/Bun)
- Roc - Won’t use, but will keep an eye out.
So in terms of my day job - I’ll continue learning Rust and building applications in Rust, as it will pad out those skills and allow me to use that easily on side projects as I get ready to leave.