Clojure

CollBox

2017年4月6日

我们与 Cameron Desautels 讨论了他在 CollBox 中使用 Clojure 和 ClojureScript 的情况。

CollBox

您使用 Clojure 和 ClojureScript 多久了?

我使用 Clojure 大约五年了,使用 ClojureScript 一年了。我在编程生涯的早期就接触到了 Lisp(可能是通过 Emacs),因此大约 15 年来一直是 Lisp 的粉丝,所以 Clojure 感觉像是回家一样。

您正在构建什么产品或服务?

我们正在使用 Clojure 和 ClojureScript 构建下一代债务催收服务。我们与云会计软件集成,方便地摄取和验证债务,在幕后管理一个信誉良好的债务催收员网络,并智能地将债务与催收员匹配,以优化最佳费率和催收几率。同时,我们正在努力提高一个历史上以不负责任和不透明著称的行业的责任感和透明度。

您的团队规模有多大?

就我一个人!我们是一家小型初创公司,目前我负责整个工程团队。但我认为,这证明了 Clojure 的强大,即单个开发者可以构建和维护一个生产环境的 Web 应用程序。事实上,我们公司的根源可以追溯到 2015 年 QuickBooks Connect 黑客马拉松,我们在那里击败了由五名专业工程师组成的团队(他们每天都在一起工作),而我们只使用 Clojure 和一名工程师就获得了大奖。一个好的工具可以起到倍增器的作用。

使用 Clojure 和 ClojureScript 的哪些方面为您带来了最大的价值?

对我来说,使用 Clojure 最有价值的方面是,该语言致力于重用少量可读的、不可变的数据结构。我使用基本数据结构配置应用程序;我使用基本数据结构将应用程序的依赖项连接在一起;我用它们编写数据库查询,用它们记录指标,当我在凌晨 2 点不得不诊断 Web 异常时,我很幸运地发现该请求以我熟悉的、可以打印、记录、检查或使用我多年来一直使用的相同工具进行更新的数据结构的形式出现。

我再怎么强调这一点都不为过,与引用一个不透明的 Foo 对象并想知道“这个东西能做什么?里面有什么?可以序列化吗?如何创建一个?它会不会在我不知情的情况下发生变化?”相比,这种方法要好得多。

您的技术栈是什么?

我们的前端全部使用 ClojureScript 和 re-frame。后端是运行在 AWS 上的 Clojure,并由 Datomic(在 DynamoDB 上)支持。我们的 Web 框架是定制构建的,但大量使用了 alephbidicomponenttransit

如果您想分享您的 Clojure 故事,请填写此表格