Elixir at Ramp
engineering.ramp.com
Elixir at Ramp
1–10 of 44 posts
Re: Elixir at Ramp
#2Having said that, I would not recommend Elixir or Scala or anything similar for startups. The 3 main reasons:
1) It's a hiring problem.
There aren't enough qualified people who can fill these roles. Expect a lot of on-the-job training that's more challenging than you'd think since these languages/frameworks are different paradigms. Famously, the complaint I heard in Scala circles was "There are too many ways to shoot yourself in the foot." I worked at a well-known everyday consumer tech company where the payments platform went down for the better part of a day as people scrambled to figure out what went wrong. Noone had read the de-facto Scala bible which warned that catching `Throwable` could break your code.[1]
2) You really, really don't need to get things perfectly right from the get-go.
> My hot take about most dynamic languages is that they are a poor fit for startups who have intentions of being long-term businesses: you’ve created an environment that’s optimized for your founding engineers to build something quickly in the first 7 months, but the price is a set of recurring obstacles which your engineers will pay down over the next 7 years.
With rare exceptions, most companies throw away or rewrite their initial infra once they hit scaling issues. Having these scaling issues means you've likely hit product-market fit, secured more funding, and hired a badass team to solve said scaling issues.
3) The ecosystem is smaller.
Because the language/framework is deeper, it requires more investment to learn. In turn, fewer production-level libraries get built on top of it. That's when you end up needing to build a lot of things yourself. At which point - you've slowed down _even more_ vs. DynamicLang where you can run `dynamic-package add audit-trail` or something and get the 80/20 solution in 5 minutes.
[1] http://www.tzavellas.com/techblog/2010/09/20/catching-throwa...
Re: Elixir at Ramp
#3To preface, I share a lot of the same sentiments as the author. My Elixir was Scala - learned it inside and out, then picked up Akka which taught me a lot of neat Erlang-derived principles. My favorite quote is "Make it work, make it right, make it fast," which is very close to the Armstrong comic. Having said that, I would not recommend Elixir or Scala or anything similar for startups. The 3 main reasons: 1) It's a…
It's not entirely clear whether your experience is only with Scala or whether you've used both. If it's the former then I'd suggest that others try Elixir for themselves rather than take a recommendation based on experience with another language.
Re: Elixir at Ramp
#4To preface, I share a lot of the same sentiments as the author. My Elixir was Scala - learned it inside and out, then picked up Akka which taught me a lot of neat Erlang-derived principles. My favorite quote is "Make it work, make it right, make it fast," which is very close to the Armstrong comic. Having said that, I would not recommend Elixir or Scala or anything similar for startups. The 3 main reasons: 1) It's a…
"My Elixir was Scala" "I would not recommend Elixir or Scala" It's not entirely clear whether your experience is only with Scala or whether you've used both. If it's the former then I'd suggest that others try Elixir for themselves rather than take a recommendation based on experience with another language.
The points I raised earlier in the context of choosing a language for building a company apply to all of those. I don't see why Elixir is exempt - do you mind explaining?
Re: Elixir at Ramp
#5To preface, I share a lot of the same sentiments as the author. My Elixir was Scala - learned it inside and out, then picked up Akka which taught me a lot of neat Erlang-derived principles. My favorite quote is "Make it work, make it right, make it fast," which is very close to the Armstrong comic. Having said that, I would not recommend Elixir or Scala or anything similar for startups. The 3 main reasons: 1) It's a…
That said, I agree with you if you are planning to be a unicorn and scale to 1000+ engineers then you definitely should go with the well-worn path just because it's the only way to satisfy your insatiable hiring funnel.
On the other hand, if your aspirations are to focus on a simple but great product and keep the team tight rather than chase growth at all costs, Elixir/Erlang could be a super power to scale a cohesive product to massive scale with a very small team (eg. WhatsApp).
Re: Elixir at Ramp
#6There are many reasons why I feel Erlang or Go or Rust shines brighter in many situations but my issue is that I not only need to get up to speed, build scrappy prototypes fast, but also hopefully, hire other engineers including juniors.
There are many ways one can build systems with multiple languages and take the benefit that each has to offer in specific cases. Python itself calls C in multiple libraries to speed up code.
Some of the safety related paradigms are really practical but to adopt a new language means a lot of risk for the startup too. Not every tech leader is so capable as to juggle both the delivery stress of features and building idiomatic software in a new language, I know I would struggle.
So I keep learning and I will wait for when specific cases demand me to use another language and use something like gRPC in between my existing codebase and the one in a new language. I do not (should not) have to move away from what already works well to adopt new tools or paradigms.
Re: Elixir at Ramp
#7Earlier quoted context omitted.
"My Elixir was Scala" "I would not recommend Elixir or Scala" It's not entirely clear whether your experience is only with Scala or whether you've used both. If it's the former then I'd suggest that others try Elixir for themselves rather than take a recommendation based on experience with another language.
By all means, I encourage everyone to learn Elixir, Scala, Haskell, or other similar, functional, immutable languages for personal growth. The points I raised earlier in the context of choosing a language for building a company apply to all of those. I don't see why Elixir is exempt - do you mind explaining?
It runs in a different VM, it's a different paradigm (or mash-up of paradigms which, in turn, is the source of one of your contention points when learning/ramping hires), it's a statically typed language so requires usually more upfront thinking and a better understanding of domain modelling (getting it right from the start), it's notorious for being complex (don't know if it's warranted or not, but it's a normal complaint even from people who seem to like the language).
Elixir/Erlang does need a bit of honest study to hone (this is the same with everything though, JS for instance is quite complex when you take a step back and look at what you need to understand to write decent maintainable code), but the payoff is much higher because it doesn't change with every tide. Code you wrote 4 years ago, if idiomatic, will be idiomatic today, and I'll go off on a limb here and say it will be in 4 years time too.
(btw didn't downvote you)
Re: Elixir at Ramp
#8Earlier quoted context omitted.
"My Elixir was Scala" "I would not recommend Elixir or Scala" It's not entirely clear whether your experience is only with Scala or whether you've used both. If it's the former then I'd suggest that others try Elixir for themselves rather than take a recommendation based on experience with another language.
By all means, I encourage everyone to learn Elixir, Scala, Haskell, or other similar, functional, immutable languages for personal growth. The points I raised earlier in the context of choosing a language for building a company apply to all of those. I don't see why Elixir is exempt - do you mind explaining?
Re: Elixir at Ramp
#9Earlier quoted context omitted.
By all means, I encourage everyone to learn Elixir, Scala, Haskell, or other similar, functional, immutable languages for personal growth. The points I raised earlier in the context of choosing a language for building a company apply to all of those. I don't see why Elixir is exempt - do you mind explaining?
I think it's sort of obvious what the parent comment is saying? You gave an example of your experience with a different language, that has really not much bearing on the one being talked about. It runs in a different VM, it's a different paradigm (or mash-up of paradigms which, in turn, is the source of one of your contention points when learning/ramping hires), it's a statically typed language so requires usually mo…
I'm not trying to derail into discussing how Scala is a shade better or worse than Elixir in some aspect - the main point I'm trying to drive home is that they're both in an entirely different class compared to Ruby/Node/Python.
Re: Elixir at Ramp
#10To preface, I share a lot of the same sentiments as the author. My Elixir was Scala - learned it inside and out, then picked up Akka which taught me a lot of neat Erlang-derived principles. My favorite quote is "Make it work, make it right, make it fast," which is very close to the Armstrong comic. Having said that, I would not recommend Elixir or Scala or anything similar for startups. The 3 main reasons: 1) It's a…
What about for not-startups (whatever those are)? I'm attempting to use Elixir for a new component of a kind of startup like product in a 50 year old company. So kinda startupie, kind very not. But more generally, I'm curious what changes with the "for startups" qualifier?