Giving a tech talk at my Microsoft tech stack company, how do I persuade them to give Elixir a try

Hi all,

I’m going to be giving a little 20 minute tech talk at my company which uses .NET C# across all of our 100ish size IT team. I’m a big time Elixir/Erlang/OTP fan and I want to spread the good word to my team.

My question is, as a .NET tech stack company, what should my biggest talking points be? I don’t want to do just a 20 minute lecture about what Elixir, functional programming, concurrency is, I want to try and structure this talk in such a way that it plants the seeds of perhaps doing some new projects in Elixir, starting a cool internal Elixir dev team! Because finding Elixir work is tough so I want to try and make the Elixir work for myself.

Fortunately the place I’m has a quite mature, modern tech stack. We only have one legacy monolith. So there’s loads of similarities between our services that we’d write in .NET/Elixir. They’re all microservices, either APIs or Workers or both, they all communicate with each other, most often using Rabbit, all deployed using Kubernetes/Docker, all that cool stuff.

The problem is we’re a company based in one country, perhaps a million customers, and our business model (insurance) doesn’t provide scenarios that play to Elixir’s strengths: massive concurrency, fault tolerance, extremely high availability, etc. So I’m probably fighting an uphill battle here, why would the company create an application in a programming language that none of the other team know.

But I do believe that even if you’re not expecting 100 requests a second, Elixir is still worth working with.

So my plan is to give them a whistlestop tour of Functional programming, talk about processes, supervision trees, fault tolerance, basically a mini Joe Armstrong talk. Then I’ll show some LiveBook code samples showing cool pattern matching, metaprogramming, spawning 1 million processes live, etc.

Then some magic words to say to suddenly free me from Microsoft ecosystem and finally give me commercial Elixir experience! Or perhaps a demonstration of something, some LiveView app?

Cheers all!

4 Likes

I’m pretty sure we have a “Which companies/areas do you think should use Elixir” thread and I’m fairly sure I’ve actually mentioned insurance/holiday companies where they need to fetch prices from lots of different providers to compare and present to their users… because so many of them are excruciatingly slow (or at least they were at the time of that thread).

So if you operate an insurance comparison type site (or any site where you need to do a lot of things at the same time and where you don’t want users hang around for too long) I’d say Elixir is an excellent fit.

If that’s not the type of service you operate then you’d probably need to identify key areas where Elixir would benefit your team or the service you provide (it might be worth sharing more info about what you do in that case)…

2 Likes

Hey thanks for the response!

We’re a pet insurance company, so we work with customers buying our stuff, as well as working with the vet practices to allow them to do whatever they need with insurance. I’ve had a look at our stats and it seems our most concurrent service hands a couple dozen requests per second on average daily.

So I think I need to push more in the direction of the high availability, fault tolerant aspects of the BEAM perhaps, whilst showing how easy concurrency is with Elixir. Like for example we just rewrote our Payments service in .NET, that seems to me to be a pretty critical system that should never go down.

I’m going to be asking some colleagues about areas where they see the biggest lag times, see if I can model that in some processes and improve them.

1 Like

I think you have a couple of choices. Either pitch it as a personal interest, some fun thing you’d like to share, see if you can provoke some curiosity from your co-workers, plant the seed, create your allies etc.

Or, go after a known and widely recognised problem within your organisation that Elixir is uniquely capable of solving, or at least can solve significantly better than the existing tech stack in at least a couple of dimensions.

Fwiw, I’d take the first option and play the long game, at least publicly. Maybe skunkworks something on the side if you can find someone else who’s interested enough.

(As an aside, I once gave a lunchtime ‘brown-bag’ on Erlang - Elixir didn’t exist then - within Microsoft to a bunch of battle hardened MSFT veterans, fun times)

Edit: the reality is all medium to large companies have software systems that are critical to them and practically all of them are not written in Elixir. They are written in boring but effective ecosystems likes Java or .Net. Moving this needle is very hard as a single developer.

7 Likes

Sounds like you found the perfect angle :icon_biggrin:

Ah nice! I am planning to launch a new Phoenix powered pet site at some point - maybe your company might be interested in getting involved or partnering with us :icon_cool:

I reckon that would make a good blog post :lol:

1 Like

I’ve mentioned this before (I think) and will mention it again (sorry if repeated :slight_smile:), I think this is a great start:

  • a small Phoenix app with one route, a phx.new one
  • a GenServer that calls itself and publishes an event → say a count that gets increased (the Periodically example here)
  • one liveview (heex and logic in the same file) that listens and renders the output of the PubSub event

