The language: As mentioned, the majority of our codebase is in Clojure. We’re looking for accomplished Clojure programmers – be it in a professional setting, or open-source projects. If you’re just getting started with Clojure, that is OK too, as long as you also have experience with other languages such as Haskell, Erlang, an ML, or a Scheme/Lisp, or Prolog. Significant Ruby or Python experience (the languages, not just Rails or equivalent) might be OK also.
The bottom line is that we’re looking for smart engineers who have taken the trouble to learn/use these other languages because they’re unsatisfied with the popular ones.
Bottom-up: You should be able to think in a meta manner. You should understand what it means to create a system from the bottom-up… Runa is driven by several domain-specific languages – all the way from analytics through to what an end consumer sees on a merchant website. You need to be able to think in layers and abstractions, and understand that building up complexity by composing simpler pieces is the natural way to grow software.
Distributed systems: Runa is a complex system – with a lot of moving parts. Such a distributed system comes with globs of incidental complexity. We need to minimize this complexity, but also deal with it effectively. You should have experience with such systems, and have battle-scars that will help avoid mistakes and improve the ability to debug the system, increase testability, maintainability, and so on. You should be familiar with architecture patterns of distributed systems.
Big data: We collect a lot of data. A lot. And we need to quickly analyze all that data to extract insights and to create reports on the behavior of visitors vis a vis dozens of parameters. If you have experience wrangling large volumes of data, we want you!
Performance: As you can imagine, the Runa SaaS is extremely time-sensitive, since it needs to respond to end-users in real-time, as they browse merchant sites. You should know how to profile and optimize large systems. Experience with various tools is a plus.
Scaling: Again, Runa is a SaaS that services online merchants. Each time we add a client, we have to handle all their traffic. Each page on a merchant website may call our servers multiple times. We need to be able to scale the system up, and provide predictable and reliable throughput under loaded conditions. We should be able to determine how much capacity is needed at various points in the system. We need to be fault-tolerant and reliable (and never negatively impact a client website). Experience with scaling large systems is a plus, as is experience with various tools.
General engineering: We’re a small engineering team and we want to keep it as small as we can. Everyone needs to play multiple roles. You should be ready to roll up your sleeves and jump in to handle whatever comes up. It isn’t all about Clojure – it’s about getting things done.
Agile/Lean: We use Mingle to drive our development process. You should be familiar with various agile/lean methodologies. We are fanatics about automated testing so you should have extensive experience with various testing tools/frameworks/philosophies and understand designing for testability.
Experience/education: You should have at least 6 years of software development experience, most of them spent dealing with issues in the fields above. A degree in electrical engineering or computer science (or equivalent) is required.
FPS: Experience with Quake, Counter Strike, or any such game is a real bonus.
Want to prove that traditional models of software development are lacking? That more can be done with less? Join the elite engineering team at Runa!