Raphael Costa

Technical Lead at Eficiência Fiscal

Rewriting a legacy application in Elixir: the good, the bad and the ugly

My company had a legacy application to deal with (around 100,000 LOC), and it was starting to take it’s toll on the team. Lack of consistency through the codebase, code that is hard to understand, constant rewrites because new code seemed to become legacy in a matter of weeks. It was like the application was fighting us.

Then, at about 2.5 years ago, an affair with Elixir to solve an unusual problem we had quickly became a full blown rewrite, and we couldn’t be happier with our code quality today (28,000 LOC in Elixir and counting), even though the migration isn’t complete.

But as much as the language and ecosystem helped us out, it wasn’t so simple. The fact that the team performing the migration had only one person (myself) at times didn’t help either.

In this talk, I want to highlight the things that did and didn’t work out in the migration, how the language’s ecosystem helped us out and what we have been doing today to avoid writing legacy (or soon-to-be legacy) code.



I am based in Ji-Paraná, a small city in Brazil. And with other four associates, I own a software company called Eficiência Fiscal (http://eficienciafiscal.com.br), where I work as a Technical Lead.

I am an Elixir lover since day one (the fact that I love Ruby’s syntax and was in love with the Erlang’s concurrency model are to blame, I guess), and I contributed to some Elixir OS projects, live streamed a introduction to the language in portuguese some time ago (https://www.youtube.com/watch?v=7eYA8c8yABU) and have been helping other people at the brazilian Telegram group and #brazil channel at Slack.

I also gave some talks, workshops and lectures on topics like Functional Programming, Ruby and Elixir.

Github: costaraphael

Twitter: @raphael_vcosta