That’d be my intro.

3 Likes

Personally, I think this is a sub-optimal use of 20 minutes.

  • Showing more than a snippet of code in presentations is nearly always a mistake
  • Showing more than a snippet of code in presentations where the language is unknown to the audience is definitely a mistake
  • If you’re going to demo something you built as an exemplar of what the proposed ecosystem can do, avoid demos that are trivially reproducible in the existing ecosystem.

Fwiw, I would focus on interesting points of difference, e.g. the concurrency model, the isolation model etc and how that leads to simpler more uniform implementations that are more likely to exhibit the fault tolerant and scalable properties you require.

2 Likes

I’d take a look at The Soul of Erlang and Elixir and figure out which parts would make the biggest impact based on the shorter timeframe.

6 Likes

Totally agree with your edit! I don’t ever expect us to change our tech stack, I wouldn’t even agree with doing that. But I do think we have different tools for different jobs, and we don’t need to .NET absolutely everything.

Glad to see that was already on my Liked playlist but I can’t remember it! I’ll give it another listen, thank you :grin:

Too tired and busy to do my usual (from years ago) advocacy but one central point that really should be driven home one way or another is that Elixir is perfect for long-running servers where reliability is the absolute primary priority.

4 Likes

Cheers all! I’ve just found deep in our backlog that we have an Outbox message pattern project with a bug: when the program crashes mid-transaction, the batch of messages being processed are stuck in a ‘processing’ state in the database, and so never get retried.

Seems like either a simple fix of checking for ‘processing’ messages in the DB on start up and moving them back to an unprocessed state, or a little Elixir program to have each message as a process so we get some nice isolation and concurrency :wink:

Or use the Elixir library Oban and have the problem solved after one hour of coding. :grinning_face_with_smiling_eyes:

2 Likes

I’d be talking for 20 minutes about being pragmatic and boring.

I wouldnt tout Elixir for
fault tolerance, thats just a nice bonus, but any modern system is able to crash and self heal these days. It just happens another place in the stack than at the app level.

Ecosystem has all the building blocks you need to solve problems with as little code as possible. Anything else than Elixir just feels sooooo verbose once you get some years in the ecosystem behind you.

Add immutability to remove a whole class of footguns and the fact that the beam runtime is very well suited for saturating cores in a vertical scaling scenario and voila, you should have some compelling stories to tell.

But dont just slobber over all the nerdy fancy stuff mentioned so far in the topic. Elixir is fantastic for making PRODUCT, that is what makes a good sales pitch.

3 Likes

My repeated experience is that people can’t be persuaded to switch tech stacks, no matter how good the argument. It’s like a religion. People aren’t going to budge from what they know.

The best ways are to start something new, or join an existing elixir project. Joining an existing project might not be possible depending on where you live/work. You could start something new in the same company if you have enough influence to start an autonomous project, but you’ll be making people worry about the bus factor in that case.

5 Likes

Precisely this.

Also this.

4 Likes

Extremely true. Love it how you summarized it.

Less code, less bugs, less liability.

1 Like

Maybe reconsider your reason for the presentation and sway from persuasion to outright curiosity. Then let the chips fall where they may. Such an approach will take the pressure off you to perform and redirect it to bringing joy and excitement to the talk. These two emotions are infectious and alone can serve as the catalyst to get folks to lean into what you are sharing. Having work in .net myself for years before leaving for mobile and functional, I can say that the mindset in enterprisey shops can be very entrenched so don’t take the fight head on. Sell to their curiosity. “You know, in other ecosystems people solve problems in this way. This is downright crazy isn’t it?”

3 Likes

There are many psychologically crushed people in enterprise settings – I’ve met dozens. Trying to make them curious is a bit of lost cause, I feel.

But if you manage to show them and easier and quicker way to solve their problems, accentuating on how something that takes weeks with Java can be done in 1-2 days with Elixir… yeah, I’ve seen some of their eyes sparkle. :slight_smile:

Which does not invalidate your point of course. I am more clarifying how we can sparkle curiosity in them. As @olivermt said, betting on the nerdy stuff is a very likely losing gamble.

2 Likes

Well went in doubt I have to fallback to the movie Shawshank Redemption.

“…hope is a good thing, maybe the best of things, and no good thing ever dies,"

1 Like