San Mateo, Calif.-based Coupa is a spend management company, which means it helps companies control their indirect spending and generate savings by delivering such capabilities as e-procurement and expense management.
Coupa's Cloud Spend Optimization software-as-a-service (SaaS) product manages indirect purchases and expenses in real time. Built on Coupa's cloud architecture, it provides executive dashboards, alerts, expense management and real-time benchmarking in a single user interface. This spend optimization software suite focuses on three core spend areas, including procurement, accounts payable and expense management. Coupa is cloud-based and built on Amazon Web Services infrastructure.
Why did Coupa decide to focus on Ruby?
"When we started out we were quite small and all of us were coming from Oracle and we had a Java background," Williams explained. "We knew we wanted to build something modern, and Ruby was just so modern and it made us happy as developers. It meant that we could write much more concise code. It was a much better trade-off as to how much we could write how quickly. And especially in our business, where in enterprise software in general, you're not going to get a huge spike in users suddenly because you hit TechCrunch or something like that. You know how many users you're going to get. Your scaling problems are much more about the data and what you allow them to do.
"So for us it's a lot more valuable to be able to build out a lot more flexibility and configurability quickly than it is to be able to tune one thing to be very, very fast. But the way that Ruby makes us productive has been a wonderful boon for the company."
Ruby also helps Coupa solve one of the key problems of enterprise software in the cloud, which is how to support customization. Williams said in enterprise software, people have an expectation from big companies that they're able customize things to do exactly what they want. However, in the cloud it is difficult to support that gracefully.
"This means that we need to be as flexible as possible and support a lot of configuration and a lot of dynamic aspects to our product, but at the same time set some principles," Williams said. "And Ruby has been a really great way to make those compromises stick."
Now the company plans to move to Ruby 2.0 in 2014 and has a forward branch with some updates already in place.
Williams said Coupa is looking forward to a lot of the changes in 2.0, such as the updated garbage collector, as well as getting the "copy-on-write" semantics back that they had with Ruby Enterprise Edition, which reached end of life in 2012.