I'm doing some #clojure spec-driven development with Oz, and wanted to share some of what I'm feeling now, and have felt in the past.

Basically: IT'S AMAZING
Building around spec has this way of forcing you to think in a high level about the domain, problem and solution space, and tools to help you do so.
The fact that after you've gone through this lovely hammock-driven design process you end up with resources which can be used to:

* destructure/parse
* generate examples
* test generated examples
* document

Priceless
Moreover, the test.check flow of crafting specs and generators to test your code base has this way of quickly driving the implementation towards very thorough solutions. And the more you improve your generators, the more thorough your coverage becomes.
When I talk to people who don't really know a lot about Clojure, I often find it's kind of hard to really get the point across about how amazing it is. There are just too many reasons to enumerate. Like, spec, generators and test-check are like 1/50 of the awesomeness of Clojure!
And that's just it: #clojure is a like a space ship. How do you explain what it's like to pilot a Millennium Falcon to someone who has only every driven a car?
I say this with the greatest humility. I did not design Clojure, nor do I think I could have.
More importantly though, I don't think you have to be some sort of a genius to appreciate Clojure. It takes time to learn, just like any other language, and obviously, there are more knobs.

But once you learn them, the benefits you stand to reap are mighty indeed.
You can follow @metasoarous.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: