The Pragmatic Studio

Integrating Elm at Clarity Voice (Part 2)

April 05, 2017

When we last left Mike Onslow, he had rolled out two small, but successful, pilot Elm projects at Clarity Voice. (Part 1) Now he was eager to try a bigger project. But bigger would mean more visibility and, up to this point, he had flown under the radar.

Starting with small, low-risk projects, Mike had been able to get hands-on experience with Elm and he’d discovered:

“When we built our initial Elm apps, they compiled, and worked right away. And then, when we updated these Elm apps, not only could we do it faster, but again, they just compiled and worked. Elm gave us such a good development and deployment environment!”

But Mike knew that management would still be reluctant to move forward with Elm on larger projects. They were likely to ask:

“Do you want to use Elm just because it’s the latest thing?”

Sometimes the shiny new things are actually better. But no, that wasn’t the reason Mike wanted to use more Elm. “New” and “latest” do not qualify a technology for adoption. Good developers know to be skeptical of hype and rely instead on actual experience.

That’s what Mike did. From his experience with the first two pilot projects, he collected data points:

  • 0 QA issues to date
  • 0 end user issues to date
  • 0 wonky bugs that “just happen”
  • 0 pull-your-hair-out compiling issues
  • 0 rework and refactoring delays

Based on these stats, Clarity Voice’s CTO Scott VanDeWater was quick to become an advocate for using more Elm.

And that’s the brilliance of Mike’s strategy:

  • Sprinkle in a bit of Elm
  • Track and share the results
  • Win a bit more approval
  • Rinse and repeat

You don’t need a hard sell. A series of small successes that over time yield big supporters—from the CTO to the COO—has a way of selling itself. It’s not a flashy approach, but it is pragmatic.

The result? Mike got a green light from the CEO to do more Elm!

Bringing down the risk

With the CEO’s approval now in hand, Mike and Scott were ready to try creating a bigger, customer-facing Elm app.

Pilot App #3 Description: To create an Elm front-end that consolidated various pages and backend components from the current portal system into a single dashboard view.

Project Risk: Higher, but mitigated. The scope and complexity of this project made the risk significantly higher. To minimize risk, Mike brought in an Elm consultant to help him work through the various design and architecture challenges.

Time Spent: 120 hours

Result: A self-service app where Clarity Voice’s customers can set up their communication preferences (ex. call routing) in a single place.

Bugs Reported: 0

Mike told us, “This was a bigger project, so it was bound to have some issues. But we had absolutely no issues on the Elm front-end. All the issues were on the back-end. The API would do something unexpected or the logic would need to be reworked. We fixed all the issues in literally one day, released the app into production, and I’ve never heard of any issues since.”

“Can we afford not to do future projects in Elm?”

This was the question Mike and Scott began asking themselves. They both knew a big rewrite was looming and they wanted to put Elm through all the paces before making a final decision.

Pilot App #4 Description: To create an Elm front-end to a PhantomJS back-end.

Project Risk: Low (This was their fourth pilot app after all.)

Time Spent: 18 hours

Result: A CRUD Elm app that allows customers to go into their portal and in a few quick steps schedule specific reports to be delivered to their email.

Bugs Reported: 0

With another successful Elm project under their belt, the answer has become clear: “We cannot afford not to do future projects in Elm.” Elm had proven itself:

  • ~10,000 lines of Elm code
  • 10 months in production
  • 0 runtime exceptions

The next big things

Elm is now the go-to language at Clarity Voice for all new projects and they have big plans on the horizon.

Biggest Project Yet

This spring, Mike is kicking off their biggest Elm project yet: rebuilding the front-end of their massive internal ERP system (upwards of 300 screens) in Elm. They are currently in the early development phase of this project, and based on their track record, we’re pretty sure their chances of success are high.

Biggest Challenge

At the present, Mike is the only full-time Elm developer at Clarity Voice. While his team has extensive experience with PHP, JS, and Angular, they do not have any functional programming experience. Mike is leading in-house training workshops for his developers, bringing in Elm consultants when it makes sense, and (warning: shameless plug coming up) using our Building Web Apps With Elm course to get his developers comfortable with Elm.

Biggest Thing On The Horizon

Could Elixir address some of Clarity Voice’s backend issues? Is it the right tool for their team, projects, and environment? Only time will tell. Mike’s proven that he doesn’t jump from one shiny new thing to the next for the fun of it. But should you happen to peek at his computer these days, you just might catch a glimpse of his first Elixir pilot app.

A huge thanks to Mike Onslow and Clarity Voice for sharing their story with us. Their account of researching, introducing, and integrating Elm was one we wanted to shout from the rooftops the moment we heard it. We hope their story inspires you to creatively begin integrating Elm into your own company. Start small. Get little successes. Create momentum. Win over management with actual results. And ultimately, build apps in a way that makes you and your team smile.