# What Is Your Take on "the Zen of Clojure?"

**URL:** https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897
**Category:** Watercooler
**Created:** [May 1, 2022, 8:39am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897 "2022-05-01T08:39:31Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![Leif](https://clojureverse.org/user_avatar/clojureverse.org/leif/32/5305_2.png) [@Leif](https://clojureverse.org/u/Leif)
#### Post date: [May 1, 2022, 8:39am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/1 "2022-05-01T08:39:31Z")

</div>

[PEP 20 (aka “The Zen of Python”)](https://peps.python.org/pep-0020/#the-zen-of-python) is famous for establishing an ethos for the Python community.

This line, in particular, is often cited as a strength:

> “There should be one—and preferably only one—obvious way to do it.”

Inspired by the Python example, the Ruby community has embraced the opposite maxim:

> “There is more than one way to do it.”

Suppose you were tasked with wiring “The Zen of Clojure,” inspired by the Python example.

Abstract:

> “Clojurian [your name] succinctly channels the BDFL’s guiding principles for Clojure’s design into [N] aphorisms.”

What would your version sound like?

---

<div class="post-metadata">

### Author: ![jan](https://clojureverse.org/user_avatar/clojureverse.org/jan/32/2714_2.png) [@jan](https://clojureverse.org/u/jan)
#### Post date: [May 1, 2022, 9:52am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/2 "2022-05-01T09:52:25Z")

</div>

What I feel I value the most about Clojure is its welcoming community. It’s taken years to build and the [etiquette](https://clojure.org/community/etiquette) has been one of the cornerstones. That document is what I’d begin with.

---

<div class="post-metadata">

### Author: ![didibus](https://clojureverse.org/user_avatar/clojureverse.org/didibus/32/951_2.png) [@didibus](https://clojureverse.org/u/didibus)
#### Post date: [May 2, 2022, 2:31am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/3 "2022-05-02T02:31:57Z")

</div>

Wouldn’t that just be the Rationale from here: [Clojure - Rationale](https://clojure.org/about/rationale)

---

<div class="post-metadata">

### Author: ![mvarela](https://clojureverse.org/user_avatar/clojureverse.org/mvarela/32/1478_2.png) [@mvarela](https://clojureverse.org/u/mvarela)
#### Post date: [May 2, 2022, 5:36am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/4 "2022-05-02T05:36:21Z")

</div>

> [@Leif](#):
>
> Inspired by the Python example, the Ruby community has embraced the opposite maxim:
> 
> > “There is more than one way to do it.”

Maybe I’m just dating myself here, but that’s Perl’s motto right there… Ruby did pick it up (and it’s better for it, I think…I’ve always found Python slightly annoying in comparison).

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [May 2, 2022, 5:52am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/5 "2022-05-02T05:52:52Z")

</div>

By contrast, this is one of the reasons I much prefer Python over Ruby in principle.

In reality, the 2.7/3.x schism prevented me from adopting Python, which I’m still a bit sad about.

(I am not sad about the many reasons that have prevented me from adopting Ruby)

Some people say Clojure leans toward Ruby rather than Python in that respect but I’m not so sure: there _is_ idiomatic Clojure and it’s not just a plethora of alternatives, most of the time.

As for the “Zen of Clojure”, I totally agree with @jan and that is something that has repeatedly been voiced by both Rich and Stu over the years.

---

<div class="post-metadata">

### Author: ![Leif](https://clojureverse.org/user_avatar/clojureverse.org/leif/32/5305_2.png) [@Leif](https://clojureverse.org/u/Leif)
#### Post date: [May 2, 2022, 7:20am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/6 "2022-05-02T07:20:04Z")

</div>

> [@seancorfield](#):
>
> As for the “Zen of Clojure”, I totally agree with @jan and that is something that has repeatedly been voiced by both Rich and Stu over the years.

I agree this is available in various talks on YouTube, blog posts, documentation, and books. But I haven’t seen any attempt to summarize what Rich and Stu have said succinctly in one place. Some passages in the books “The Joy of Clojure” and “Elements of Clojure” come pretty close.

[This page on the official website](https://clojure.org/about/rationale) is the closest thing I’ve found.

---

<div class="post-metadata">

### Author: ![Leif](https://clojureverse.org/user_avatar/clojureverse.org/leif/32/5305_2.png) [@Leif](https://clojureverse.org/u/Leif)
#### Post date: [May 2, 2022, 7:22am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/7 "2022-05-02T07:22:53Z")

</div>

Thanks, @jan! I hadn’t seen that article on etiquette. It does indeed lay down some clear values. And I second your impression of a welcoming community.

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [May 2, 2022, 7:32am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/8 "2022-05-02T07:32:02Z")

</div>

I assume you replied to my post before reading @jan 's post? 🙂 Since you agreed with the etiquette page rather than the rationale page?

---

<div class="post-metadata">

### Author: ![plexus](https://clojureverse.org/user_avatar/clojureverse.org/plexus/32/6_2.png) [@plexus](https://clojureverse.org/u/plexus)
#### Post date: [May 2, 2022, 2:08pm UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/9 "2022-05-02T14:08:50Z")

</div>

For me the heart of doing Clojure is not making things more complicated than they need to be. It’s in the language design (hey, maybe you don’t need all those class hierarchies and adapters and whatnot, it’s just data), but it’s also deeply part of the culture. I have not found another community that allows itself to just do the simple thing, instead of fetishizing over their amazing architectures and monstrosities of tooling and whatnot.

---

<div class="post-metadata">

### Author: ![mvarela](https://clojureverse.org/user_avatar/clojureverse.org/mvarela/32/1478_2.png) [@mvarela](https://clojureverse.org/u/mvarela)
#### Post date: [May 3, 2022, 6:21am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/10 "2022-05-03T06:21:37Z")

</div>

To each their own, I suppose. I have not used Python a lot, but every time I do, I get this feeling of coding with a straightjacket on (for whatever “pythonic” means), not to mention the dumpster fire that is dealing with library installs and deploying stuff. Ruby I used for many, many small things, and it’s always been nicer to use for me, in that context.  
I still much prefer Clojure to either, tbh…

But there’s definitely many ways to do things in Clojure, sometimes all idiomatic, and sometimes part of a refining process… For example, I often start with some data threaded through a bunch of `fn`s, and end up with transducers. Or while working out some API, I may pass around a map as a “bag of arguments”, and refine the fn parameters, etc.

---

<div class="post-metadata">

### Author: ![Thumbnail](https://clojureverse.org/user_avatar/clojureverse.org/thumbnail/32/4675_2.png) [@Thumbnail](https://clojureverse.org/u/Thumbnail)
#### Post date: [May 8, 2022, 9:04pm UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/11 "2022-05-08T21:04:25Z")

</div>

What I feel about Clojure is that the several ways of solving a problem seem to relate to one another like equivalent algebraic expressions: some may be more elegant than others but all are valid. I’ve never got this feeling with any other programming language. So it’s not just one way versus many.

---

<div class="post-metadata">

### Author: ![Anthony\_Leonard](https://clojureverse.org/user_avatar/clojureverse.org/anthony_leonard/32/2054_2.png) [@Anthony\_Leonard](https://clojureverse.org/u/Anthony_Leonard)
#### Post date: [May 10, 2022, 7:39am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/12 "2022-05-10T07:39:14Z")

</div>

To me the python quote can be adjusted to _"There should be one—and preferably only one—obvious way to **say** it.”_ which is never true I think? It denies both the multi faceted nature of problems and the subjectivity of writers. I often hear experienced developers picked Clojure because it “got out of the way and let me focus on the problem.” I also think Clojure tries to explicitly tackle software growth in a way others do not. So for me a similar (hopefully not entirely meaningless) phrase for Clojure might be _“There should a way to say it, and grow it, as I see it.”_

---

<div class="post-metadata">

### Author: ![HolyJak](https://clojureverse.org/user_avatar/clojureverse.org/holyjak/32/1744_2.png) [@HolyJak](https://clojureverse.org/u/HolyJak)
#### Post date: [May 14, 2022, 9:02am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/13 "2022-05-14T09:02:13Z")

</div>

A big part of the Clojure ethos to me is simplicity, whose dimensions I tried to describe in [Holy on Dev: What is simplicity in programming and why does it matter?](https://blog.jakubholy.net/2021/simplicity/)

---

<div class="post-metadata">

### Author: ![Leif](https://clojureverse.org/user_avatar/clojureverse.org/leif/32/5305_2.png) [@Leif](https://clojureverse.org/u/Leif)
#### Post date: [May 16, 2022, 7:51am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/14 "2022-05-16T07:51:54Z")

</div>

Yeah, it seems I got the ordering messed up 😅

The rationale page is also awesome!

---

<div class="post-metadata">

### Author: ![saikyun](https://clojureverse.org/user_avatar/clojureverse.org/saikyun/32/1958_2.png) [@saikyun](https://clojureverse.org/u/saikyun)
#### Post date: [May 19, 2022, 6:25am UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/15 "2022-05-19T06:25:06Z")

</div>

I agree about the growing. Not breaking APIs is something Clojure and Rich through his talks taught me.

“Do not thrash around in public”

I guess that’s more of a commandment.

“There is no change, only growth”

---

<div class="post-metadata">

### Author: ![system](https://clojureverse.org/uploads/default/original/2X/5/51079bf9e4b7d9466242c06cf1e43b9f8bd6da14.png) [@system](https://clojureverse.org/u/system)
#### Post date: [November 17, 2022, 6:25pm UTC](https://clojureverse.org/t/what-is-your-take-on-the-zen-of-clojure/8897/16 "2022-11-17T18:25:31Z")

</div>

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.
