Roger Wong -

InsideOna: Roy's 6 Months in Clojure Paradise


We are introducing InsideOna to share stories and experiences we have building a social enterprise tech startup. Roy started 6 months ago at Ona as a software engineer.

What's your tech background?

I come from a PHP/Java background, being mostly self-taught. I thought I was a hard-core developer, but joining well-seasoned engineers such as Peter, Dickson and Larry has been quite the experience for me. From jumping into new languages like Python & Clojure, starting with test-driven development, learning new DevOps tools and strategies, pair programming, to going through application deployment and tough code reviews — it’s been arduous, but a developer’s paradise for me.

What are you working on?

I’m currently on Ona’s core product, OnaData, which has a mature and well-established codebase. Being on it has improved my understanding of the standards on which web applications should be built. And, I’ve been learning Clojure (Clojure is a functional programming language in the Lisp family).

What's it like working in a Clojure shop?

I’ve been using Clojure for 3 months. Learning Clojure will force you to change the way you think around solving problems, whether you are an OOP enthusiast or an expert with scripting languages such as Python and PHP. Clojure provides a completely different paradigm of building applications. When I started, I definitely asked myself — Why would someone put effort into learning and using it? [laughs].

So, why use Clojure?

One of the things that has stood out is that Clojure is concise. It requires very little code to program complex operations. It is also expressive and elegant. Its syntax is consistent and basic, but strict, forcing you to structure your code elegantly by default. Clojure runs on the JVM and leverages existing Java classes. That’s right — you can import and use Java classes and methods in Clojure code!

Thus far, building Ona’s new front-end with Clojure/ClojureScript has been rewarding. It has simplified basic code requirements such as modularity, simplicity and readability; allowing us to focus more on problem solving and working on the functionality.

Is it easy to pick up Clojure, despite requiring a different paradigm of building applications?

Getting started with Clojure is straightforward. The setup is simple — all you need is a JVM and Leiningen. In a few minutes you can start experimenting with it interactively in the REPL. We are nowhere near tapping the full potential of Clojure, but I’m confident that as we continue developing in it, it will improve productivity as well as the performance and stability of our apps.

Any parting thoughts?

Just about the developers here. Ona has a thriving culture that requires learning, promotes using and contributing to open-source tools, and — I know this will sound schmaltzy — encourages you to be the engineer that you want to be.

Look out for a post from the Ona team with tips on using Clojure.

Roger is a Co-founder and Designer at Ona