5 ms·
> ”Go and Rust allow distributing a static binary, but at the cost of fewer people at Shopify being inclined to contribute due to the lack of familiarity with t
by AlchemistCamp 4y ago
> ”Go and Rust allow distributing a static binary, but at the cost of fewer people at Shopify being inclined to contribute due to the lack of familiarity with the language.”
If learning a language as simple as Golang is a real barrier for Shopify engineers, then I’d say they need to reevaluate their hiring processes. Especially given that they’re talking about CLI apps as opposed to something like distributed systems.
I’ve hired multiple engineers who had zero experience with Elixir at all and it’s generally just taken a couple of days to get up to speed. I’ve had the same experience on client projects, too. I don’t think Elixir is as difficult to learn as JS or Rust, but Golang might even be simpler given how small the language is.
- tdumitrescu 4y agoI work somewhere with plenty smart engineers, and plenty of in-house golang expertise. I've seen several small internal tools rewritten from Python to Go, and contributions by the wider team totally dropped off. It used to be absolutely trivial for anyone to make changes, and the "deployment" of such scripts was basically "get the code reviewed and merge it." Now there's a whole Bazel song and dance, compilation as part of the dev cycle, producing binaries for distribution, and it's introduced just enough friction that people no longer make the little tweaks that used to be dead simple. Say what you will about loosey-goosey dynamic languages, but they work superbly for things like CLI tools.
- deleted 4y ago[deleted]
- AlchemistCamp 4y agoI haven't used Bazel for CLI apps and may have significantly underestimated how much other complexity they have around their deployment processes. That said, it's also very possible and common to make Node apps a pain to work on and distribute, too.
- Beltalowda 4y agoIMO the big advantage of languages like Go in this space is that you can ship a binary to your users and that will Just Work™. Shipping a Python tool tends to be significantly more complex either for your users who will have to set up Python + dependencies, or for your build (e.g. the Python AWS CLI just ships an entire Python environment, which is a "solution" of sorts I guess, but it's not very easy or simple to do). I don't think Go has to increase more friction in the dev workflow, but it probably does require a little bit (one-time) more effort to get it right.
- Alifatisk 4y agoIs golang really that easy to get started with?
- erik_seaberg 4y agoRuby is a powerful language and its frameworks try to magically solve a lot of boring problems for you. I see “fewer … inclined to contribute” and I think they did or could learn the language but aren’t eager to spend so much more time on handwritten grunt work. (At least that’s my own attitude.)