Despite the maddening demand and skyrocketing salaries in software development today, I’m not too happy with the profession on the whole. One of the reasons is that when it comes to taking technology decisions, there’s absolutely no clear path.
Here’s an example of what I mean. Which stack would you say is most suitable for building a messaging backend? Erlang, of course! In fact, Erlang is rightly presented as the panacea for all messaging-related backend troubles. You couldn’t possibly go wrong in choosing Erlang (or Elixir), right?
And what if, having reasoned on those lines, you came across this answer on Quora. It’s by a Facebook engineer on why they switched from Erlang to C++. I’ll let that sink in. Yes, Erlang to C++. And the reason isn’t even that they needed better computational performance.
Erlang has reliability issues? The Erlang servers were experiencing cascading crashes? Dude, what in God’s name do you mean?!
The later of the answer does go into the reasoning that perhaps there was “tuning” required. Seriously, guys, why not just admit that the Facebook team sucks at Erlang and doesn’t want to invest in it? I wonder whether the WhatsApp team will be gradually phased out. And if it does, then the acquisition was a business decision rather than technology one.
Either way, it does shake your faith in Erlang when you read something like this. And it’s not even faith that’s the point here. The point is, in the face of conflicting evidence, how do you make these decisions?
I, for one, think that it’s easy to go insane thinking and worrying about these things over and over.