Time for another interview with one of our speakers: Developer and author Maik Schmidt. For more, see the Interviews section. If you are interested in speaking yourself, please check out the speaker applications page for more details.
MC: First thing: Thanks very much for taking the time to chat!
MS: You're very welcome!
MC: Can you tell us a bit about yourself, and your experiences with ruby?
MS: I am 36 years old and I live in the west of Germany.
I've worked as a software developer for more than 16 years now and I've mainly worked for big companies, that is I have created lots of big enterprise applications using Java and C++.
In 2000 I have bought the first edition of the Pickaxe and I've liked Ruby from the beginning. Since then I've started to sneak it into as many projects as I could and in the last years I have written more code for the Ruby platform than for the Java platform, for example.
I have used Ruby not only for creating web applications with Rails but also for standalone enterprise applications.
MC: You've also written two books on Ruby and Rails in the Enterprise, right? And I think you have a third one on the way?
MS: That's right. I am the author of "Enterprise Integration with Ruby" and "Enterprise Recipes with Ruby and Rails" (published by The Pragmatic Bookshelf).
Both titles contain the essence of all the things I have learned during the last years and I've written them for people like me, that is for software developers that want use Ruby (and Rails) in typical enterprise environments. For example, they explain how to process large XML documents effectively or how to participate in asynchronous messaging systems.
A third one is on the way and I cannot say too much about it (contract signing is still in process), but it will be no Ruby book. After writing two Ruby books I wanted to do something completely different. Not because I do not like Ruby any longer (quite the opposite), but because I wanted to learn something new.
MC: Intriguing... OK, so let's talk about Rails and the Enterprise: When you talk about developing in the Enterprise, what do you mean? What would you say defines an enterprise environment?
MS: The best definition I have is from Martin Fowler: "Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data."
So, first of all, enterprise applications usually have to process large amounts of data, which can be a problem by itself. But for me the biggest challenges have always been on the organisational side, that is clarifying requirements with many different departments and integrating with countless existing systems, servers, and databases.
Ruby is not a perfect candidate when it comes to processing large amounts of data, because the current platforms are all relatively slow compared to other platforms. But Ruby really shines when you have to glue together existing applications or when you have to create small domain specific languages to describe fairly complicated business processes in the most elegant way.
And when it comes to developing web applications that use your existing back-end infrastructure Rails is a powerful ally.
MC: And presumably dealing with a heterogeneous system is a factor too - lots of different file systems, databases, interfaces, environments, etc.?
MS: Absolutely! I've often found surprisingly simple solutions to seemingly complicated integration problems, because Ruby really is sufficiently platform-independent. There are still some minor quirks on the Windows platform, but when you live in the Unix world everything is really fine.
Hiding most legacy stuff - no matter how heterogeneous your environment is - can often be solved by simply creating new services (preferably REST services, of course). As the saying goes: "There's no problem that cannot be solved by introducing another layer of indirection"
The same is true for databases. It's really surprising how many problems can be solved with a solution as simple as ActiveRecord (its API is simple, that is).
MC: So, I don't know if you saw the Core Team Q&A at RailsConf last week... One of the questions was "Will Rails 3.0 be Enterprise-ready?" Koz said "No," I think it was Jeremy Kemper that said "It already is," and Yehuda said it was a contentious issue... Having already had a lot of experience of using Rails within an enterprise environment, how would you answer the question?
MS: It heavily depends on the task you have to solve. In most regards Ruby is Enterprise-ready and I have proved it several times by deploying applications in really big enterprise environments. Currently, I am working on a product for Vodafone (http://widget.vodafone.com) that is already available in several countries.
But there are still many areas that need improvement before Ruby and Rails are enterprise-ready in general. For example, Ruby needs a better runtime environment, but I am fairly sure that JRuby will fill this gap shortly. Rails needs much better support for internationalisation (this has been the biggest problem in my current project) and a slightly better release management.
MC: Yes, I guess JRuby goes a long way to giving Rails projects an entry point into the usually tightly locked-down and subject-to-slow-approval-processes application environments within the enterprise... Has the recent rails i18n work helped?
MS: We started developing the application when i18n has not been a part of Rails (before the 2.0 release), so we have used good old gettext. We could integrate gettext and its tools into our whole development process without any problems. Tool support is a very critical issue when you develop large applications in an international environments. Right now we support English (UK, Ireland, South Africa), German, Dutch, Greek, Italian, Spanish, and Portuguese locales and all translations are provided by employees of local Vodafone companies. Of course, none of the translators is a software developer and so they need intuitive tools for writing the translations. gettext is absolutely mature and we never had any problems with it.
Of course, rails-gettext was not perfect (for example, it's not possible to translate ActiveRecord's validation messages as flexible as we need to), but we could solve nearly all our problems with monkey patching. When we started to migrate our application to a more recent Rails version, of course, we had a look at its new i18n features. Unfortunately, they did not solve the problems we already had with gettext and it even made some things worse, especially on the organisational side of things. As I said before: tool support is critical when you have to support multiple locales.
MC: That's food for thought... and gosh, I'm taking up all your evening!
Thanks very much for the chat I look forward to continuing it at the conference!
MS: Thank you! I am looking forward to seeing you at Rails-Underground!



